Apache PDFBox - Adobe Acrobat 提示保存
Apache PDFBox - Adobe Acrobat prompts saving
我正在使用 Apache PDFBox 2.0.16 版向现有 PDF 文件添加分页。
我的方法效果很好,生成的 PDF 很好。但是,当我用 Adobe Acrobat Reader 打开文件时,如果我尝试关闭文件,即使我没有编辑任何内容,它也会提示我是否要保存文件,并且文件是一开始不可编辑。
我无法理解发生了什么,以及如何防止它提示保存
我的代码如下:
private void paging(ByteArrayOutputStream os) throws IOException {
PDDocument doc = PDDocument.load(new ByteArrayInputStream(os.toByteArray()));
PDFont font = getFont(doc);
PDPageTree pages = doc.getDocumentCatalog().getPages();
for (int i = 0; i < pages.getCount(); i++) {
PDPage page = pages.get(i);
PDPageContentStream contentStream = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, false);
contentStream.beginText();
contentStream.setFont(font, FONT_SIZE);
contentStream.setNonStrokingColor(Color.BLACK);
contentStream.newLineAtOffset(page.getCropBox().getWidth() - 40, 15);
contentStream.showText((i + 1) + " / " + pages.getCount());
contentStream.endText();
contentStream.close();
}
doc.save(os);
doc.close();
}
保存前重置'os',这样你的ByteArrayOutputStream
就会被清除并定位在开头。
os.reset();
也可以直接用字节数组调用load():
PDDocument.load(os.toByteArray());
并更新到当前版本,此时为2.0.19。
我正在使用 Apache PDFBox 2.0.16 版向现有 PDF 文件添加分页。 我的方法效果很好,生成的 PDF 很好。但是,当我用 Adobe Acrobat Reader 打开文件时,如果我尝试关闭文件,即使我没有编辑任何内容,它也会提示我是否要保存文件,并且文件是一开始不可编辑。 我无法理解发生了什么,以及如何防止它提示保存
我的代码如下:
private void paging(ByteArrayOutputStream os) throws IOException {
PDDocument doc = PDDocument.load(new ByteArrayInputStream(os.toByteArray()));
PDFont font = getFont(doc);
PDPageTree pages = doc.getDocumentCatalog().getPages();
for (int i = 0; i < pages.getCount(); i++) {
PDPage page = pages.get(i);
PDPageContentStream contentStream = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, false);
contentStream.beginText();
contentStream.setFont(font, FONT_SIZE);
contentStream.setNonStrokingColor(Color.BLACK);
contentStream.newLineAtOffset(page.getCropBox().getWidth() - 40, 15);
contentStream.showText((i + 1) + " / " + pages.getCount());
contentStream.endText();
contentStream.close();
}
doc.save(os);
doc.close();
}
保存前重置'os',这样你的ByteArrayOutputStream
就会被清除并定位在开头。
os.reset();
也可以直接用字节数组调用load():
PDDocument.load(os.toByteArray());
并更新到当前版本,此时为2.0.19。