4

Jsoup.parse を使用して html を解析しています。

他のすべては素晴らしいですが、後でpdfコンバーターでこのhtmlを解析することになっています。

何らかの理由で Jsoup.parse が終了タグを削除し、pdf-parser が img 終了タグがないという例外をスローします。

Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException; 
lineNumber: 115; columnNumber: 4; The element
type "img" must be terminated by the matching end-tag "</img>"

Jsoup.parse が終了 img タグを削除しないようにするにはどうすればよいですか?

たとえば、この行:

<img src="C:\path\to\image\image.png"></img>

次のようになります。

<img src="C:\path\to\image\image.png">

同じことが起こります:

<img src="C:\path\to\image\image.png"/>

コードは次のとおりです。

private void createPdf(File file, String content) throws IOException, DocumentException {
        OutputStream os = new FileOutputStream(file);
            content = tidyUpHTML(content);
            ITextRenderer renderer = new ITextRenderer();
            renderer.setDocumentFromString(content);
            renderer.layout();
            renderer.createPDF(os);
        os.close();
    }

上記のメソッドで呼び出される tidyUpHTML メソッドは次のとおりです。

private String tidyUpHTML(String html) {
    org.jsoup.nodes.Document doc = Jsoup.parse(html);
    doc.select("a").unwrap();
    String fixedTags = doc.toString().replace("<br>", "<br />");
    fixedTags = fixedTags.replace("<hr>", "<hr />");
    fixedTags = fixedTags.replaceAll("&nbsp;","&#160;");
    return fixedTags;
}
4

1 に答える 1