PDFRenderer创建的图像尺寸大于PDF本身

时间:2018-11-05 21:07:31

标签: java pdf graphics jpeg pdfbox

我有一个需要编辑并重新导出的扫描PDF样本。我使用PDFBox将PDF呈现为一系列图像(每页一个图像),我对光栅化的jpeg执行一些OpenCV计算,然后打算将它们重新插入到新的pdf文件中。

例如:PDF是423kb,第1页是313kb,第2页是287kb,第3页是319kb,第4页是485kb,第5页是470kb。

问题是输出图像的尺寸大于PDF本身。这导致我的OCR工作花费的时间比可接受的时间长得多(每份文档5分钟vs 30秒)。防止jpeg大小膨胀的唯一方法是将其默认DPI设置为72。这会产生无法使用的低质量图像。

为什么会这样?我应该能够取回大小小于或等于所讨论的PDF的图像(不牺牲质量)。我没有对图像做任何奇怪的事情,只是删除了水印。

这里有一些代码说明了我如何从PDF中提取jpeg。

File file = new File(fileName);
PDDocument document = PDDocument.load(file);
PDFRenderer renderer = new PDFRenderer(document);
BufferedImage[] pageArray = new BufferedImage[document.getNumberOfPages()];
int pageCounter = 0;
for(PDPage page : document.getPages()) {
    pageArray[pageCounter] = renderer.renderImageWithDPI(pageCounter, 160);
    pageCounter++;
}

0 个答案:

没有答案