Lar*_*goh 3 asp.net pdf-generation itextsharp asp.net-mvc-4
我正在ASP.Net应用程序中动态创建PDF文件.数据可以从跨页1页到超过10页不等.我正在使用PdpfTables和Cells来对齐完美运行的数据.IT正在创建需要新页面的页面.唯一的问题是我无法将它添加到所有页面,只有第一页.
我的模板是一个1页的PDF文件.要将它添加到第一页,我使用以下代码
PdfContentByte cb = writer.DirectContent;
cb.AddTemplate(page, 0, 0);
Run Code Online (Sandbox Code Playgroud)
正如我所说,这适用于第一页很好,但之后没有任何页面.所以我尝试在关闭所有流之前添加以下代码,但它什么也没做
for (var i = 2; i <= writer.CurrentPageNumber; i++)
{
var y = (writer.PageSize.Height * (i - 1));
cb.AddTemplate(page, 0, y);
}
Run Code Online (Sandbox Code Playgroud)
我确实没有在网上找到任何与我的问题完全相关的内容,但那些相似的问题并没有帮助.
任何建议都会很棒,谢谢.
如果您希望在每个页面上发生某些事情,则应使用页面事件并在OnEndPage呼叫时执行操作.Webified iTextSharp示例Stationery.cs显示了如何执行此操作.它本质上是后初始化PdfWriter,使用内部帮助器类作为页面事件监听器并检索背景:
PdfWriter writer = PdfWriter.GetInstance(document, ms);
[...]
writer.PageEvent = new TemplateHelper(this);
PdfReader reader = new PdfReader(stationary);
page = writer.GetImportedPage(reader, 1);
Run Code Online (Sandbox Code Playgroud)
page 是一个成员变量:
private PdfImportedPage page;
Run Code Online (Sandbox Code Playgroud)
它由TemplateHelper内部助手类使用:
class TemplateHelper : PdfPageEventHelper {
private Stationery instance;
public TemplateHelper() { }
public TemplateHelper(Stationery instance) {
this.instance = instance;
}
/**
* @see com.itextpdf.text.pdf.PdfPageEventHelper#onEndPage(
* com.itextpdf.text.pdf.PdfWriter, com.itextpdf.text.Document)
*/
public override void OnEndPage(PdfWriter writer, Document document) {
writer.DirectContentUnder.AddTemplate(instance.page, 0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3312 次 |
| 最近记录: |