【发布时间】:2017-09-21 16:12:10
【问题描述】:
我正在使用 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
【问题讨论】:
-
鉴于您是从一开始就生成文档,您是否有理由不在一开始就插入条形码?
-
DiskJunky,直到最后我才知道文档的整个长度。条形码包含文档中的页数。由于段落以及它们在到达底部时会自动流入下一页的方式,我不能 100% 确定有多少页(我想在早期计算字符/行/等)避免)
-
您必须至少在开始时为条形码放置一个占位符,否则仅仅插入就会增加您的页数。在这种情况下,您需要创建文档,重新打开它,找到条形码占位符并更新它。这是一个更复杂的过程
-
条形码将放在其他段落的顶部,因此不会修改长度(未经测试,但我认为这会起作用)。是的,选项 B 肯定是保存、重新打开和添加条形码。有没有办法放置一些东西来参考?如果可能的话,我可以将“表格”放在我想要的位置并稍后添加数据。
-
您可以创建一个
PdfTemplate并将其添加到第一页。完成后,您可以在该模板上绘制条形码。
标签: c# pdf itext pdf-generation