HTML模板注意事项:
1.实现将html 内容(含中文) 生成pdf
2.将现有的png格式图片 合入 pdf 中的特定位置
3.将base64 编码的图腾 合入 pdf 中的特定位置
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.11</version> </dependency> <!-- https://mvnrepository.com/artifact/com.itextpdf.tool/xmlworker --> <dependency> <groupId>com.itextpdf.tool</groupId> <artifactId>xmlworker</artifactId> <version>5.5.11</version> </dependency> <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
package com.sinosoft.cloudclaim.utils; import com.itextpdf.text.*;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfWriter;import com.itextpdf.tool.xml.XMLWorkerHelper;import com.sinosoft.cloudclaim.investigation.utility.Base64; import java.io.ByteArrayInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.nio.charset.Charset; /** * @Description: * @author: YaoGX * @version: 1.0.0 * @createTime: 2021/7/27 19:46 */public class HtmlToPDF { private static final String FONT = "D:\\simhei.ttf"; public static void main(String[] args) { new HtmlToPDF().createPdf(); } /* * 生成PDF * */ public void createPdf() { try {// BaseFont bfChinese = BaseFont.createFont(); //直接引用 下载好的字体文件// BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); BaseFont bfChinese = BaseFont.createFont("D:\\simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font font = new Font(bfChinese, 12, Font.NORMAL); Document document = new Document(PageSize.A4, 10, 10, 10, 10); PdfWriter mPdfWriter = PdfWriter.getInstance(document, new FileOutputStream("D://htmltest.pdf")); document.open(); document.add(new Paragraph("创建pdf文件.支持中文......创建pdf文件.支持中文创建pdf文件. 支持中文创建pdf文件. 支持中文创建pdf文件. 支持中文创建pdf文件. 支持中文", font)); String s = getHtml();//html 标签内容 ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes()); XMLWorkerHelper.getInstance().parseXHtml(mPdfWriter, document, is, Charset.forName("UTF-8"), new AsianFontProvider()); //将图片合成pdf Image image = Image.getInstance("D:\\data\\01.jpg"); image.scalePercent(10);// 控制图片大小 image.setAbsolutePosition(200, 500); document.add(image); //base64 编码的图片类型 Image image2 = Image.getInstance(Base64.decode(TESTEVSCHOP)); image2.scalePercent(20);// 控制图片大小 image2.setAbsolutePosition(400, 500); document.add(image2); document.close(); mPdfWriter.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * HTML 脚本 * @author: YaoGX * @Date: 2021/7/28 0:39 */ public static String getHtml() { StringBuffer html = new StringBuffer(); html.append("<div style='color:green;font-size:20px;'>你好世界!hello world !</div>"); html.append("<span style='color:red'>what are you 弄啥咧!</span>"); html.append("<h1>标题</h1>"); html.append("<table>"); html.append("<tr>"); html.append("<th>序号</th>"); html.append("<th>用户名</th>"); html.append("<th>性别</th>"); html.append("</tr>"); html.append("<tr>"); html.append("<td>1</td>"); html.append("<td>fengxing</td>"); html.append("<td>男</td>"); html.append("</tr>"); html.append("<tr>"); html.append("<td>2</td>"); html.append("<td>admin</td>"); html.append("<td>女</td>"); html.append("</tr>"); html.append("</table>"); return html.toString(); } /** * * @author: * @Date: 2021/7/28 0:39 */ public static final String TESTEVSCHOP = "iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAAA3NCSVQICAjb4U/gAAAABlBMVEX///+ZmZmOUEqyAAAAAnRSTlMA/1uRIrUAAAAJcEhZcwAACusAAArrAYKLDVoAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDkvMjAvMTIGkKG+AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAAB1JREFUCJljONjA8LiBoZyBwY6BQQZMAtlAkYMNAF1fBs/zPvcnAAAAAElFTkSuQmCC"; }
package com.sinosoft.cloudclaim.utils; import com.itextpdf.text.BaseColor;import com.itextpdf.text.Font;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.tool.xml.XMLWorkerFontProvider; public class AsianFontProvider extends XMLWorkerFontProvider { @Override public Font getFont(final String fontname, final String encoding, final boolean embedded, final float size, final int style, final BaseColor color) { BaseFont bfChinese = null; try { bfChinese = BaseFont.createFont("D:\\simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); } catch (Exception e) { e.printStackTrace(); } Font font = new Font(bfChinese, size, style, color); font.setColor(color); return font; }}
5、需要在本地存放 字体 文件,本例使用的是 黑体字。
若对你有所帮助,请评论或点赞!
原网址: 访问
创建于: 2023-08-08 18:19:41
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论