Hi! I have the same issue with some PDF and this is my code.
@Async(value = "asyncExecutor") public void createThumbnailForPDF(File filePDF, String jobNumber) { try { if (filePDF != null && jobNumber != null && !jobNumber.isEmpty()) { jobNumber = jobNumber.trim(); long fileSizeInBytes = filePDF.length(); long fileSizeInKB = fileSizeInBytes / 1024; long fileSizeInMB = fileSizeInKB / 1024; if (fileSizeInMB > PDF_MAX_SIZE) { log.error("File too large. PDF_MAX_SIZE: " + PDF_MAX_SIZE + ". Thumbnail not created. Jobnumber: " + jobNumber); return; } try { String fileName = filePDF.getName(); String extension = fileName.substring(fileName.lastIndexOf(".")); if (!StringUtils.isEmpty(extension) && extension.equalsIgnoreCase(".pdf")) { PDDocument documentPDF = null; PDFRenderer pdfRenderer = null; BufferedImage bim = null; try { documentPDF = PDDocument.load(filePDF); if (documentPDF != null) { try { log.info("PDF document loaded. Jobnumber: " + jobNumber + ". PDF Title: " + documentPDF.getDocumentInformation().getTitle()); } catch (Exception e) { log.error("Error reading document title property.", e.getMessage()); } pdfRenderer = new PDFRenderer(documentPDF); if (pdfRenderer != null) { bim = pdfRenderer.renderImageWithDPI(0, 78f, ImageType.RGB); if (bim != null) { // thumbnail 200 int newHeight200 = (int) getNewHeight(bim.getWidth(), bim.getHeight(), 200); BufferedImage buff200 = resizeImage(bim, 200, newHeight200); if (buff200 != null) ImageIO.write(buff200, "jpg", new File(applicationProperties.getDocumentWithSubfolderRootPath() + File.separator + jobNumber + File.separator + jobNumber + "_200.jpg")); // thumbnail 100 int newHeight100 = (int) getNewHeight(bim.getWidth(), bim.getHeight(), 100); BufferedImage buff100 = resizeImage(bim, 100, newHeight100); if (buff100 != null) ImageIO.write(buff100, "jpg", new File(applicationProperties.getDocumentWithSubfolderRootPath() + File.separator + jobNumber + File.separator + jobNumber + "_100.jpg")); } else { log.error("Thumbnail creation, Bitmap is null. Jobnumber: " + jobNumber); } } } else log.error("Thumbnail creation, failed to load PDF. Jobnumber: " + jobNumber); } catch (IOException io) { log.error("Thumbnail creation, IoException while loading PDF. Jobnumber: " + jobNumber, io.getMessage()); } catch (Exception e) { log.error("Failded to create thumbnails. Jobnumber: " + jobNumber, e.getMessage()); } finally { try { if (documentPDF != null) documentPDF.close(); if (bim != null) { bim.flush(); bim = null; } pdfRenderer = null; } catch (IOException e) { log.error("Error while empty the variables after thumbnails creation." + e.getMessage()); } } } else { log.info("Current file is not a PDF"); } } catch (Exception e) { log.error("Failded to create thumbnails. Jobnumber: " + jobNumber, e); } } } catch (Exception e) { log.error("createThumbnailForPDF something went wrong during thumbnails creation.", e.getMessage()); } } I think that the code is pretty much correct. So the only solution is to increase the memory of the JVM? Regards, Paolo On 2016/08/28 11:30:43, Tilman Hausherr <thaush...@t-online.de> wrote: > Am 28.08.2016 um 10:53 schrieb or...@beeriprint.co.il: > > looks like MemoryUsageSetting.setupTempFileOnly() has no affect ? > > do I use it incorrectlly ? > > You're using it correctly. The solution is below: > > > > > ** I can overcome this problem with -Xmx1500m but had to increase my > > physical memory.. , and.., I have much bigger files (250000 pages) > > > Additionally, if you're doing rendering, take care not to keep the > result images in memory. > > > Tilman > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org > For additional commands, e-mail: users-h...@pdfbox.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org For additional commands, e-mail: users-h...@pdfbox.apache.org