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(" "," ");
return fixedTags;
}