我查看了http://developers.itextpdf.com/examples下的一些文档和示例。
我知道iText能够从头开始生成带标签的pdf,但是是否可以在现有的标记 pdf中插入替代文字(不更改任何其他内容)?我需要在不使用GUI应用程序(例如Adobe Acrobat Pro)的程序中实现此功能。感谢。
答案 0 :(得分:1)
请查看AddAltTags示例。
在这个例子中,我们拍摄了一张PDF,其中包含缺少Alt键的狐狸和狗的图像:no_alt_attribute.pdf
代码无法识别狐狸或狗,因此我们使用Alt属性创建一个新文档,说“没有替代描述的图”:added_alt_attributes.pdf)
我们通过遍历结构树添加此描述,查找标记为/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
对象/Alt
条目。完成此操作后,使用PdfStamper
保存更改的文件。