将PDF文件拆分为单个页面多线程

时间:2017-05-04 15:58:38

标签: java multithreading pdf itext

我有一个使用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

0 个答案:

没有答案