Java word转pdf


            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.1.2</version>
            </dependency>

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId>
                <version>2.0.2</version>
            </dependency>
  // 加载模板
        String inputFilePath = "D:\\ruoyi\\uploadPath\\download\\C20240613170548.docx";
        String outputFilePath = "D:\\ruoyi\\uploadPath\\download\\C20240613170548.pdf"; // 指定您想要保存 PDF 的路径


        try (XWPFDocument document = new XWPFDocument(new FileInputStream(inputFilePath))) {
            PdfOptions options = PdfOptions.create();

            // 使用 FileOutputStream 来写入到文件
            try (FileOutputStream out = new FileOutputStream(outputFilePath)) {
                PdfConverter.getInstance().convert(document, out, options);
                System.out.println("PDF file has been created successfully at: " + outputFilePath);
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("Failed to convert Word to PDF.");
        }

总结:

1.        网上说用pdfbox,但是实际上

import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;

没有这两个包

2.        期间遇到找不到类的错误,实际上是第一张图的两个依赖有版本冲突;需要把xdocreport升级到2.0.2或者把poi降级到3.17或3.10

3.        这个写法并不能还原word中的格式

建议使用

        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-local</artifactId>
            <version>1.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-transformer-msoffice-word</artifactId>
            <version>1.0.3</version>
        </dependency>
    //word文档替换成pdf文档
    private static void replaceWordToPdf(String wordPath, String pdfPath){
        File inputWord = new File(wordPath);
        File outputFile = new File(pdfPath);
        try  {
            InputStream docxInputStream = new FileInputStream(inputWord);
            OutputStream outputStream = new FileOutputStream(outputFile);
            IConverter converter = LocalConverter.builder().build();
            converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值