I have a small utility that downloads available PDF files from an S3 bucket and then prints the file to an Afinia L801 label printer. I use PDDocument.load to load the file. Get a PrinterJob, set a PrintService on the job, create a PDFPageable on the document, set the pageable on the job, then call job.print(). Most of the time it works with no problem, but every now and then we will see a print problem such as the bottom of an image will be printed, but then the top part of the previous image will be printed, then a gap, and then the bottom of the current image again. The next image prints fine. Opening the file in Adobe Reader looks fine.
I am using pdfbox 2.0.24. The PDF file is about 24m, but I am using 1G memory for the JVM. I'm not sure where the problem may be, so any suggestions on how to go about debugging would be appreciated. I've included a code snippet and some output logging in case I am doing something incorrectly. try ( PDDocument document = PDDocument.load( file ) ) { StopWatch timer = StopWatch.begin(); logger_.info( "PDDocument loaded" ); for (int i = 0; i < document.getNumberOfPages(); i++) { PDPage page = document.getPage( i ); PDRectangle mediaBox = page.getMediaBox(); // https://stackoverflow.com/questions/20904191/pdfbox-find-page-dimensions/20905166 logger_.info( String.format( "Page %s mediaBox: %s, %s x %s", i + 1, mediaBox, mediaBox.getHeight() / 72, mediaBox.getWidth() / 72 ) ); } // Get the PrintService if not already available. if ( printService == null ) { printService = choosePrinter(); if ( printService == null ) { logger_.log( Level.SEVERE, "A printer is required to be selected!" ); throw new RuntimeException( "A printer is required to be selected!" ); } } PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintService( printService ); PDFPageable pageable = new PDFPageable( document ); System.setProperty( "sun.java2d.cmm", "sun.java2d.cmm.kcms.KcmsServiceProvider" ); // https://pdfbox.apache.org/2.0/migration.html#pdf-printing job.setPageable( pageable ); logger_.info( String.format( "Print started : %s", file ) ); logger_.info( String.format( "Printer: %s, file: %s", printService.getName(), file ) ); job.print(); logger_.info( String.format( "Print complete : %s, duration %s", file, timer ) ); return true; } catch ( Throwable e ) { logger_.log( Level.SEVERE, String.format( "Print failed: %s", file ), e ); return false; } [2022-01-19 09:28:49] (PrintManager) INFO: Task-6260 Started [2022-01-19 09:28:51] (PrintManager) INFO: GET https://app.domain/resource/printqueue/next?queue=Printcenter/PrintQueue_4 [200] [2022-01-19 09:28:55] (PrintManager) INFO: Downloaded file: C:\Users\Print\Printcenter\PrintQueue_4\220119152822-FILE_NAME.pdf [2022-01-19 09:28:55] (PrintManager) INFO: POST https://app.domain/resource/printqueue/staged/3a7065a7-4658-41af-a555-2f738302fd64 [200] [2022-01-19 09:28:55] (PrintManager) INFO: [3a7065a7-4658-41af-a555-2f738302fd64] 220119152822-FILE_NAME.pdf updated to staged [2022-01-19 09:28:55] (PrintManager) INFO: PDDocument loaded [2022-01-19 09:28:55] (PrintManager) INFO: Page 1 mediaBox: [0.0,0.0,3412.8,540.0], 7.5 x 47.4 [2022-01-19 09:28:55] (PrintManager) INFO: Page 2 mediaBox: [0.0,0.0,3412.8,540.0], 7.5 x 47.4 [2022-01-19 09:28:55] (PrintManager) INFO: Page 3 mediaBox: [0.0,0.0,2556.0,540.0], 7.5 x 35.5 [2022-01-19 09:28:55] (PrintManager) INFO: Page 4 mediaBox: [0.0,0.0,2556.0,540.0], 7.5 x 35.5 [2022-01-19 09:28:55] (PrintManager) INFO: Page 5 mediaBox: [0.0,0.0,2556.0,540.0], 7.5 x 35.5 [2022-01-19 09:28:55] (PrintManager) INFO: Page 6 mediaBox: [0.0,0.0,2556.0,540.0], 7.5 x 35.5 [2022-01-19 09:28:55] (PrintManager) INFO: Page 7 mediaBox: [0.0,0.0,2556.0,540.0], 7.5 x 35.5 [2022-01-19 09:28:55] (PrintManager) INFO: Page 8 mediaBox: [0.0,0.0,1692.0,540.0], 7.5 x 23.5 [2022-01-19 09:28:55] (PrintManager) INFO: Page 9 mediaBox: [0.0,0.0,1116.0,540.0], 7.5 x 15.5 [2022-01-19 09:28:55] (PrintManager) INFO: Page 10 mediaBox: [0.0,0.0,1116.0,540.0], 7.5 x 15.5 [2022-01-19 09:28:55] (PrintManager) INFO: Print started : C:\Users\Print\Printcenter\PrintQueue_4\220119152822-FILE_NAME.pdf [2022-01-19 09:28:55] (PrintManager) INFO: Printer: Afinia L801 4, file: C:\Users\Print\Printcenter\PrintQueue_4\220119152822-FILE_NAME.pdf [2022-01-19 09:29:16] (PrintManager) INFO: Print complete : C:\Users\Print\Printcenter\PrintQueue_4\220119152822-FILE_NAME.pdf, duration 00:00:20,579 [2022-01-19 09:29:16] (PrintManager) INFO: Deleted: C:\Users\Print\Printcenter\PrintQueue_4\220119152822-FILE_NAME.pdf [2022-01-19 09:29:16] (PrintManager) INFO: POST https://app.domain/resource/printqueue/printed/3a7065a7-4658-41af-a555-2f738302fd64 [200] [2022-01-19 09:29:16] (PrintManager) INFO: [3a7065a7-4658-41af-a555-2f738302fd64] 220119152822-FILE_NAME.pdf updated to printed [2022-01-19 09:29:16] (PrintManager) INFO: Processed file 220119152822-FILE_NAME.pdf, duration 00:00:26,923 [2022-01-19 09:29:16] (PrintManager) INFO: Task-6260 Finished -- Chris Stillwell