您的位置:首页 > 编程语言 > PHP开发

ExpertPdf生成多页pdf文档内容大小不一致的解决办法

2015-11-05 23:41 736 查看
最近做一个物流项目,其中有按模板生成PDF的功能,按ExpertPdf官方的示例,实现方式是这样的:

byte[] pdfBytes = null;
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel.Normal;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PDFPageOrientation.Portrait;//PDFPageOrientation.Portrait
pdfConverter.PdfDocumentOptions.EmbedFonts = false;
pdfConverter.PdfDocumentOptions.ShowFooter = false;
pdfConverter.PdfDocumentOptions.ShowHeader = false;
pdfConverter.PdfDocumentOptions.GenerateSelectablePdf = true;
pdfConverter.PdfDocumentOptions.FitWidth = false;
pdfConverter.PdfDocumentOptions.EmbedFonts = false;
pdfConverter.PdfDocumentOptions.LiveUrlsEnabled = true;
pdfConverter.ScriptsEnabled = true;
pdfConverter.ActiveXEnabled = true;
pdfConverter.PdfDocumentOptions.JpegCompressionEnabled = true;
pdfConverter.PdfBookmarkOptions.TagNames = new string[] { "H1", "H2" };
Document pdfDoc = pdfConverter.GetPdfDocumentObjectFromHtmlString(htmllist[0], baseURL);

for (int i = 1; i < htmllist.Count; i++)
{
string html = htmllist[i];
HtmlToPdfElement htmlToPdf = null;
AddElementResult addResult = null;
PdfPage newPage = pdfDoc.Pages.AddNewPage();
htmlToPdf = new HtmlToPdfElement(html, baseURL);
addResult = newPage.AddElement(htmlToPdf);

}


但是这样子生成的pdf,除第一个内容大小比较符合要求,从第二个开始,前面的配置都没有起到作用,仔细看了一下接口暴露出来的方法,发现下面的方式可以所有的内容大小一致:

for (int i = 1; i < htmllist.Count; i++)
{
string html = htmllist[i];
Document ndoc = pdfConverter.GetPdfDocumentObjectFromHtmlString(html,baseURL);
pdfDoc.AppendDocument(ndoc);
}


即把上面的循环换成下面的循环,用AppendDocument的方式,就能让前面的配置对新的页面也生效!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: