gpt4 book ai didi

java - 使用 iText 进行 Acroform 编辑的 Pdf

转载 作者:行者123 更新时间:2023-12-05 07:32:29 24 4
gpt4 key购买 nike

我正在使用 iText 向现有 pdf 文件添加文本。它适用于简单的 pdf,但 pdf 与 AcroForms 有问题。

我的代码:

    PdfReader reader = new PdfReader("/Users/simple-user/Downloads/acroform.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(
"/Users/simple-user/Downloads/acroform2.pdf"));
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252,
BaseFont.NOT_EMBEDDED);

PdfContentByte over = stamper.getOverContent(1);
over.beginText();
over.setFontAndSize(bf, 10);
over.setTextMatrix(107, 107);
over.showText("page updated");
over.endText();

stamper.close();

错误信息:“此文档启用了 Adob​​e Acrobat Reader DC 中的扩展功能。该文档自创建以来已更改,并且不再提供扩展功能。请与作者联系以获取此文档的原始版本。”

没有我想添加到文件中的文本

知道我遗漏了什么吗?

最佳答案

你的诊断是错误的。 问题 与 AcroForms 的存在无关。 问题与您的文档是否Reader Enabled有关。只能使用 Adob​​e 软件启用阅读器。这是一个需要使用 Adob​​e 私钥进行数字签名的过程。当存在有效签名时,Adobe Reader 中的特定功能(如签名时的使用权限中所定义)将被解锁。

请查看此问题的答案,了解如何检测 PDF 是否启用了阅读器:How to Check PDF is Reader enabled or not using C#?

您更改了此类 PDF 的内容,因此您破坏了签名。破坏此签名是导致丑陋错误消息的原因:

This document enabled extended features in Adobe Acrobat Reader DC. The document has been changed since it was created and use of extended features is no longer available. Please contact the author for the original version of this document.

有两种方法可以避免此错误消息:

  1. 删除使用权。这将导致表单不再启用 Reader。例如:如果文档的创建者允许将填写的表格保存在本地,则在删除使用权限后将不再可能。
  2. 以附加模式填写表格。这将导致更大的文件大小,但将保留 Reader 启用。

删除使用权限是这样完成的:

PdfReader reader = new PdfReader(path_to_file);
if (reader.hasUsageRights()) {
reader.removeUsageRights();
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(path_to_new_file));
stamper.close();
}
reader.close();

在附加模式下使用 iText 是这样完成的:

PdfReader reader = new PdfReader(src);
PdfStamper stamper =
new PdfStamper(reader, new FileOutputStream(dest), '\0', true);
stamper.close();
reader.close();

注意 PdfStamper 中的额外参数。

关于java - 使用 iText 进行 Acroform 编辑的 Pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51201293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com