我已经安装了doPDF打印机驱动程序,我想从Java中使用它来将HTML转换为PDF。
PrintService service = getPrinterByName("doPDF");
DocPrintJob printJob = service.createPrintJob();
Doc document = new SimpleDoc(conn.getInputStream(), DocFlavor.INPUT_STREAM.AUTOSENSE, null);
PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
File f = new File(new File(System.getProperty("user.home")),"out.pdf");
attr.add(new Destination(f.toURI()));
printJob.print(document, attr);
问题是,当我用任何pdf阅读器打开out.pdf时,它表示格式错误,而使用notepad ++则只显示html。
private PrintService getPrinterByName(String name) {
PrintService[] list = getPrintersList();
if (list.length > 0) {
for (PrintService service : list) {
if (service.getName().contains(name)) {
return service;
}
}
}
return null;
}
private PrintService[] getPrintersList() {
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
return services;
}
答案 0 :(得分:0)
我需要此操作无声,唯一的方法是使用OpenOffice API。任何其他方法都需要用户输入/确认。
我使用JOD Converter来实现这一目标。还有一点,我将任何文件转换为PDF(即:任何Microsoft Office文档,任何图像,任何Open Office文档,文本,HTML),然后将所有内容合并为一个PDF,页眉和页脚,包括页数,日期,用户等。这适用于Windows或Linux。
万一你不需要沉默:
public void print() {
Desktop desktop = Desktop.getDesktop();
try {
desktop.print(new File("web.html"));
} catch (IOException e) {
e.printStackTrace();
}
}
提示用户选择打印机,转到PDFCreator或doPDF。
希望它有所帮助!