【问题标题】:What's itext 7 equivalent to pdfstamper class in itext 5什么是 itext 7 相当于 itext 5 中的 pdfstamper 类
【发布时间】:2017-12-17 01:07:51
【问题描述】:

我试图从 iText5 转换为 iText7。从 Nuget 获得 iText7 的软件包。

【问题讨论】:

  • 请更具体地说明您要实现的功能。 iText7 被设计成更加模块化。因此,根据您的用例,可能会有不同的类可以满足您的需求。

标签: .net itext7


【解决方案1】:

这在iText 7 Jump-start tutorialchapter 5 中有解释。没有PdfStamper 类了。只有一个PdfDocument 类用于创建文件以及用于操作文件。

你的问题很不完整。

您的代码是否用于填写表格?在这种情况下,你需要这样的东西:

PdfDocument pdf = new PdfDocument(
    new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
Map<String, PdfFormField> fields = form.getFormFields();
fields.get("name").setValue("Abhishek Kumar");
pdf.close();

或者在 C# 中:

PdfDocument pdf = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
IDictionary<String, PdfFormField> fields = form.GetFormFields();
PdfFormField toSet;
fields.TryGetValue("name", out toSet);
toSet.SetValue("Abhishek Kumar");
form.FlattenFields();
pdf.Close();

您的代码是否用于向文档添加额外内容?在这种情况下,你需要这样的东西:

PdfDocument pdfDoc =
    new PdfDocument(new PdfReader(src), new PdfWriter(dest));
Document document = new Document(pdfDoc);
Rectangle pageSize;
PdfCanvas canvas;
int n = pdfDoc.getNumberOfPages();
for (int i = 1; i <= n; i++) {
    PdfPage page = pdfDoc.getPage(i);
    pageSize = page.getPageSize();
    canvas = new PdfCanvas(page);
    // add new content
}
pdfDoc.close();

在上面写着// add new content 的地方,您可以将内容添加到canvas

您是否将PdfStamper 用于其他用途?在这种情况下,您需要改进您的问题。

【讨论】:

  • 谢谢,是的,我正在尝试填写表格,从数据库中获取模板,填写并保存到数据库中。虽然我在 Map fields = form.getFormFields(); 线上遇到语法错误说找不到命名空间'Map'
  • 我假设每个 C# 开发人员都应该知道 Java 中 Map 的 C# 等价物。我会更新我的答案。
  • 感谢 AcroForm 的提示,在他们可怕的文档中还没有找到那个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 2018-09-29
相关资源
最近更新 更多