关于java中实现word转pdf

本文介绍了在Java环境中使用Apache POI和iTextPDF库将Word文档转换为PDF的方法,包括将Word内容转成HTML再转成PDF的过程。另外,还提到了Aspose库作为另一种直接转换的解决方案,该库支持跨平台并在转换中保持格式的一致性。
摘要由CSDN通过智能技术生成

1.java中实现word转pdf几种方式如下

1.使用jacob(Java COM Bridge)操作offfice的方式,基于这种方式无论是水印还是格式都可以完美转换;但是这个方式都只是基于windos下,但有些项目是需要部署到linux下的,因此这个方式有很大局限性。

2.利用apache poi 方式进行转换,可以支持linux和windos系统。但是局限性就是,采用这种方法是将word转换成html格式,再将html格式转成pdf,因此此方法的转换格式上会存在一定差异。

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontProvider;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.PicturesManager;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.PictureType;
import org.apache.poi.xwpf.converter.core.BasicURIResolver;
import org.apache.poi.xwpf.converter.core.FileImageExtractor;
import org.apache.poi.xwpf.converter.core.utils.StringUtils;
import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;
import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Entities;
import org.jsoup.select.Elements;
import org.w3c.dom.Document;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
import java.nio.charset.Charset;

/**
 * 使用poi+itextpdf进行word转pdf
 * 先将word转成html,再将html转成pdf
 *
 * @author :yuwenke
 * @date :Created in 2021/10/12 22:41
 */
public class TestPoi {
   

    /**
     * 将doc格式文件转成html
     *
     * @param docPath  doc文件路径
     * @param imageDir doc文件中图片存储目录
     * @return html
     */
    public static String doc2Html(String docPath, final String imageDir) {
   
        String content = null;
        ByteArrayOutputStream baos = null;
        try {
   
            HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(docPath));
            WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
            wordToHtmlConverter.setPicturesManager(new PicturesManager() {
   

                public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {
   
                    File file = new File(imageDir + suggestedName);
                    FileOutputStream fos = null;
                    try {
   
                        fos = new FileOutputStream(file);
                        fos.write(content);
                    } catch (IOException e) {
   
                        e.printStackTrace();
                    } finally {
   
                        try {
   
                            if (fos != null) {
   
                                fos.close();
                            }
                        } catch (Exception e) {
   
                       
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值