PDFBox能否加载源PDF一次,然后将多个可变页面范围保存为单个PDF?

PDFBox能否加载源PDF一次,然后将多个可变页面范围保存为单个PDF?,pdf,pdfbox,Pdf,Pdfbox,我正在编写一个系统,它可以处理非常大的PDF文件,多达400000页,每个PDF文件包含100000条单独的语句。我的任务是快速将此PDF拆分为单独的语句。由于语句的页数不同,所以我无法在每第四页上进行简单的拆分,这使得这一点变得复杂 我在36核AWS实例上使用并行处理来加快工作速度,但是将400000页PDF初步拆分为36个块非常非常慢,尽管处理结果11108页块非常快,因此最终要获得好的结果需要大量的开销 我认为可以更快地完成这项工作的方法是使用PDFBox编写一个进程,将源PDF加载到内存

我正在编写一个系统,它可以处理非常大的PDF文件,多达400000页,每个PDF文件包含100000条单独的语句。我的任务是快速将此PDF拆分为单独的语句。由于语句的页数不同,所以我无法在每第四页上进行简单的拆分,这使得这一点变得复杂

我在36核AWS实例上使用并行处理来加快工作速度,但是将400000页PDF初步拆分为36个块非常非常慢,尽管处理结果11108页块非常快,因此最终要获得好的结果需要大量的开销

我认为可以更快地完成这项工作的方法是使用PDFBox编写一个进程,将源PDF加载到内存中一次(而不是调用命令行实用程序(如pdftk或cpdf)36次以拆分大量PDF)然后让它在一个端口上监听我的另一个进程的子进程,告诉它将页面x-y拆分成一个名为z的pdf


PDFBox是否可以实现这一点?如果可以,我将使用什么方法来实现这一点?

我想知道PDFBox是否可以加载一个400000页的文件,即使是一个临时文件。但是PDFBox不是线程安全的:@tilmahausherr:在我考虑的情况下,它将是一个进程访问PDF,但通过套接字侦听来自其他进程的命令。当然,如果一开始它甚至不能打开文件,这是不可能的。问题是你不能将PDDocument对象传递给你的其他进程。这一切必须在一个线程中完成。重新打开文件,请尝试。@Tilman担心已经打开的pdf可能会成为一个问题的原因是PdfBox在加载后在内存中保存了很多(全部?)pdf。拥有400000页的PDF可能意味着巨大的资源需求。@TilmanHausherr:我不想将PDDocument对象传递给我的其他进程。我问是否有一种方法可以将页面x-y保存到PDFBox中名为z的新PDF中,我可以通过套接字调用它。只有一个进程将加载源PDF文件,并且不会返回任何内容,只会创建一个文件。这是PDFBox可以做到的吗?我查看了所有的方法,但什么也没看到。甚至命令行PDFSplit也没有说明新PDF的目标路径。你是通过管道传送返回的内容还是什么?