我使用abcpdf从html字符串创建pdf。以下代码段显示了我的方式:
var pdfDocument = new Doc();
pdfDocument.Page = pdfDocument.AddPage();
pdfDocument.Font = pdfDocument.AddFont("Times-Roman");
pdfDocument.FontSize = 12;
var documentId = pdfDocument.AddImageHtml(innerHtml);
var counter = 0;
while (true)
{
counter++;
if (!pdfDocument.Chainable(documentId))
{
break;
}
pdfDocument.Page = pdfDocument.AddPage();
// how to add a inset of 20, 0 on every page after the second? The following 2lines don't affect the pdf pages
if (counter >= 3)
pdfDocument.Rect.Inset(20, 0);
documentId = pdfDocument.AddImageToChain(documentId);
}
在AddPage之后我想为每个页面添加一个新插图,其中pagenumber> 2
提前致谢
答案 0 :(得分:0)
我可以向您保证,您的插入通话将产生效果。尝试在每个页面上调用FrameRect,然后你就可以看到它了。
那么为什么你没有看到你期望的效果呢?
您的HTML在调用AddImageUrl / HTML时具有固定的宽度。随后对AddImageToChain的每次调用都使用此固定宽度。
如果在“嵌入”页面中减少了页面区域的高度,您将获得截断到该高度的页面的下一个块。
如果在“插入”页面中减少了区域的宽度,则事情变得更加困难。宽度是固定的,因此无法更改。相反,ABCpdf将缩小页面以使其适合。
因此,如果您将宽度从600点减少到580点,则此内容的比例因子将为580/600 = 97%。
这很可能是发生了什么,但由于比例因子很小,你没有注意到它。
我在ABCpdf上工作,我的回复可能包含基于ABCpdf的概念。这就是我所知道的。 : - )
答案 1 :(得分:0)
来自SwissCoder的评论#1是对的。 AddImageHtml
已添加第一页。在联系WebSuperGoo支持后,他们建议我使用PageCount
类Doc
。
while (true)
{
if (!pdfDocument.Chainable(documentId))
{
break;
}
pdfDocument.Page = pdfDocument.AddPage();
if (pdfDocument.PageCount >= 3)
pdfDocument.Rect.Inset(0, 20);
documentId = pdfDocument.AddImageToChain(documentId);
}
另一个解决方案是将索引调整为required pagenumber - 1
,因为ÀddImageHtml
已将第一页添加到文档中。