我需要从纯文本文件创建一个 pdf 文件。我认为最简单的方法是读取这些文件并将它们打印到 PDF 打印机。我的问题是,如果我打印到 pdf 打印机,结果将是一个空的 pdf 文件。如果我打印到 Microsoft XPS Document Writer,文件将以纯文本格式创建,而不是 oxps 格式。我会对两步或三步的解决方案感到满意。(例如,先转换为 xps,然后使用 ghostscript 或类似方法转换为 pdf)。我尝试了几种 pdf 打印机,例如:CutePDF、Microsoft PDF writer、Bullzip PDF。每个人的结果都是一样的。环境为Java 1.7/1.8 Win10private void print() { try { DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE; PrintRequestAttributeSet patts = new HashPrintRequestAttributeSet(); PrintService[] ps = PrintServiceLookup.lookupPrintServices(flavor, patts); if (ps.length == 0) { throw new IllegalStateException("No Printer found"); } System.out.println("Available printers: " + Arrays.asList(ps)); PrintService myService = null; for (PrintService printService : ps) { if (printService.getName().equals("Microsoft XPS Document Writer")) { // myService = printService; break; } } if (myService == null) { throw new IllegalStateException("Printer not found"); } myService.getSupportedDocFlavors(); DocPrintJob job = myService.createPrintJob(); FileInputStream fis1 = new FileInputStream("o:\\k\\t1.txt"); Doc pdfDoc = new SimpleDoc(fis1, DocFlavor.INPUT_STREAM.AUTOSENSE, null); HashPrintRequestAttributeSet pr = new HashPrintRequestAttributeSet(); pr.add(OrientationRequested.PORTRAIT); pr.add(new Copies(1)); pr.add(MediaSizeName.ISO_A4); PrintJobWatcher pjw = new PrintJobWatcher(job); job.print(pdfDoc, pr); pjw.waitForDone(); fis1.close(); } catch (PrintException ex) { Logger.getLogger(Docparser.class.getName()).log(Level.SEVERE, null, ex); } catch (Exception ex) { Logger.getLogger(Docparser.class.getName()).log(Level.SEVERE, null, ex); }}
添加回答
举报
0/150
提交
取消