开发者

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格式

    java8如何通过poi+text将word转为pdf

    4、导出pdf样式

    java8如何通过poi+text将word转为pdf

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜