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

PDFPrintable plus PrintRequestAttributeSet breaks page size

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Not A Problem
    • 2.0.0
    • None
    • None
    • None
    • Java 8 u77, MacOS 10.11

    Description

      On MacOS, when supplying custom attributes to the print interface, it has the reverse effect and ignores the attributes specified, including the page size.

      In the below example, the page size will default to US Letter (8.5 x 11) despite being specified as 4 x 6.

      A temporary workaround is to not specify any PrintRequestAttributes, downside being you lose the option for collation, copies, chromacity, print tray, etc.

      • This bug is NOT reproducible on Windows.
      • This bug is NOT reproducible on Mac when using a non-PDFBOX library to print.
      • This bug only occurs when using PDFBOX and MacOS and custom print attributes are supplied to the print job.
          public static void main(String[] args) throws Exception {
              //test data
              Paper paper = new Paper();
              paper.setSize(4 * 72, 6 * 72); //4x6in
              paper.setImageableArea(0, 0, 4 * 72, 6 * 72);
      
              PageFormat pf = new PageFormat();
              pf.setPaper(paper);
      
              PDDocument doc = PDDocument.load(new File(args[0]));
              Book book = new Book();
              book.append(new PDFPrintable(doc, Scaling.SCALE_TO_FIT, false, 0, false), pf);
      
      
              //No print attributes - Works
              PrinterJob jobPlain = PrinterJob.getPrinterJob();
              jobPlain.setPageable(book);
              jobPlain.print();
      
              //With print attributes - Fails, resets paper size to system default & attributes are ignored
              PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
              attributes.add(Chromaticity.MONOCHROME);
      
              PrinterJob jobAttr = PrinterJob.getPrinterJob();
              jobAttr.setPageable(book);
              jobAttr.print(attributes);
          }
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            tresf Tres Finocchiaro
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: