[ 
https://issues.apache.org/jira/browse/PDFBOX-3453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15406387#comment-15406387
 ] 

John Hewson commented on PDFBOX-3453:
-------------------------------------

To explain this one a little further: Pageable and Printable have no knowledge 
of the the PrinterJob which will eventually print them. It's not possible for 
PrintRequestAttribute to affect their behaviour - hence this not being a PDFBox 
issue.

Java's printing APIs are something of a dark art and I've personally 
encountered many, many bugs. PrintRequestAttributes are essentially the 
settings you'd find in the system "print" dialog and are passed along to the 
print driver - Java does not implement them. 

One complicating factor is that Java printing exposes pieces native 
functionality from the underlying systems, for example you might have a CUPS 
driver which can take PostScript input, or PNG input, or even PDF input - and 
the print driver will handle these formats natively. Java calls these 
{{DocFlavor}}. Printing to a Graphics2D via a Pageable results in a DocFlavor 
of {{DocFlavor.SERVICE_FORMATTED.PAGEABLE}}. So you might see different results 
with various PrintRequestAttributes depending on what exactly you're printing. 
You can switch out PDFPrintable for this TestPrintable which prints to a 
Graphics2D in the same manner as PDFBox. I'd expect you to have the same 
printing problems:

{code}
public static class TestPrintable implements Printable
{
    @Override
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
        g.setColor(Color.RED);
        g.drawRect((int)pageFormat.getImageableX(), 
(int)pageFormat.getImageableY(),
                   (int)pageFormat.getImageableWidth() -1, 
(int)pageFormat.getImageableHeight() -1);
        return PAGE_EXISTS;
    }
}
{code}


> PDFPrintable plus PrintRequestAttributeSet breaks page size
> -----------------------------------------------------------
>
>                 Key: PDFBOX-3453
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3453
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 2.0.0
>         Environment: Java 8 u77, MacOS 10.11
>            Reporter: Tres Finocchiaro
>            Priority: Critical
>
> 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.
> {code}
>     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);
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to