admin管理员组

文章数量:1605301

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) {
   
                       

本文标签: JavawordPDF