2016-04-26 10 views
0

SelectPDFのHtmlToPdf()を使用してhtmlページをpdfに変換しています。 htmlコンテンツは大きいので、半分に分解して2つのPDFを作成しています。フッタ内の総ページ数を編集SelectPDF

フッターのtotal_pagesを編集して、現在のドキュメントだけでなく、実際のページ数を表示するのが苦労しています。両方のPDFのコンテキストで実際のページ番号を表示するには、page_numberを使用します。

適切な値を計算するには{page_number}と{total_pages}をどのように評価できますか?私が見つけたすべての例は、HtmlToPdf()ではなくPdfDocument()を使用しています。

Dim converter As New HtmlToPdf() 
Dim text As New PdfTextSection(0, 10, "Page: {page_number} of {total_pages} ") 
text.HorizontalAlign = PdfTextHorizontalAlign.Center 
converter.Footer.Add(text) 

私はC#とVB SelectPDFは、両方の言語のためであることから、いずれか一方が、私のために働くだろうから、関連するサンプルの両方をタグ付けしています。ありがとうございます

答えて

0

itextsharpというオープンソースライブラリがあり、合計ページ数を取得するのに役立ちます。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using iTextSharp.text.pdf; 
using iTextSharp.text.xml; 
namespace GetPages_PDF 
{ 
    class Program 
{ 
    static void Main(string[] args) 
     { 
     // Right side of equation is location of YOUR pdf file 
     string ppath = "C:\\aworking\\Hawkins.pdf"; 
     PdfReader pdfReader = new PdfReader(ppath); 
     int numberOfPages = pdfReader.NumberOfPages; 
     Console.WriteLine(numberOfPages); 
     Console.ReadLine(); 
     } 
    } 
} 

その後は、ページ上でも、テキストをスタンプすることができますが、あなたはそれが行く必要がどこに場所を追加する必要があります。

リンク:http://crmhunt.com/how-to-modify-pdf-file-using-itextsharp/

は、これはいくつかの方法で役立ちます願っています。

+0

:あなたはHtmlToPdfコンバータを使用して、任意のページ番号が表示されない場合は、次のプロパティを設定することを忘れないでください問題に対処するしかしOPは、彼がSelectPDFを使用していることを明確に言及し、そのライブラリを扱うソリューションを探しています。 – mkl

+0

iTextSharpはこの特定の問題の解決策ではありません。なぜなら、1)私はその情報をフッターに追加してPDFを作成しているからです。 2)私は、総ページ数だけでなく、2つのpdfsの間の総ページ数の範囲内で現在のページの正しい番号を更新する方法を探しています。例えば、2つのpdfのそれぞれが5ページを有する場合、第2の文書の第1ページはフッタに「ページ:6/10」を有するべきである。そのページのオフセットを追加する方法や、SelectPDFで定義された{page_number}と{total_pages} - 値に直接アクセスする方法を理解しようとしています。 – kaplievabell

0

次のプロパティを使用する必要があります。

  • FirstPageNumberは - レンダリング である第1ページのページ数を制御します。
  • TotalPagesOffset - 生成されたPDFドキュメント内の合計ページ数 を制御します。ここ

詳細: http://selectpdf.com/html-to-pdf/docs/html/HtmlToPdfHeadersAndFooters.htm

+0

TotalPagesOffsetの値を知り、FirstPageNumberを設定するには、pdfで生成された{total_pages}の値を知る必要があります。 Footer.FirstPageNumberオプションが設定された後、pdfページが生成されます。 – kaplievabell

1

今日、私は同じ問題につまずいたと私は、問題のための回避策を発見しました。コンバーターは生成されたドキュメントのページ番号を表示することができましたが、複数の生成されたファイル(ページプロパティにアクセスできません)を認識できないため、連結したすべてのページが1のページを表示していました。

最初に私は1つのPdfDocumentを定義します(これをメイン文書として参照してください)。そして、私はHtmlToPdfを使用して、このメイン文書に変換されたhtmlファイルを追加します。

// Create converter 
converter = new HtmlToPdf();  
PdfTextSection text = new PdfTextSection(0, 10, "Page: {page_number} of {total_pages} ", new Font("Arial", 8)); 
text.HorizontalAlign = PdfTextHorizontalAlign.Right; 
converter.Footer.Add(text); 

// Create main document 
pdfDocument = new PdfDocument(); 

は、それから私は、これは、メイン文書の正しいページ番号になり、この方法

public void AddPage(string htmlPage) 
{ 
    PdfDocument doc = converter.ConvertHtmlString(htmlPage); 
    pdfDocument.Append(doc); 
    converter.Footer.TotalPagesOffset += doc.Pages.Count; 
    converter.Footer.FirstPageNumber += doc.Pages.Count; 
} 

を使用して(HTMLから)ページを追加します。あなたが説明したように複数の文書にファイルとページ番号を分割するのに同じトリックを使うことができます。

EDIT:確かな方法である汎用PDFライブラリと第二のパスを行う

converter.Options.DisplayFooter = true;