So I took another look at this and I think there’s a bug in PDFPrinter where the attributes are being discarded after showing the print dialog.
I’ve made a commit in PDFBOX-2795 which hopefully fixes it, you’ll need to fetch the latest trunk via SVN. — John > On 12 May 2015, at 00:13, Gregor Kovač <[email protected]> wrote: > > Hi! > > That is a bit strange, since using lpr command work OK for the same printer. > I decided to use SumatraPDF.exe on Windows and lpr on Linux for printing > multiple copies. > > Thanks for your help guys. > > Best regards, > Kovi > > 2015-05-12 0:54 GMT+02:00 John Hewson <[email protected]>: > >> Your code looks fine, I suspect that as you say, the problem is with >> Java’s interaction with your printer driver, especially as you’re having >> the same problem with other libraries. >> >> — John >> >>> On 8 May 2015, at 17:00, Gregor Kovač <[email protected]> wrote: >>> >>> Hi! >>> >>> John, maybe it was, but I still get only one page printed out. >>> I'm using this code: >>> private static void printWithPDFBox2(File pdfFile, int copies) { >>> PDDocument document = null; >>> >>> try { >>> document = PDDocument.load(pdfFile); >>> >>> PrinterJob printJob = PrinterJob.getPrinterJob(); >>> printJob.setJobName(pdfFile.getName()); >>> >>> printJob.setPrintService(PrintServiceLookup.lookupDefaultPrintService()); >>> >>> printJob.setCopies(copies); >>> HashPrintRequestAttributeSet printRequestAttributeSet = new >>> HashPrintRequestAttributeSet(); >>> printRequestAttributeSet.add(new Copies(copies)); >>> printRequestAttributeSet.add(SheetCollate.COLLATED); >>> PDFPrinter printer = new PDFPrinter(document, >>> Scaling.ACTUAL_SIZE, Orientation.AUTO); >>> printer.print(printJob, printRequestAttributeSet); >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } finally { >>> if (document != null) { >>> try { >>> document.close(); >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } >>> } >>> } >>> } >>> >>> When the print dialog is displayed I see field "Number of copies:" set >> to 5 >>> and "Collate" is checked, but, again, only one page is printed out. >>> >>> I've tried with Java products for working with PDF that cost thousands >> od $ >>> and also only get one page out. It is something with my printer or >>> something in Java. >>> I'm working on Linux, so I'm using cups-pdf package that provides a PDF >>> printer. So, I'm printing PDF files via Java and I get out a PDF file. :) >>> If I use the code above, I get a PDF file with one page, but if I do: >> "lpr >>> -#5 -o Collate=True example.pdf" I get a PDF with 5 pages, becuase >>> example.pdf has only one page. >>> >>> Any ideas why I'm getting one page PDF in Java? >>> >>> Best regards, >>> Kovi >>> >>> 2015-05-08 23:40 GMT+02:00 John Hewson <[email protected]>: >>> >>>> This has been fixed in 2.0: >>>> >>>> https://issues.apache.org/jira/browse/PDFBOX-2094 < >>>> https://issues.apache.org/jira/browse/PDFBOX-2094> >>>> >>>> — John >>>> >>>>> On 7 May 2015, at 16:04, Gregor Kovač <[email protected]> wrote: >>>>> >>>>> Hi! >>>>> >>>>> I'm using PDFBox 1.8.9 and using this method to print a PDF file: >>>>> >>>>> private static void printWithPDFBox(File pdfFile, int copies) { >>>>> PDDocument document = null; >>>>> >>>>> try { >>>>> document = PDDocument.load(pdfFile); >>>>> >>>>> PrintService printService = >>>>> PrintServiceLookup.lookupDefaultPrintService(); >>>>> PrinterJob printJob = PrinterJob.getPrinterJob(); >>>>> printJob.setJobName(pdfFile.getName()); >>>>> printJob.setPrintService(printService); >>>>> printJob.setCopies(copies); >>>>> >>>>> HashPrintRequestAttributeSet printRequestAttributeSet = new >>>>> HashPrintRequestAttributeSet(); >>>>> printRequestAttributeSet.add(new Copies(copies)); >>>>> printRequestAttributeSet.add(SheetCollate.COLLATED); >>>>> printJob.setPageable(new PDPageable(document, printJob)); >>>>> printJob.print(printRequestAttributeSet); >>>>> } catch (Exception e) { >>>>> e.printStackTrace(); >>>>> } finally { >>>>> if (document != null) { >>>>> try { >>>>> document.close(); >>>>> } catch (IOException e) { >>>>> e.printStackTrace(); >>>>> } >>>>> } >>>>> } >>>>> } >>>>> >>>>> >>>>> I have a test file with one page and when I call this method with >> copies >>>>> greater than 1 I only get one page printed out. >>>>> >>>>> Am I doing something wrong? >>>>> >>>>> Best regards, >>>>> Kovi >>>>> >>>>> -- >>>>> -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ >>>>> | In A World Without Fences Who Needs Gates? | >>>>> | Experience Linux. | >>>>> -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ >>>> >>>> >>> >>> >>> -- >>> -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ >>> | In A World Without Fences Who Needs Gates? | >>> | Experience Linux. | >>> -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ >> >> > > > -- > -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ > | In A World Without Fences Who Needs Gates? | > | Experience Linux. | > -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~

