代码之家  ›  专栏  ›  技术社区  ›  zinon

XHTML渲染生成空pdf文件

  •  0
  • zinon  · 技术社区  · 7 年前

    ITextRenderer() 方法将xhtml代码转换为pdf格式 java .

    这是我的代码:

    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocumentFromString(XHTML.toString());
    
    renderer.layout();
    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
        renderer.createPDF(baos);
    } catch (DocumentException e) {
        baos.close();
        setErrorMessage(response, 500, "Internal Server Error", "Could not create the PDF version of the patient summary.");
        return;
    } 
    
     //convert PDF to base64
     String base64PDF = Base64.encodeBytes(baos.toByteArray());
     baos.close();  
    

    我的 XMTML.toString() 包含以下内容:

     <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
    <style>
    *{
      font-family: Arial;
    }
    table {
        width:100%;
    }
    table, th, td {
        border: 1px solid black;
        border-collapse: collapse;
    }
    th, td {
        padding: 5px;
        text-align: left;
    }
    table th    {
        background-color: #77f;
        color: white;
    }
    
    
    </style>
    </head>
    <body><h1>Patient Summary</h1><hr></hr><table><thead><tr><th colspan="2">Demographics</th></tr></thead><tbody><tr><td>Full Name</td><td>George Georgiou</td></tr><tr><td>Date of 
    Birth</td><td>1990-01-01</td></tr><tr><td>Gender</td><td>Male</td></tr><tr><td>Address</td><td>31 Agiou Marona, 1010, Lefkosia, 
    CY</td></tr></tbody></table><h3>Allergies</h3><table><thead><tr><th>Reaction Type</th><th>Clinical Manifestation</th><th>Agent</th><th>Onset Date</th></tr></thead><tbody><tr 
    ID="allergy.1"><td ID="allergy.1.type">Panadol</td><td ID="allergy.1.manifestation">Dyspnoea</td><td ID="allergy.1.agent">Penicillamine and similar agents</td><td 
    ID="allergy.1.onset">2017-07-04</td></tr></tbody></table>
    

    1 回复  |  直到 7 年前
        1
  •  0
  •   zinon    7 年前

    我找到了解决办法。

    我的 xhtml 文件应包含 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <title> 部分

    xhtml

    <!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "DTD/xhtml1-strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <title>Patient Summary PDF</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
    {
      font-family: Arial;
    }
    table {
        width:100%;
    }
    table, th, td {
        border: 1px solid black;
        border-collapse: collapse;
    }
    th, td {
        padding: 5px;
        text-align: left;
    }
    table th    {
        background-color: #77f;
        color: white;
    }
    </style>
    </head>
    <body><h1>Patient Summary</h1><table><thead><tr><th colspan="2">Demographics</th></tr></thead><tbody><tr><td>Full Name</td><td>George Georgiou</td></tr><tr><td>Date of Birth</td><td>1990-01-01</td></tr><tr><td>Gender</td><td>Male</td></tr><tr><td>Address</td><td>31 Agiou Marona, 1010, Lefkosia, CY</td></tr></tbody></table><h3>Allergies</h3><table><thead><tr><th>Reaction Type</th><th>Clinical Manifestation</th><th>Agent</th><th>Onset Date</th></tr></thead><tbody><tr ID="allergy.1"><td ID="allergy.1.type">Panadol</td><td ID="allergy.1.manifestation">Dyspnoea</td><td ID="allergy.1.agent">Penicillamine and similar agents</td><td ID="allergy.1.onset">2017-07-04</td></tr></tbody></table></body></html>
    

    我不得不多加三个 jar 文件:(a) core-renderer.jar ,(b) core-renderer-minimal.jar xml-apis-xerces-2.9.1.jar

    重要的是要提及所有这些工作,只有 iText-2.0.8.jar 文件

    import com.lowagie.text.DocumentException; import org.xhtmlrenderer.pdf.ITextRenderer;