gpt4 book ai didi

java - 用Java分隔PDF页面

转载 作者:行者123 更新时间:2023-12-01 23:45:49 24 4
gpt4 key购买 nike

我正在尝试将一个大 PDF 分成几个不同长度的较小 PDF。起初,我尝试使用FileInputStream阅读原始PDF。并找到签名十六进制字符串,将其分成带有 FileOutputStream 的较小文件(就像我对 JPG 所做的那样)。但是,我似乎无法找到原始文件中指定不同页面的十六进制字符串。

我一直在 iText API 中查找 PdfWriterPdfReader类,但我不太确定如何将数据从原始文件写入较小的 PDF,更不用说如何创建 PDF 文件了。

以下哪种方法更有意义?还是有更简单、更理想的方法?

最佳答案

正如我在对您的问题的评论中提到的,没有用于分割源 PDF 的签名十六进制字符串。 PDF 文件由可以通过交叉引用表相互引用的对象组成。因此,用于给定单页的对象可以分布在整个文件上。此外,其中一些对象可以在多个页面上使用。例如。嵌入字体或重复的页眉/页 footer 分。

不过,了解 PDF 格式的 API 可以从多页源 PDF 创建部分文档的集合。

如果是 iText,请查看 iText in Action — 2nd Edition示例 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。

关于java - 用Java分隔PDF页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17099870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com