我正在尝试使用abcPdf创建PDF格式的报告.一切正常,但我想在每页的底部添加页码和页边距,并避免在图片中看到的连续中间的剪切:

var theDoc = new Doc { TopDown = true };
var pageRef = theDoc.AddImageUrl(pdfUrl, true, 1903, true);
while (theDoc.Chainable(pageRef))
{
theDoc.Page = theDoc.AddPage();
//I guessI have to do something here???
pageRef = theDoc.AddImageToChain(pageRef);
}
Run Code Online (Sandbox Code Playgroud)
有人知道是否有可能吗?
Rem*_*sen 27
它确实有效,但我认为AbcPdf正在使用IE的HTML呈现,所以你能做的最好的事情是手动设置渲染引擎为gecko(不要忘记你需要和额外的DLL)或更新你的web服务器中的IE.
theDoc.HtmlOptions.Engine = EngineType.Gecko;
Run Code Online (Sandbox Code Playgroud)
然后添加分页符只需使用
<div style="page-break-before:always"> </div>
Run Code Online (Sandbox Code Playgroud)
感谢feeela的评论.
Onc*_*est 10
ABCpdf包括两个HTML呈现引擎.
MSHTML基于Trident,产生的输出大致类似于系统上安装的IE版本.
Gecko一个基于Firefox,截至2013年6月将产生与您在Firefox 21中看到的输出大致相似的输出.
您可以使用Doc.HtmlOptions.Engine属性在两个引擎之间切换.
两个引擎都支持分页CSS样式.您可以使用以下内容:
<div style="page-break-before:always">some text</div>
<div style="page-break-after:always">some text</div>
<div style="page-break-inside:avoid">some text</div>
Run Code Online (Sandbox Code Playgroud)
请注意,page-break-inside是对基本MSHTML行为的补充.
两个引擎对这些结构的处理略有不同.一般来说,MSHTML更加宽容和直观.如何应用样式的元素必须是可见的才能工作.
因此,如果样式不会在您期望的位置产生中断,则调试它们的最简单方法是将边框样式应用于元素,以便您可以查看中断的位置.这通常会使问题的原因显而易见.
Gecko引擎中的分页符样式并不总是像在MSHTML中一样直观地应用.其根源是CSS规范,该规范说断点样式必须适用于"根元素的正常流"中的块级元素.它允许将这些样式应用于其他元素,但不强制要求它.
在Gecko引擎中,结果是页面分隔样式不能在表格中应用于表格行等元素.如果您不确定某些内容是否可行,只需在Firefox 21.0中尝试打印预览作为简单的完整性检查.