java - HTML to PDF conversion, Base64 image tag is not displaying image in PDF
问题描述
Trying to convert html content to pdf in java using dependencies core renderer.jar, itext-2.0.8.jar and itextpdf-5.5.13.1.jar.I'm not getting image content but other contents of HTML can able to view in PDF.
The html file contains an image tag with base64 encoded
<img style = "width = 10px; height = 10px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAC3CAMAAAAGjUrGAAAAk1BMV...g==" />
creating pdf using java function which accepts the html content in string buffer as input and creates the PDF file.
public void createReport(StringBuffer sb) {
try {
String tempfile = outputPath + File.separator + "outputPdf.pdf";
PrintWriter writer = new PrintWriter(inputPath, StandardCharsets.UTF_8);
writer.println(sb.toString());
writer.close();
String url = new File(inputPath).toURI().toURL().toString();
OutputStream os = new FileOutputStream(new File(tempfile));
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver resolver = renderer.getFontResolver();
resolver.addFont("C:\\Users\\DELL\\AppData\\Local\\Microsoft\\Windows\\Fonts\\ANGSA.ttf",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
解决方案
This works for me with flying-saucer 9.1.20 and iText 2.1.7. You should update your dependencies and/or check your base64 string.
The jar was added through maven:
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.1.20</version>
</dependency>
Maven dependencies
[INFO] ------------------------< org.example:SO-temp >------------------------
[INFO] Building SO-temp 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ SO-temp ---
[INFO]
[INFO] The following files have been resolved:
[INFO] org.bouncycastle:bctsp-jdk14:jar:1.46:compile
[INFO] org.xhtmlrenderer:flying-saucer-pdf:jar:9.1.20:compile
[INFO] org.xhtmlrenderer:flying-saucer-core:jar:9.1.20:compile
[INFO] com.lowagie:itext:jar:2.1.7:compile
[INFO] org.bouncycastle:bcmail-jdk14:jar:1.64:compile
[INFO] org.bouncycastle:bcpkix-jdk14:jar:1.64:compile
[INFO] org.bouncycastle:bcprov-jdk14:jar:1.64:compile
HTML Part
<html>
<head>
</head>
<body>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAUCAYAAACJfM0wAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kHFQ83FkONzqIAAAPVSURBVDjLhZVfiFVVFMZ/a58/994Z/0zqWNRLZVReH7LGyLDymhIE0dvpqZGguBGDBNJLD8HxpYgES4UYaUYdLewMPQQ1FIZXkPAhgwyu9CAImY3BiIbjjOM953w9nHOvGpFnsznrnL33t76199rfQsIAk0AJIMGUQEK0EKUtUKsYrgskIcr/3TllQ1OQEBWDAtr1YkILFIMa9L7bpdNuq5drRIwQiaAp0DlIROFNpyBSyfZfXSpAb7IRKEJNiGkgYUjGicrDKPKE/GIeQhJJb2lyGzO1bjJFDYYvltFJnlDwbsIge6s/MXqfODX0lCT2twCdKpnG6hE9LfjoNJzvhVsYwxdBTUzIR6pycs0GDi+/wJgvJvpU3cdGpKriEpMkuhk6MSLqglldWGFHXSduFAVLjrKePSsvMLZMfOYyxvvTJyZYzah8CQARqbeHVSF/vxhIRE0olMqDagKSIVWXHGU9nyz/k3FPjPcrHEMc6ntDooLk0AsFYCRoF+ABeuZBDq74mt393/MFzws5xVhMo9iCk2s2sGflBcY9MYE4sFRM9L8m5GJkktAoOIDERP0s3mbZSg79+g2duZepho2+jM0mzJZtC2M1PPt2YC2//D7JwMy95MENMh9m//6Q4WtHAG+jTMcxeFP4JpwMTT9E5djHi59kIHiEIM3pEM5dqzwt2+HB7mwwtLUzbtEUXj7Igp/hwoD5u8ZeHJl+f8q0AGiE4mkDDrbrFZl7DjIueauodBzZgsPLoOqv2qXYs2PhYzN5/3f4GqQ2B2EIndrnemt6ZMo0vw8wFYDt0nY6vkuTKDtLpMqqK22uz+XkEmRwfWFw+96Bdzgb/kBgi9E1yJZCHhxR86/m5BlkyY58WiZhmAkzIQwTCUYEyZmQq+uG6Nw4gZffIFxWozMLXiBS5XgLHm5RSs0m9enlrTuON4i1k4R1afQz2Lri0gAZZkWOmkCG2QerN3LPH8dI5zNU86kJLIWFACoVyPJEP15+lbcxqyuXkRIbxEXiWvFCVmbF/ZgBxuvrfyO1jMA5PEEKzFZyLMyZDw9v23p5KxUca5Rq2hzQAwVMZsgMAB/gWYAh81qDzGzKqlcI0hVU+uDq7HX6vCqd9D1tyXdiygzLWzK3CXWQEQP1M1hUR0ZSXjmDuN0VIlyM3KMHGGJ86XkODoh97hIjd29GVBTjhByRPCRfXXmV/rP3pLFRyJ01hSdR5csHtvDV44vQS96QsNFCfKzUlKI4xP8DLAmSiJYAxYVunAMRgZLeFvYWxI1btFp3YFyWGNS6vczoVoEvSoq6Z3UH8H8ADlDIyRt9lL4AAAAASUVORK5CYII=" />
</body>
</html>
推荐阅读
- laravel - Vue 在从后端 Laravel 接收数据时更改变量值
- flutter - Flutter SocketException:主机查找失败:'xxxxxx.local'
- android - 为什么 Android 应用在某些手机中看起来不一样
- c - GNU C 编译器破坏未定义的行为
- node.js - 在将数据从无服务器节点 js 保存到 mongoDB 时,我收到一个错误:-ObjectParameterError: Para obj" to Document() must be an object,
- firebase - 如何重写到 Firebase 托管
- python - 快约 ln
- python - 从文件创建字典
- python - 如何在Python中将装饰器分配给父类的每个子类的方法
- javascript - HTML 使用带有 onkeydown 的键盘快捷键播放音频