Печать PDF с PDFBox никогда не заканчивается - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь напечатать файл, который я считаю в альбомном режиме (его размер 29,7 x 27 см), но моя программа перестает работать, когда я отправляю job.print ().Вот мой код:

PDDocument documentAllegato = PDDocument.load(new File(percorsoDaStampare +"\\"+ fileInDaStampare[k].getName()));

System.out.println("oo");
job.setPageable(new PDFPageable(documentAllegato));
System.out.println("pp");
Attribute[] attributeArray2 = attributes.toArray();
for (Attribute a : attributeArray2) {
    //System.out.println(a.getName() + ": " + a);
}
System.out.println("qq");
Attribute copies2 = attributes.get(Copies.class);
Attribute media2 = attributes.get(Media.class);
Attribute mediaPrintableArea2 = attributes.get(MediaPrintableArea.class);
Attribute mediaTray2 = attributes.get(MediaTray.class);
Attribute orientationRequested2 = attributes.get(OrientationRequested.class);
Attribute sides2 = attributes.get(Sides.class);
System.out.println("rr");
attributes.remove(Sides.class);
attributes.add(Sides.DUPLEX);
//System.out.println("PRIMA DEL PRINT");
System.out.println("ss");

job.print();

System.out.println("tt");
documentAllegato.close();   //chiudo il documento
//System.out.println("Ho finito di stampare la copia cortesia");
System.out.println("uu");
//sposto la copia di cortesia in ARCHIVIATI
File dirArchiviati = new File(pathArchiviati);
File fileCortesiaDaArch= new File(""+fileInDaStampare[k]);
System.out.println("vv");
FileUtils.copyFileToDirectory(fileCortesiaDaArch, dirArchiviati);
//System.out.println("fileDaArch "+ fileCortesiaDaArch);
System.out.println("zz");
fileCortesiaDaArch.delete();
System.out.println("FINE ALLEGATO");

Я пытался перевести его в портретный режим, изменив некоторые вещи, но не смог его получить.Любой совет?

1 Ответ

0 голосов
/ 14 февраля 2019

Я ждал более часа, пока он напечатал ... Это известная проблема, обсуждаемая в PDFBOX-3046 , а также здесь и здесь и здесь и здесь : печать файлов с прозрачными пленками или рисунками занимает много времени.Но ваш побивает рекорд.Обходной путь - передать значение dpi в PDFPageable, которое приказывает сначала отобразить изображение, а затем напечатать:

job.setPageable(new PDFPageable(documentAllegato, Orientation.AUTO, false, 300));

300 - это значение dpi.Чем больше это значение, тем больше будут ваши файлы буфера и будет использоваться больше памяти.

...