我使用iTextSharp(5.5.5.90)生成PDF文件。我正在使用段落和从读者等导入页面。以下是我创建文档的方法,从那里我只需附加我需要的内容:
FileStream fs = new FileStream("filename.pdf", FileMode.Create, FileAccess.Write, FileShare.None);
Document doc = new Document(new Rectangle(PageSize.LETTER), 58, 58, 100, 50);
PdfWriter writer = PdfWriter.GetInstance(doc, fs);
创建文件后,我添加如下段落:
doc.Add(new Paragraph("Paragraph text"));
从这样的读者导入页面:
writer.DirectContent.AddTemplate(writer.GetImportedPage(reader, page), 0, 0);
我的问题是如何在生成整个文档并向第一页添加元素后返回第一页?我将添加一个条形码(我知道如何在当前页面上添加条形码,表格和其他我想要的地方),但我不知道如何"返回"第一页添加元素。
这是完整的代码,但由于依赖性,您无法编译它。此外,请不要了解完整代码的详细信息,因为这是一个用于创建动态生成的文档的大型项目。 https://pastebin.com/kABi7fzW
答案 0 :(得分:1)
当我们以完全不同的方式处理我们的文档时,我无法证明对iTextSharp
的确切调用;打开Word模板,在DataTables
等数据处,执行MailMerge,关闭并重新打开并另存为PDF。听起来更复杂,但不需要逐段创建文档的详细细节级别,但它确实允许文档生成器担心内容而不是样式放置(通过Word处理,手动和外部应用程序) )。
根据使用iTextSharp
的经验,尝试将元素浮动到某个部分顶部以插入条形码时会遇到很多麻烦。在这种情况下,文档生成工具有一种令人讨厌的趋势,即完全工作。我们经历了数周的来回使用iTextSharp支持和版本升级,但仍无法在所有情况下都能正常运行。
正如评论中所讨论的,并且考虑到你已经编写了代码(我怀疑你会废弃所有代码并从MailMerge开始,除非你真的,真的必须这样做),你需要插入一个占位符您可以通过iTextSharp
的{{1}} api找到的块。我认为设置书签位置可能是最简单的方法。
如果可以(最好?)在自己的页面上显示条形码,那么您已经拥有了执行此操作所需的代码(大约在您的pastebin链接中PdfBuilder
行);
324