iText:在多线程环境中拆分pdf文档

时间:2016-02-24 06:05:45

标签: java multithreading io itext

我使用iText2.1.2但在iText5.4.3上也发现了相同的行为。

我要求打破' n'分页文件到' n'我的JAX-WS服务中的文档。我写了下面的逻辑来实现同样的目标。

reader = new PdfReader(fileLocation + "\\" + pdfFilename + ".pdf");
int n = reader.getNumberOfPages();
int i = 0;

while (i < n) {
    .
    .
    .
    document = new Document(reader.getPageSizeWithRotation(1));
    fos = new FileOutputStream(outFile);
    writer = new PdfCopy(document, fos);
    document.open();
    PdfImportedPage page = writer.getImportedPage(reader, ++i);
    writer.addPage(page);

    document.close();
    writer.close();
    fos.close();
    .
    .
    .
 }
 reader.close();

这也可以在多线程环境中运行。由于以下几行,整个处理速度变慢并使我的服务显示顺序。

    writer = new PdfCopy(document, fos);
    document.open();
    PdfImportedPage page = writer.getImportedPage(reader, ++i);
    writer.addPage(page);

在我的服务中观察:对于500页文档,对于5个线程,每个线程大约需要160秒。如果上面的行被注释,那么每个线程都需要30秒。

我想知道这是否是预期的行为以及iText如何支持IO操作的多线程环境。

请建议是否有其他办法可以拆分&#39; n&#39;分页文件到&#39; n&#39;文档。

0 个答案:

没有答案