
< /p>
Мне нужно добавить аннотацию:
Код: Выделить всё
Sample comment

Я могу импортировать XML-файл XFDF в PDF-файл:
Код: Выделить всё
PDDocument document = PDDocument.load(new File("tagged.pdf"));
FDFDocument fdfDoc = FDFDocument.loadXFDF(new File("annotation.xfdf"));
List fdfAnnots = fdfDoc.getCatalog().getFDF().getAnnotations();
List pageAnnotations = new ArrayList();
for (int i=0; i < fdfAnnots.size(); i++) {
FDFAnnotation fdfannot = fdfAnnots.get(i);
PDAnnotation pdfannot = PDAnnotation.createAnnotation(fdfannot.getCOSObject());
pdfannot.constructAppearances();
pageAnnotations.add(pdfannot);
}
document.getPage(0).setAnnotations(pageAnnotations);
document.save(new File("tagged_with_annotation.pdf"));
Аннотация, за исключением аннотаций подтипа Widget, PrinterMark или Link, должна быть вложенные в тег Annot
и выходные данные средства проверки читаемости PDF (инструмент PAC):
Аннотация не вложена в элемент структуры «Annot»
как ожидалось, потому что я не установил тег «annot» (и конкретное место ) для импортированной аннотации.
Кроме того, я могу получить объект тега P:
Код: Выделить всё
PDDocumentCatalog pdDocumentCatalog = document.getDocumentCatalog();
PDStructureTreeRoot pdStructureTreeRoot = pdDocumentCatalog.getStructureTreeRoot();
COSArray aDocument = (COSArray)(pdStructureTreeRoot.getK().getCOSObject());
COSObject oDocument = (COSObject) aDocument.get(0);
COSArray aPart = (COSArray)oDocument.getItem(COSName.K).getCOSObject();
COSObject oPart = (COSObject) aPart.get(0);
COSArray aSect = (COSArray)oPart.getItem(COSName.K).getCOSObject();
COSObject oSect = (COSObject) aSect.get(0);
COSArray aP = (COSArray)oSect.getItem(COSName.K).getCOSObject();
COSObject oP= (COSObject) aP.get(0);
Вопрос: как добавить тег и аннотацию в файл PDF. существующее дерево тегов в PDF с помощью PDFBox?
ОБНОВЛЕНИЕ: пример PDF и XFDF здесь.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-pdfbox