java8如何通过poi+text将word转为pdf
目录
- Java8通过poi+text将word转为pdf
- 1、jar包
- 2、代码util类
- 3、word格式
- 4、导出pdf样式
- 总结
java8通过poi+text将word转为pdf
1、jar包
<dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>org.apache.poi.xwpf.converter.pdf</artifactId> <version>1.0.6</version> </dependency>
2、代码util类
(部分文档转换后会有格式问题,暂未解决)
package com.zjjw.jxtest.util.util; import com.lowagie.text.Font; import com.lowagie.text.pdf.BaseFont; import fr.opensagres.xdocreport.itext.extension.font.IFontProvider; import org.apache.poi.xwpf.converter.pdf.PdfConverter; import org.apache.poi.xwpf.converter.pdf.PdfOptions; import org.apache.poi.xwpf.usermodel.XWPFDocument; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Paths; /** * @author: chenjiaxiang * @create: 2022/11/22 14:40 **/ public class WordToPdfUtils { private static final String FONTS1 = "/Users/chenjx/Library/Fonts/SIMSUN.TTC,1"; private static final String FONTS2 = "/Users/chenjx/Library/Fonts/SIMFANG.TTF"; private static final String FONTS_NAME = "仿宋"; public static void main(String[] args) throws Exception { String filePath = "/Users/chenjx/Downloads/zipceshi/createYuWord.docx"; String outPath = "/Users/chenjx/Downloads/zipceshi/pdf/a.pdf"; WordToPdfUtils wordPdfUtils = new WordToPdfUtils(); wordPdfUtils.wordToPdf(filePath, outPath); } public void wordToPdf(String wordPath, String pdfPath) { InputStream in = null; OutputStream outPDF = null; XWPFDocument document; try { in = Files.newInputStream(Paths.get(wordPath)); document = new XWPFDocument(in); // 将word转成pdf PdfOptions options = PdfOptions.create(); outPDF = Files.newOutputStream(Paths.get(pdfPath)); options.fontProvider(new IFontProvider() { @Override public Font getFont(String familyName, String encoding, float size, int style, java.awt.Color color) { try { String prefi编程客栈xFont; String os = System.getProperties().getProperty("os.name"); if (os.startsWith("win") || os.startsWith("Win")) { /*Windows字体*/ prefixFont = "C:\\Windows\\Fonts\\simsun.ttc,0"; } else { /*linux字体*/ prefixFont = FONTS1; } BaseFont stChinese = BaseFont.createFont(prefixFont, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); BaseFont fsChinese = BaseFont.createFont(FONTS2, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font stFontChinese = new Font(stChinese, size, style, color); Font fsFontChinese = new Font(fsChinese, size, style, color); if (familyName != null) { 编程客栈 if (FONTS_NAME.equals(familyName)) { fsFontChinese.setFamily(familyName); return fsFontChinese; } else { stFontChinese.setFamily(familyName); http://www.devze.com } } return stFontChinese; } catch (Exception e) { e.printStackTrace(); return null; } 编程 } }); PdfConverter.getInstance().convert(document, outPDF, options); } catch (IOException e) { e.printStackTrace(); } finally { try { if (in != null) { python in.close(); } if (outPDF != null) { outPDF.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
3、word格式
4、导出pdf样式
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论