Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-4740

PDFPrintable is creating incomplete/odd output for some printers

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 2.0.15, 2.0.18
    • Fix Version/s: None
    • Component/s: Rendering
    • Labels:

      Description

      We are printing PDF documents using the class "PDFPrintable", which is working fine for most documents and printers.

      Except we found a case where the bounding box of an image is seemingly clipping the contents of a following page in the printouts of certain documents:

      (The whole cropbox of the second page should have been painted red - compare attached document)

      The following code can be used to reproduce the issue:

      private static void print(PDDocument document, String printerName) throws PrinterException {
          PrinterJob printerJob = PrinterJob.getPrinterJob();
          PrintService printService = null;
          // loop through all printers
          for (PrintService deviceInterface : PrinterJob.lookupPrintServices()) {
              // get printer name
              String name = deviceInterface.getName();
      
              // is this the requested printer?
              if (name != null && name.equals(printerName)) {
                  // configure print job for the printer
                  printService = deviceInterface;
                  break;
              }
          }
          if (printService == null) {
              return;
          }
      
          printerJob.setPrintService(printService);
          // set source and execute print job.
          printerJob.setPrintable(
              new PDFPrintable(
                  document, null, false, 0, true
              )
          );
      
          // init print attribute set.
          PrintRequestAttributeSet printAttrSet = new HashPrintRequestAttributeSet();
          printAttrSet.add(new JobName(printerName + "_job", Locale.ENGLISH));
          printAttrSet.add(PrintQuality.HIGH);
      
          // do print.
          printerJob.print(printAttrSet);
      }
      

      The attached document is leading to the erroneous results, when printed via the given method. (and using the following printers)

      Some printers, which show this odd behaviour are:

      • "Adobe PDF" printer (most likely the easiest way to reproduce this issue)
      • Konica Minolta C658
      • Kyocera FS-4100DN

      We are suspecting, an compatibility issue of PCL based printer drivers and some instructions created by PDFBox.

      This behaviour can only then be seen for the following page, if it does contain certain operations. (Such as Shaders => as demonstrated in the example document)

        Attachments

        1. holdPrinter.png
          64 kB
          Christian Appl
        2. image-2020-01-15-15-01-32-976.png
          32 kB
          Christian Appl
        3. image-2020-01-16-09-13-50-730.png
          39 kB
          Christian Appl
        4. out.pdf
          15 kB
          Christian Appl

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              capSVD Christian Appl
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: