html到pdf在java中使用htmlworker

时间:2013-03-19 13:15:09

标签: java itext

我正在使用htmlworker(itext库)将html文档转换为pdf,如下所示

String path = "temp.pdf";
PdfWriter pdfWriter = null;

// create a new document
Document document = new Document();
pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(
                    path));
document.open();
HTMLWorker htmlWorker = new HTMLWorker(document);
String str = "";
StringBuilder contentBuilder = new StringBuilder();
BufferedReader in = null;
try {
    in = new BufferedReader(new FileReader("temp1.html"));

     while ((str = in.readLine()) != null) {

           contentBuilder.append(str);

    }
} catch (IOException e) {
    System.out.print("HTML file close problem:" + e.getMessage());
} finally {
    in.close();

}
String content = contentBuilder.toString();

htmlWorker.parse(new StringReader(content));

document.close();

现在我的问题是我可以使用上面的代码将html转换为pdf。 但是如果我的html页面包含 table 标记,它将创建具有相同大小的 td 。如何在生成的pdf中设置 td 标记的宽度?提前谢谢

1 个答案:

答案 0 :(得分:1)

最后我得到了解决方案:

try {

            // get Instance of the PDFWriter
            pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(
                    path));
            //pdfWriter.setPdfVersion(PdfWriter.PDF_VERSION_1_4);
            pdfWriter.setLinearPageMode();
            pdfWriter.setFullCompression();


            // document header attributes
            document.addAuthor("");
            document.addCreationDate();
            document.addProducer();
            document.addCreator("aaa");
            document.addTitle("");
            document.setPageSize(PageSize.A4);

            // open document
            document.open();

            HTMLWorker htmlWorker = new HTMLWorker(document);

            String str = "";
            StringBuilder contentBuilder = new StringBuilder();
            BufferedReader in = null;

            System.out.println("Html Content :");
            try {
                in = new BufferedReader(new FileReader(
                        htmlfile));

                while ((str = in.readLine()) != null) {

                    contentBuilder.append(str);
                    System.out.println(str);
                }
            } catch (IOException e) {
                System.out.print("HTML file close problem:" + e.getMessage());
            } finally {

                in.close();
                System.gc();
            }
            String content = contentBuilder.toString();

            htmlWorker.parse(new StringReader(content));

            document.close();

            pdfWriter.close();


        }

        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
相关问题