2016-04-26 84 views
0

我使用SelectPDF的HtmlToPdf()將html頁面轉換爲pdf。由於html內容很大,我將它打破了一半並創建了2個PDF。編輯頁腳Select PDF的總頁數

我很努力編輯footer中的total_pages來顯示頁面的實際總數,不僅是當前文檔;以及page_number在兩個PDF的上下文中顯示實際頁碼。

如何評估{page_number}和{total_pages}來計算適當的值?我發現的所有示例都使用PdfDocument(),而不是HtmlToPdf()。

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

做第二次通過與通用的PDF庫無疑是一種方式解決問題。但是OP明確提到他正在使用SelectPDF並正在尋找與該庫合作的解決方案。 – mkl

+0

iTextSharp不是解決這個特定問題的方法,因爲1)我在創建PDF時將該信息添加到頁腳。 2)我正在尋找不僅更新頁面總數的方式,而且還在2頁PDF之間的頁面總數範圍內更新當前頁面的數量。例如,如果2個pdf中的每一個都有5頁,那麼第2頁的第1頁應該在頁腳中有:「頁碼:6/10」。我試圖找出如何添加頁面偏移量或如何直接訪問{page_number}和{total_pages} - 由SelectPDF定義的值。 – 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)。同樣的技巧可以用於將文件和頁碼分割爲多個文檔,就像您所描述的那樣。

編輯:如果你不使用HtmlToPdf轉換器看到任何頁碼,不要忘記設置以下屬性:

converter.Options.DisplayFooter = true;