gpt4 book ai didi

pdf - 使用 iText 为带标签的 pdf (PDF/UA) 中的图像添加替代文本

转载 作者:行者123 更新时间:2023-12-05 04:14:52 29 4
gpt4 key购买 nike

我在 http://developers.itextpdf.com/examples 下查找了一些文档和示例.

我知道 iText 能够从头开始生成带标签的 pdf,但是是否可以在现有的 tagged pdf 中向图像插入替代文本(无需更改任何其他内容)?我需要在不使用 GUI 应用程序(例如 Adob​​e Acrobat Pro)的程序中实现此功能。谢谢。

最佳答案

请看AddAltTags示例。

在这个例子中,我们获取了一个包含狐狸和狗图像的 PDF,其中缺少 Alt 键:no_alt_attribute.pdf

enter image description here

代码无法识别狐狸或狗,因此我们创建一个新文档,其 Alt 属性为“没有 Alt 描述的图形”:added_alt_attributes.pdf)

enter image description here

我们通过遍历结构树来添加此描述,查找标记为 /Figure 元素的结构元素:

public void manipulatePdf(String src, String dest)
throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfDictionary catalog = reader.getCatalog();
PdfDictionary structTreeRoot =
catalog.getAsDict(PdfName.STRUCTTREEROOT);
manipulate(structTreeRoot);
PdfStamper stamper = new PdfStamper(
reader, new FileOutputStream(dest));
stamper.close();
}

public void manipulate(PdfDictionary element) {
if (element == null)
return;
if (PdfName.FIGURE.equals(element.get(PdfName.S))) {
element.put(PdfName.ALT,
new PdfString("Figure without an Alt description"));
}
PdfArray kids = element.getAsArray(PdfName.K);
if (kids == null) return;
for (int i = 0; i < kids.size(); i++)
manipulate(kids.getAsDict(i));
}

您可以轻松地将此 Java 示例移植到 C#:

  • PdfReader对象获取根字典,
  • 获取结构树的根(字典),
  • 遍历那棵树的每个分支的所有 child ,
  • 当线索是数字时,添加一个/Alt条目。

完成此操作后,使用 PdfStamper 保存更改后的文件。

关于pdf - 使用 iText 为带标签的 pdf (PDF/UA) 中的图像添加替代文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34036200/

29 4 0