Java打印html为pdf

时间:2014-01-20 08:56:29

标签: java pdf

我已经安装了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;
}

1 个答案:

答案 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。

希望它有所帮助!