我使用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;文档。