如何使用 itextpdf-5.5.13 的低级对象标记 PDF
How to Tagged PDF with low level object of itextpdf-5.5.13
我正在尝试使用 itext5 的低级对象创建带标签的 PDF,如下所示
document.open();
PdfStructureTreeRoot structureTreeRoot = writer.getStructureTreeRoot();
PdfStructureElement top = new PdfStructureElement(structureTreeRoot, PdfName.DOCUMENT);
PdfStructureElement element = new PdfStructureElement(top, PdfName.P);
PdfContentByte cb = writer.getDirectContent();
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false);
cb.setLeading(16);
cb.setFontAndSize(bf, 12);
cb.beginText();
cb.setTextMatrix(50, 700);
cb.beginMarkedContentSequence(element);
cb.newlineShowText("Hello There");
cb.endMarkedContentSequence();
cb.endText();
document.close();`
代码生成 pdf,它在 acrobat DC pro 中打开,但是当我检查标签时,acrobat 没有响应。
在 itext-rups 中检查结构树时,我发现 StructureTreeRoot 数组包含 null 而不是 StructureElement 并且在 XRef 中第二和第三个对象也丢失
我是 pdf 生成的新手,编写的代码参考了 Tagged PDF。项目必须使用 itext5 低级对象
由于您在此处使用的是低级 API,因此您必须明确执行大量工作,否则这些工作会自动为您完成。
例如,在手头的情况下,您必须在关闭文档之前明确地将 PdfStructureElement
添加到文档中,即
[...]
cb.endText();
writer.addToBody(element, element.getReference());
writer.addToBody(top, top.getReference());
document.close();
我正在尝试使用 itext5 的低级对象创建带标签的 PDF,如下所示
document.open();
PdfStructureTreeRoot structureTreeRoot = writer.getStructureTreeRoot();
PdfStructureElement top = new PdfStructureElement(structureTreeRoot, PdfName.DOCUMENT);
PdfStructureElement element = new PdfStructureElement(top, PdfName.P);
PdfContentByte cb = writer.getDirectContent();
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false);
cb.setLeading(16);
cb.setFontAndSize(bf, 12);
cb.beginText();
cb.setTextMatrix(50, 700);
cb.beginMarkedContentSequence(element);
cb.newlineShowText("Hello There");
cb.endMarkedContentSequence();
cb.endText();
document.close();`
代码生成 pdf,它在 acrobat DC pro 中打开,但是当我检查标签时,acrobat 没有响应。
在 itext-rups 中检查结构树时,我发现 StructureTreeRoot 数组包含 null 而不是 StructureElement 并且在 XRef 中第二和第三个对象也丢失
我是 pdf 生成的新手,编写的代码参考了 Tagged PDF。项目必须使用 itext5 低级对象
由于您在此处使用的是低级 API,因此您必须明确执行大量工作,否则这些工作会自动为您完成。
例如,在手头的情况下,您必须在关闭文档之前明确地将 PdfStructureElement
添加到文档中,即
[...]
cb.endText();
writer.addToBody(element, element.getReference());
writer.addToBody(top, top.getReference());
document.close();