itext将xhtml转换为pdf

时间:2012-06-07 20:18:07

标签: java pdf xhtml itext

我有一个包含文本字段和复选框的XHTML文件;当我试图使用ITextRenderer将我的xhtml转换为pdf时; iText正在删除表单字段(如pdf中的复选框和文本框)。

我的代码看起来

ITextRenderer renderer = new ITextRenderer ();
renderer.setDocument(new File("input.xhtml").toURI().toURL.toString());
renderer.layout();
renderer.createPDF("outputstream");

有些人可以使用iText提供示例代码片段来处理上述情况;我使用的是iText 5.1.3版本。

我的XHTML看起来像

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <title>FULL</title>
      <style media="screen" type="text/css">
                    fieldset table { width:98%;border: 1px groove; margin:0 auto; }
                    fieldset table  tr { border: 1px groove; }
                    fieldset table  th { border: 1px groove; }
                    fieldset table  td { border: 1px groove; }
                    fieldset &gt; table [id=inspectionStatus] thead {border: 1px groove;background:#446BEC;text-align:center;}
                    fieldset &gt; table [id=inspectionStatus]  tr { border: 1px groove; }
                    fieldset &gt; table [id=inspectionStatus]  th { border: 1px groove; }
                    fieldset &gt; table [id=inspectionStatus]  td { border: 1px groove; }
                    fieldset table thead {border: 1px groove;background:#446BEC;text-align:center;}
                    fieldset table tbody tr th {text-align:left;background:#C6DEFF;width:28%}
                    fieldset table tbody tr td {text-align:center} [type=text] {margin-left:5%;} *[type=text]{width:90%;} 
                    fieldset table tbody tr td [type=checkbox] {margin:0 auto;} *[type=checkbox]{width:90%;} 
                    fieldset table caption {font-weight:bold;color:#0840F8;}
                    fieldset {width:98%;font-weight:bold;border:1px solid #446BEC;}
                </style>
   </head>
   <body>
     <fieldset id="PersonTable">
         <legend>Person Information</legend>
         <table id="PersonDisplay">
            <thead>
               <tr>
                  <th>Identifier</th>
                  <th>Name</th>
                  <th>Comment</th>
                  <th>Pass</th>
                  <th>Fail</th>
               </tr>
            </thead>
            <tbody>
               <tr>
                  <td>1234</td>
                  <td> William Jones</td>
                  <td>
                     <input type="text"/>
                  </td>
                  <td>
                     <input type="checkbox"/>
                  </td>
                  <td>
                     <input type="checkbox"/>
                  </td>
               </tr>
            </tbody>
         </table>
      </fieldset>
   </body>
</html>

1 个答案:

答案 0 :(得分:3)

最简单的方法是使用pdfHTML。 它是一个iText7插件,可将HTML5(+ CSS3)转换为pdf语法。

代码很简单:

    HtmlConverter.convertToPdf(
        "<b>This text should be written in bold.</b>", // html to be converted
        new PdfWriter(
            new File("C://users/lsamudrala/output.pdf")  // destination file
        )
    );

要了解详情,请转到http://itextpdf.com/itext7/pdfHTML