我想使用iText 7更改轮廓标题。我编写了以下代码,但在生成的pdf中没有更改。为什么?
PdfDocument pdfDocument = new PdfDocument(
new PdfReader(INPUT),
new PdfWriter(OUTPUT),
new StampingProperties().useAppendMode());
try (pdfDocument) {
List<PdfOutline> outlines = pdfDocument.getOutlines(false).getAllChildren();
outlines.forEach(o -> o.setTitle("Title"));
}
最佳答案
正如@mkl在其注释中正确指出的那样,以附加模式工作对要标记为这样的已修改对象施加了额外的要求。对于大多数操作,iText应该在后台进行操作,但是在这种情况下则不这样做,这是一个错误。不过,有一个简单的解决方案。您可以获取必要的PDF对象并将其标记为已修改。这是完整的解决方案:
PdfDocument pdfDocument = new PdfDocument(
new PdfReader(INPUT),
new PdfWriter(OUTPUT),
new StampingProperties().useAppendMode());
try (pdfDocument) {
List<PdfOutline> outlines = pdfDocument.getOutlines(false).getAllChildren();
for (PdfOutline outline : outlines) {
outline.setTitle("Title");
outline.getContent().setModified();
}
}
关于java - 未保存新的大纲标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58737681/