Можем ли мы создать новый пользовательский PDFOperator (например, PDFOperator {BDC}) и объекты COSBase (например, COSName {P} COSName {Prop1} (опять же Prop1 будет ссылаться на еще один объект))? И добавить их в корневую структуру PDF?
Я прочитал некоторый список токенов парсера из существующего pdf-документа. Я хотел пометить PDF. В этом процессе я сначала манипулирую списком токенов с вновь созданными объектами COSBase. Наконец я добавлю их в корневую структуру дерева. Так вот, как я могу создать объекты COSBase. Я использую код для извлечения токенов из PDF
old_document = PDDocument.load(new File(inputPdfFile));
List<Object> newTokens = new ArrayList<>();
for (PDPage page : old_document.getPages())
{
PDFStreamParser parser = new PDFStreamParser(page);
parser.parse();
List<Object> tokens = parser.getTokens();
for (Object token : tokens) {
System.out.println(token);
if (token instanceof Operator) {
Operator op = (Operator) token;
}
}
newTokens.add(token);
}
PDStream newContents = new PDStream(document);
document.addPage(page);
OutputStream out = newContents.createOutputStream(COSName.FLATE_DECODE);
ContentStreamWriter writer = new ContentStreamWriter(out);
writer.writeTokens(newTokens);
out.close();
page.setContents(newContents);
document.save(outputPdfFile);
document.close();
Выше кода создаст новый PDF со всеми форматами и изображениями.
Итак, в списке newTokens содержатся все существующие объекты COSBase, поэтому я хотел манипулировать некоторыми тегами объектов COSBase, и если я сохраню новый документ, он должен быть помечен без какой-либо обработки декодирования, кодирования, шрифтов и обработки изображений.
Первый. Будет ли эта идея работать? Если да, то помогите мне с кодом для создания пользовательских объектов COSBase. Я очень новичок в Java.