У меня есть рабочий класс, который создает и сохраняет файл PDF для пользователя, реализуя Printable и используя PrinterJob для создания PDF в заданном месте. Это отлично работает в системе Windows, но у меня проблемы с этим в системе Linux.
Я пытаюсь автоматизировать создание этих PDF-файлов в системе Linux следующим образом:
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable( this );
job.setPrintService( defaultPrinter );
// create a new HashPrintRequestAttributeSet
HashPrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
// set the output file as a destination
attributes.add(new Destination(new File(fileName).toURI()));
job.print(attributes);
Я установил cups-pdf в свою систему Linux и указал defaultPrinter
на этот PrintService
. Файл создается, но это не файл PDF, а файл Postscript. CUPS даже не создает для этого задания на печать, поэтому я считаю, что он просто создает файл postscript с командами принтера.
Файл Postscript начинается следующим образом:
%!PS-Adobe-3.0
%%BeginProlog
/imStr 0 def /imageSrc {currentfile /ASCII85Decode filter /RunLengthDecode filter imStr readstring pop } def
/BD {bind def} bind def
/D {def} BD
/C {curveto} BD
/L {lineto} BD
/M {moveto} BD
/R {grestore} BD
/G {gsave} BD
/N {newpath} BD
/P {closepath} BD
/EC {eoclip} BD
/WC {clip} BD
/EF {eofill} BD
/WF {fill} BD
/SG {setgray} BD
/SC {setrgbcolor} BD
...
Я знаю, что могу использовать PDFBox, чтобы нарисовать PDF самостоятельно, но весь код есть для создания файла PDF, и все это работает на windows. Можно ли получить систему linux для создания PDF-файла и сохранения его в папке с помощью PrinterJob?