You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Liu KeFeng (JIRA)" <ji...@apache.org> on 2017/12/15 02:43:03 UTC
[jira] [Created] (PDFBOX-4035) Render PDF to image may be cause OOM
Liu KeFeng created PDFBOX-4035:
----------------------------------
Summary: Render PDF to image may be cause OOM
Key: PDFBOX-4035
URL: https://issues.apache.org/jira/browse/PDFBOX-4035
Project: PDFBox
Issue Type: Improvement
Components: Rendering
Affects Versions: 2.0.7
Environment: Mac os 10.13.2
Ubuntu 16.04.2 LTS
Reporter: Liu KeFeng
My project need render every pdf page to image, and use scale.
This is my code:
{code:java}
public void pdfToImage(String uuid, String date, String pdfFileLocation, String saveParentFolder) {
File pdfFile = new File(pdfFileLocation);
try (PDDocument doc = PDDocument.load(pdfFile, MemoryUsageSetting.setupTempFileOnly())) {
PDFRenderer renderer = new PDFRenderer(doc);
int page = doc.getNumberOfPages();
String imagePath = saveParentFolder + "/" + date + "/" + uuid + "/";
File folder = new File(imagePath);
if (!folder.exists() && !folder.mkdirs()) {
throw new IllegalStateException("create directory " + imagePath + " error");
}
for (int i = 0; i < page; i++) {
int subPage = i;
Future<Void> future = callerRunExecutor.submit(() -> {
BufferedImage image = renderer.renderImageWithDPI(subPage, 220);
String imageLocation = imagePath + (subPage + 1) + appProperties.folderPath.previewImageSuffix;
writeImage(image, imageLocation);
return null;
});
try {
future.get(5L, TimeUnit.MINUTES);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
LOGGER.warn("generate " + pdfFileLocation + " page of " + subPage + " preview image error.", e);
}
}
} catch (IOException e) {
throw new ApiException(GatewayError.INTERNAL_ERROR, e);
}
}
{code}
This code maybe cause OOM. The PDFBox class is DCTFilter, source code:
{code:java}
DataBufferByte dataBuffer = (DataBufferByte)raster.getDataBuffer();
{code}
The pdf only have one page, the page only have one image, the image size: 13653 * 18000,
When rendering the image, trigger the user code, the user to choose whether to render, how to render.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org