c# - 底部的 PDF 页脚使用 iTextSharp

标签 c# pdf .net-4.0 itext

我正在尝试使用 iTextSharp 5.0.6 在 c# 中创建一个 pdf 文档。我想分别在 OnStartPage 和 OnEndPage 事件中为每个页面添加页眉和页脚。

在页脚的情况下,存在一个问题,即页脚是在页面结束的地方创建的,而我希望位于页面底部。

在 iTextSharp 中有没有一种方法可以指定页面高度,以便始终在底部创建页脚。

谢谢!

最佳答案

页面的高度总是定义:

document.PageSize.Height // document.getPageSize().getHeight() in Java

请记住,在 PDF 中,0,0 是左下角,坐标会随着您向右和向上移动而增加。

在 PdfPageEvent 中,您需要使用绝对坐标。听起来您要么从文档中获取当前 Y,要么只是在当前位置绘制内容。不要那样做。

此外,如果您想在每个页面上使用完全相同的页脚,您可以将所有内容绘制到一个 PdfTemplate 中,然后将该模板绘制到您想要它的各个页面中。

PdfTemplate footerTmpl = writer.getDirectContent().createTemplate( 0, 0, pageWidth, footerHeight );

footerTmpl.setFontAndSize( someFont, someSize );
footerTmpl.setTextMatrix( x, y );
footer.showText("blah");
// etc

然后在您的 PdfPageEvent 中,您只需在页面底部添加 footerTempl:

 writer.getDirectContent().addTemplateSimple( footerTmpl, 0, 0 );

即使您的大部分页脚是相同的,您也可以使用此技术来节省内存、执行时间和文件大小。

此外,如果您不想直接使用 PdfContentByte 绘图命令,您可以通过 ColumnText 在一定程度上避免它们。有几个用 iText 或 iTextSharp 标记的 SO 问题处理该类。四处寻找,您会找到它们。

关于c# - 底部的 PDF 页脚使用 iTextSharp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6044965/

相关文章:

c# - Unity中如何检测哪个粒子与刚体发生碰撞?

javascript - 在 PhantomJS 中运行 Javascript 自定义函数

javascript - 呈现为 pdf 时,如何在 visualforce 中重复每个元素后应用分页符

objective-c - UIActivityViewController 不显示 "Open in iBooks"选项

.net - ASP.Net 发布超时

c# - 将 log4net 包含到使用 .net 4.0 构建的 .net Web 应用程序中

c# - 编码的 UI - 从 UI 表 (HtmlTable) 填充 DataTable

python - 在 python 中将函数应用于目录的每个元素的内容时出现问题?

.net-4.0 - Foreach 循环和任务

c# - 如何获得 LINQ to SQL submitchanges 的百分比?