2016-04-26 183 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;