pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Hewson <j...@jahewson.com>
Subject Re: PDF Printing: multiple copies
Date Tue, 12 May 2015 07:50:58 GMT
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č <kovica@gmail.com> 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 <john@jahewson.com>:
> 
>> 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č <kovica@gmail.com> 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 <john@jahewson.com>:
>>> 
>>>> 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č <kovica@gmail.com> 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.               |
> -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message