我有一个使用ITEXT 5.5.5拆分PDF的过程。在Java中,当我尝试拆分大文件时,我使用线程以100k的组分割PDF。
String pdf ="D:\\189945\\PDF_GlobalElectronico_Opt.pdf";
RandomAccessFileOrArray fileRandom = new RandomAccessFileOrArray(pdf);
PdfReader pdfReader = new PdfReader(fileRandom.createView(),null);
for(int i=0;listapaginas.size()-1>=i;i++){
Document document = new Document(pdfReader.getPageSizeWithRotation(1));
PdfCopy writer = null;
writer = new PdfCopy(document, new FileOutputStream("D:\\global\\spliteados\\"+listapaginas.get(i).getNombrePDF()+".pdf"));
writer.setFullCompression();
document.open();
PdfImportedPage page;
for(int j=listapaginas.get(i).getPaginaInicio();listapaginas.get(i).getPaginaFin()>=j;j++){
//System.out.println("sub "+listapaginas.get(i).getPaginaInicio()+" - "+listapaginas.get(i).getPaginaFin());
page = writer.getImportedPage(pdfReader, j);
try {
writer.addPage(page);
} catch (IOException ex) {
Logger.getLogger(ThreadPdfGenerador.class.getName()).log(Level.SEVERE, null, ex);
} catch (BadPdfFormatException ex) {
Logger.getLogger(ThreadPdfGenerador.class.getName()).log(Level.SEVERE, null, ex);
}
}
document.close();
writer.close();
}
pdfReader.close();
我发现的是: 如果我用一个线程拆分它需要与两个或更多线程相同的时间。
我想知道问题是否是因为我正在阅读相同的PDF,如果我尝试用一个或多个线程读取它并不重要。
线程示例 线程1页1在100000,
线程2页100001在200000,
线程3页200001在300000,
Thread 4 Pages 300001 at 400000,
线程5页400001在400000