正如我在对您的问题的评论中提到的,没有签名十六进制字符串可以分割源 PDF。PDF 文件由可以通过交叉引用表相互引用的对象组成。因此,用于给定单个页面的对象可能分布在整个文件中。此外,其中一些对象可以在多个页面上使用。例如嵌入字体或重复的页眉/页脚部分。
不过,了解 PDF 格式的 API 可以从多页源 PDF 创建部分文档的集合。
如果是 iText,请查看iText in Action — 第 2 版示例Burst.java。中心代码是这样的:
PdfReader reader = new PdfReader(SOURCE);
// We'll create as many new PDFs as there are pages
Document document;
PdfCopy copy;
// loop over all the pages in the original PDF
int n = reader.getNumberOfPages();
for (int i = 0; i < n; ) {
document = new Document();
copy = new PdfCopy(document, new FileOutputStream(String.format(RESULT, ++i)));
document.open();
copy.addPage(copy.getImportedPage(reader, i));
document.close();
}
reader.close();
虽然此示例为每一页创建一个结果 PDF,但源显然指示了如何创建包含原始页面范围的结果 PDF。