我的要求是,我必须将一个大的pdf文件拆分成多个小的pdf文件。我有一个10000页的pdf文件,我想将文件拆分为1000个文件,每个文件10页。我试图使用pdfbox api拆分文件。我可以根据我的要求拆分文件,并且它对于没有页面的小文件也能正常工作。但是,当我尝试10000页时,它需要花费大量时间,即数小时。在实际场景中,我甚至可以获得超过20000页和超过5000个分割的pdf文件。
分割的时间是基于分割的减少而减少的。如果我尝试将同一文件拆分为100 * 100页,则花费的时间更少。任何人都可以验证我的代码并检查我是否以正确的方式进行,或者我可以添加代码以提高性能。
注意:我不能使用'iText',因为这是针对客户特定项目的。是否有任何api可用于拆分除iText和pdfbox
之外的pdf文件请参阅我的以下代码
public class Test {
private static String sourceFolderPath = "/local_path/PDFSplitter_perf/10000_pages/";
private static String outputPath = sourceFolderPath+"output/";
private static String pdfFileName = sourceFolderPath+"test_1.pdf";
private static int pageCount = 10;
public static void main(String[] args) throws IOException {
splitUsingPDFBox(pdfFileName);
}
public static void splitUsingPDFBox(String pdfFilePath) throws IOException, InterruptedException, ExecutionException{
try (final PDDocument document = PDDocument.load(new File(pdfFilePath));) {
int i = 1;
while(i<10000){
int startPage = i;
int endPage = i + (pageCount-1);
String chidlPdfFile = outputPath+"/"+startPage+"_"+endPage+".pdf";
Splitter splitter = new Splitter();
splitter.setStartPage(startPage);
splitter.setEndPage(endPage);
splitter.setSplitAtPage(endPage);
List<PDDocument> pages = splitter.split(document);
PDDocument pd = null;
try{
pd = pages.get(0);
pd.save(chidlPdfFile);
}finally{
if( pd != null ){
pd.close();
}
}
}
}
}
}