通过Spire-java实现word和pdf文件相互转换

导入依赖包

spire的office依赖包包含了doc和pdf等一些相关依赖,所以只导入这个包即可,而且还避免了依赖包版本冲突的问题

<!-- 设置iceblue的仓库 -->
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>

<dependencies>
    
    <!-- 这个是官方免费版本的依赖包,无水印版本 -->
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.office.free</artifactId>
        <version>5.3.1</version>
    </dependency>
    
</dependencies>

前提:如何引入指定的依赖包???
在这里插入图片描述
地址:maven仓库

在这里插入图片描述

iceBlue官网

简介

iceBlue研发的工具是我觉得做word、pdf相关文件格式转换比较好的,里面除了word和pdf互转之外,还可以将word转为execl、image、html、加密的pdf等等,当然pdf也可以转为其类似的文件格式。不过它分为两个版本:收费/免费,使用免费版本的有页数的限制但是转换格式出来的文件没有官方水印,用于个人来说足以满足需求

在这里插入图片描述

接口文档

ICEBLUE接口文档
在这里插入图片描述

两个工具类

WordConvertUtils

public class WordConvertUtils {

    // pdf文件的路径
    static final String source = "C:\\Users\\RichZhou\\Desktop\\sample.docx";
    // 需要转为指定格式的存放路径
    static final String pdfDestination = "C:\\Users\\RichZhou\\Desktop\\敖丙pdf.pdf";
    static final String imageDestination = "C:\\Users\\RichZhou\\Desktop\\";
    static final String htmlDestination = "C:\\Users\\RichZhou\\Desktop\\toHtml.html";

    public static void main(String[] args) {

        // docx 转为 pdf
        docxConvertPdf(source, pdfDestination);
        // docx 转为 image
        docxConvertImage(source, imageDestination);
        // docx 转为 html
        docxConvertHtml(source, htmlDestination);

    }

    public static void docxConvertPdf(String source, String pdfDestination) {
        try {
            // 创建doc对象
            Document doc = new Document();
            // 加载docx文件
            doc.loadFromFile(source);
            // 创建ToPdfParameterList对象
            ToPdfParameterList ppl = new ToPdfParameterList();
            // 在PDF文档中嵌入所有字体
            ppl.isEmbeddedAllFonts(true);
            // 删除超链接并保留字符格式
            ppl.setDisableLink(false);
            // 设置输出图像质量为原始图像的40%,默认设置为80%。
            doc.setJPEGQuality(40);
            // 转为pdf
            doc.saveToFile(pdfDestination, ppl);
            System.out.println("docx文件转为pdf成功...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void docxConvertImage(String source, String imageDestination) {
        try {
            // 创建doc对象
            Document doc = new Document();
            // 加载docx文件
            doc.loadFromFile(source);
            // 将整个文档转换为单独的缓冲图像
            BufferedImage[] images = doc.saveToImages(ImageType.Bitmap);
            // 循环遍历图片数组
            for (int i = 0; i < images.length; i++) {
                // 获取图片
                BufferedImage image = images[i];
                // 用不同的颜色空间重写图像
                BufferedImage newImg = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
                newImg.getGraphics().drawImage(image, 0, 0, null);
                //  将图片存入指定文件中
                File file = new File(imageDestination + String.format(("Image-%d.jpg"), i));
                ImageIO.write(newImg, "JPEG", file);
                //                ImageIO.write(newImg, "PNG", file);
                //                ImageIO.write(newImg, "SVG", file);
                System.out.println("docx文件转为图片成功...");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void docxConvertHtml(String source, String htmlDestination) {
        try {
            // 创建doc对象
            Document doc = new Document();
            // 加载docx文件
            doc.loadFromFile(source);
            // 转为html
            doc.saveToFile(htmlDestination, FileFormat.Html);
            System.out.println("docx文件转为html成功...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

word不仅仅只能转为上述代码中的格式,还有的格式在接口文档中有,自行查看

PdfConvertUtils

public class PdfConvertUtils {

    // pdf文件的路径
    static final String source = "C:\\Users\\RichZhou\\Desktop\\敖丙.pdf";
    // 需要转为指定格式的存放路径
    static final String docDestination = "C:\\Users\\RichZhou\\Desktop\\敖丙doc.doc";
    static final String docxDestination = "C:\\Users\\RichZhou\\Desktop\\敖丙docx.docx";
    static final String xlsxDestination = "C:\\Users\\RichZhou\\Desktop\\敖丙xlsx.xlsx";
    static final String imageDestination = "C:\\Users\\RichZhou\\Desktop";
    static final String htmlDestination = "C:\\Users\\RichZhou\\Desktop\\ToHtml.html";

    public static void main(String[] args) {

        // 转为doc
        pdfConvertDoc(source, docDestination);
        // 转为docx
        pdfConvertDocx(source, docxDestination);
        // 转为xlsx
        pdfConvertXlsx(source, xlsxDestination);
        // 转为image
        pdfConvertImage(source, imageDestination);
        // 转为html
        pdfConvertHtml(source, htmlDestination);

    }

    public static void pdfConvertDoc(String source, String destination) {
        try {
            //创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
            //加载pdf文件
            pdf.loadFromFile(source);
            //转为doc
            pdf.saveToFile(destination, FileFormat.DOC);
            System.out.println("pdf转为doc文件成功...");
            pdf.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void pdfConvertDocx(String source, String destination) {
        try {
            //创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
            //加载pdf文件
            pdf.loadFromFile(source);
            //转为docx
            pdf.saveToFile(destination, FileFormat.DOCX);
            System.out.println("pdf转为docx文件成功...");
            pdf.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void pdfConvertXlsx(String source, String destination) {
        try {
            //创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
            //加载pdf文件
            pdf.loadFromFile(source);
            //转为xlsx
            pdf.saveToFile(destination, FileFormat.XLSX);
            System.out.println("pdf转为excel文件成功...");
            pdf.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void pdfConvertImage(String source, String destination) {
        try {
            //创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
            //加载pdf文件
            pdf.loadFromFile(source);
            //循环pdf页
            for (int i = 0; i < pdf.getPages().getCount(); i++) {
                //Convert all pages to images and set the image Dpi
                BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap, 500, 500);
                //Save images to a specific folder as a .png files
                File file = new File(destination + "/" + String.format(("ToImage-img-%d.png"), i));
                ImageIO.write(image, "PNG", file);
                System.out.println("pdf转为image图片成功...");
            }
            pdf.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void pdfConvertHtml(String source, String destination) {
        try {
            //创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
            //加载pdf文件
            pdf.loadFromFile(source);
            //转为html格式
            pdf.saveToFile(destination, FileFormat.HTML);
            System.out.println("pdf转化html格式成功...");
        }catch (Exception e)  {
            e.printStackTrace();
        }
    }
}

pdf不仅仅只能转为上述代码中的格式,还有的格式在接口文档中有,自行查看

创作不易,希望大家能够点个赞,也希望大家能帮忙指出问题,一起进步!!!谢谢大家~~
在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: Java使用Spire实现PDFWord首先需要导入Spire PDF和Spire Word的相关jar包。然后,可以使用以下方法实现PDFWord的功能: 1. 创建一个Document对象,用于加载PDF文件: `PdfDocument pdf = new PdfDocument();` `pdf.loadFromFile("input.pdf");` 2. 创建一个WordDocument对象,用于保存转换后的Word文件: `WordDocument doc = new WordDocument();` 3. 遍历PDF的每一页,将其内容添加到Word文件中: `int pageCount = pdf.getPages().getCount();` `for (int i = 0; i < pageCount; i++) {` ` PdfPageBase page = pdf.getPages().get(i);` ` doc.insertText(doc.getSections().get(0).getParagraphs().get(0), page.extractText(true));` `}` 4. 最后,将Word文件保存到指定位置: `doc.saveToFile("output.docx", FileFormat.Docx_2013);` 这样就完成了使用Spire实现PDFWord的操作。通过以上步骤,可以将PDF文件转换Word文件实现了数据的格式转换和跨平台的读取与编辑。使用Spire库能够简化PDFWord文件的处理,提高开发效率。同时,Spire还提供了很多其他功能,可以进一步满足应用需求,例如添加水印、设置页眉页脚等。 ### 回答2: Java使用Spire来实现PDFWord非常简单。Spire是一个功能强大的Java图像和文档处理库,可以轻松处理各种格式的文档。 使用Spire进行PDFWord,首先需要将Spire的jar包添加到Java项目中。然后,可以使用以下代码实现PDFWord的功能: ```java import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.graphics.PdfUnitConvertor; import com.spire.pdf.widget.PdfTextWidget; import com.spire.pdf.widget.PdfWidget; public class PdfToWordConverter { public static void main(String[] args) { // 加载PDF文档 PdfDocument document = new PdfDocument(); document.loadFromFile("input.pdf"); StringBuilder stringBuilder = new StringBuilder(); // 遍历每一页PDF文档 for (int i = 0; i < document.getPages().getCount(); i++) { PdfPageBase page = document.getPages().get(i); // 转换每一页为文本 for (PdfWidget widget : page.getWidgets()) { if (widget instanceof PdfTextWidget) { PdfTextWidget textWidget = (PdfTextWidget) widget; stringBuilder.append(textWidget.getText()); } } } // 将文本保存为Word文档 document.saveToFile("output.docx", com.spire.pdf.FileFormat.DOCX); // 关闭文档 document.close(); } } ``` 上述代码加载了一个名为`input.pdf`的PDF文档,然后遍历每一页,将文本内容提取出来,最后将提取的文本保存为一个名为`output.docx`的Word文档。 以上就是使用Java和Spire库实现PDFWord的简单示例。你可以根据自己的需求,进一步定制代码,来处理更复杂的PDFWord操作。 ### 回答3: Java 使用 Spire 实现 PDFWord 是一种比较简单且高效的方法。Spire 是一个强大的 Java 文档处理库,支持多种格式的文档转换。 首先,我们需要将 Spire 的 JAR 文件导入到 Java 项目中,并解决相关的依赖问题。 接下来,我们可以使用 Spire 的 API 来实现 PDFWord 的功能。具体步骤如下: 1. 创建一个 Spire 的 Document 对象,这个对象表示要转换PDF 文档。 2. 使用 Document 对象的 loadFromFile 或 loadFromStream 方法加载要转换PDF 文件。 3. 创建一个 Spire 的 Document 对象,这个对象表示转换后的 Word 文档。 4. 使用 Document 对象的 saveToFile 或 saveToStream 方法将转换后的 Word 文档保存到文件或输出流中。 5. 释放资源,关闭相关的对象。 以下是一个简单的示例代码,演示如何使用 Spire 实现 PDFWord: ```java import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.PdfUnitConvertor; import com.spire.pdf.graphics.PdfMargins; import com.spire.pdf.graphics.PdfUnit; import java.awt.Dimension; public class PdfToWordConverter { public static void main(String[] args) { // 加载 PDF 文档 PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("input.pdf"); // 创建 Word 文档 com.spire.doc.Document doc = new com.spire.doc.Document(); // 循环遍历 PDF 文档的各个页面 for (int i = 0; i < pdf.getPages().getCount(); i++) { // 获取页面内容 PdfPageBase page = pdf.getPages().get(i); Dimension size = new Dimension((int) page.getSize().getWidth(), (int) page.getSize().getHeight()); // 调整文档大小 doc.setPageSize(size); doc.getPageSetup().setMargins(new PdfMargins(0)); doc.getPageSetup().setPageWidth(new PdfUnitConvertor().convertPixelsToPoints((float) size.getWidth())); doc.getPageSetup().setPageHeight(new PdfUnitConvertor().convertPixelsToPoints((float) size.getHeight())); // 将 PDF 页面内容插入到 Word 文档中 com.spire.doc.Section section = doc.addSection(); PdfUnitConvertor unitConvertor = new PdfUnitConvertor(); section.getPageSetup().getMargins().setTop(unitConvertor.convertPointToTwip(0)); section.getPageSetup().getMargins().setBottom(unitConvertor.convertPointToTwip(0)); section.getPageSetup().getMargins().setLeft(unitConvertor.convertPointToTwip(0)); section.getPageSetup().getMargins().setRight(unitConvertor.convertPointToTwip(0)); section.getPageSetup().setOrientation(com.spire.doc.documents.PageOrientation.Landscape); section.getPageSetup().getPageWidth(); com.spire.doc.Page pageSetting = section.getPages().add(); pageSetting.setSize(size); com.spire.doc.Picture picture = pageSetting.getPictures().insertPicture(new com.spire.doc.FileFormat.PDF.PdfPicture(doc, page), 0); // 添加分页符 if (i < pdf.getPages().getCount() - 1) { section.getParagraphs().add("\f"); } } // 保存 Word 文档 doc.saveToFile("output.docx", com.spire.doc.FileFormat.Docx); doc.dispose(); pdf.close(); } } ``` 通过上述步骤,我们可以将一个或多个 PDF 页面转换Word 文档,并保存到本地文件中。使用 Spire,我们可以方便地处理 PDFWord转换操作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

99Savage

你的鼓励是我最大的动力!加油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值