1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > iText7 HTML to PDF 支持中文 支持加粗

iText7 HTML to PDF 支持中文 支持加粗

时间:2019-09-08 01:23:56

相关推荐

iText7 HTML to PDF 支持中文 支持加粗

iText7 支持中文,使用阿里巴巴普惠体免费可商用。

java

package com.starxg.itext7chinesefont;import com.itextpdf.html2pdf.ConverterProperties;import com.itextpdf.html2pdf.HtmlConverter;import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.AreaBreak;import com.itextpdf.layout.font.FontProvider;import com.itextpdf.styledxmlparser.css.media.MediaDeviceDescription;import com.itextpdf.styledxmlparser.css.media.MediaType;import mons.io.FileUtils;import mons.io.IOUtils;import mons.lang3.SystemUtils;import java.io.File;import java.io.InputStream;import java.io.OutputStream;import java.nio.charset.StandardCharsets;import java.nio.file.Files;import java.util.Objects;public class IText7ChineseFont {public static void main(String[] args) throws Exception {final File fontDir = new File(SystemUtils.getJavaIoTmpDir(), "IText7ChineseFont");if (!fontDir.exists() && !fontDir.mkdirs()) {throw new IllegalStateException();}final InputStream is = Objects.requireNonNull(IText7ChineseFont.class.getResourceAsStream("/Template.html"));final InputStream fontLight = Objects.requireNonNull(IText7ChineseFont.class.getResourceAsStream("/fonts/AlibabaPuHuiTi-2-45-Light.ttf"));final InputStream fontBold = Objects.requireNonNull(IText7ChineseFont.class.getResourceAsStream("/fonts/AlibabaPuHuiTi-2-85-Bold.ttf"));IOUtils.copy(fontLight, Files.newOutputStream(new File(fontDir, "AlibabaPuHuiTi-2-45-Light.ttf").toPath()));IOUtils.copy(fontBold, Files.newOutputStream(new File(fontDir, "AlibabaPuHuiTi-2-85-Bold.ttf").toPath()));final File file = File.createTempFile("itext-chinese-font-", ".pdf");final ConverterProperties properties = new ConverterProperties();final FontProvider fontProvider = new FontProvider();fontProvider.addDirectory(fontDir.getAbsolutePath());properties.setFontProvider(fontProvider);properties.setMediaDeviceDescription(new MediaDeviceDescription(MediaType.PRINT));try (final OutputStream os = Files.newOutputStream(file.toPath());final PdfWriter pdfWriter = new PdfWriter(os);final PdfDocument pdfDocument = new PdfDocument(pdfWriter)) {try (final Document doc = HtmlConverter.convertToDocument(IOUtils.toString(is, StandardCharsets.UTF_8), pdfDocument, properties)) {doc.add(new AreaBreak());}}System.out.println(file.getAbsolutePath());FileUtils.deleteQuietly(fontDir);}}

pom.xml

<properties><piler.source>8</piler.source><piler.target>8</piler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><itext7-core.version>7.2.1</itext7-core.version><html2pdf.version>4.0.1</html2pdf.version><commons-io.version>2.11.0</commons-io.version></properties><dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>${itext7-core.version}</version><type>pom</type></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency><dependency><groupId>mons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>html2pdf</artifactId><version>${html2pdf.version}</version></dependency></dependencies>

效果

完整代码

/starxg/itext7-chinese-font

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。