学习Qoppa jOfficeConvert的科学实践(十三)

Qoppa
placeholder image
admin 发布于:2025-06-12 16:58:40
阅读:loading

Qoppa Software是一家专注于PDF处理和数字文档解决方案的公司,提供丰富的Java、.NET和Web平台的组件。其产品广泛应用于企业、ZF*、金融、医疗等行业,旨在简化PDF和数字文档的处理、管理和集成。特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

1.基本介绍

jOfficeConvert – Java PDF 库 Word、Excel、PowerPoint 到 PDF 转换。直接从 Java 应用程序将 Microsoft Word 文档、Excel 电子表格和 PowerPoint 演示文稿转换为 PDF,无需用户干预,也不需要任何其他软件。

jOfficeConvert 是一个 Java 库,可以原生读取和渲染 MS Word、Excel 和 PowerPoint 文档,并将其转换为 PDF、转换为图像或自动打印。它忠实地保留了原始文档的布局、属性和字体,并且在输出为 PDF 时提供了许多高级转换选项,例如是否在生成的 PDF 中嵌入字体。

该库 100% 基于 Java,因此可以在任何支持 Java 的平台上运行,包括 Windows、Linux、Unix(AIX、Solaris Spark、Solaris Intel、HP-UX)和 Mac OSX。该库不使用任何第三方软件或本机调用,可以在服务器环境中运行,也可以集成到桌面应用程序中。

2.组件介绍

  • 将 Word 2007+(.docx)转换为 PDF

  • 将 Word 97-2003 (.doc) 转换为 PDF

  • 将 Excel 2007+ (.xlsx) 转换为 PDF

  • 将 PowerPoint 2007+ (.pptx) 转换为 PDF

  • 将 Word、Excel、PowerPoint 文件转换为 HTML5(与jPDFWeb结合使用时)

  • 将 Word、Excel、PowerPoint 文件转换为 JPEG、TIFF 或 PNG 图像

  • 将多个 Word、Excel、PowerPoint 文件合并为一个 PDF 文档

  • 设置生成的 PDF 文档的权限和密码

  • 自动将 Word、Excel、PowerPoint 文件打印到默认或指定的打印机

  • 无需第三方软件或驱动程序

  • 支持JDK1.8及以上版本

3.代码示例

public class SampleJOfficeConvert {

    public static void main(String[] args) throws Exception {
        QoppaRegister.registerJPDFOfficeConvert();

        //Word
        WordDocument word = new WordDocument("resources/input/hello.docx");
        word.saveDocumentAsTIFF("resources/output/jOfficeConvert_Word.tiff" ,
                new TIFFOptions(150 , TIFFOptions.TIFF_FAX_GROUP4));
        word.saveAsPDF("resources/output/jOfficeConvert_Word.pdf");
        word.savePageAsJPEG(1 , "resources/output/jOfficeConvert_Word.jpg" , 150 , 1.0f);
        word.savePageAsGIF(1 , "resources/output/jOfficeConvert_Word.gif" , 150);
        word.savePageAsPNG(1 , "resources/output/jOfficeConvert_Word.png" , 150);
        //Excel
        ExcelDocument excel = new ExcelDocument("resources/input/hello.xlsx");
        excel.saveDocumentAsTIFF("resources/output/jOfficeConvert_Excel.tiff" ,
                new TIFFOptions(150 , TIFFOptions.TIFF_FAX_GROUP4));
        excel.saveAsPDF("resources/output/jOfficeConvert_Excel.pdf");
        excel.savePageAsJPEG(1 , "resources/output/jOfficeConvert_Excel.jpg" , 150 , 1.0f);
        excel.savePageAsGIF(1 , "resources/output/jOfficeConvert_Excel.gif" , 150);
        excel.savePageAsPNG(1 , "resources/output/jOfficeConvert_Excel.png" , 150);
        //PPT
        PowerPointDocument ppt = new PowerPointDocument("resources/input/hello.pptx" , new PowerPointConvertOptions());
        ppt.saveDocumentAsTIFF("resources/output/jOfficeConvert_PPT.tiff" , new TIFFOptions(150 , TIFFOptions.TIFF_FAX_GROUP4));
        ppt.saveAsPDF("resources/output/jOfficeConvert_PPT.pdf");
    }
}

jPDFOfficeWord-含水印.gif

(Word转PDF)

jPDFOfficeExcel-含水印.gif

(Excel转PDF)

jPDFOfficePPT-含水印.gif

(PPT转PDF)

image.png

(PPT转PDF)

4.示例说明

(1)示例使用了jOfficeConvert操作Word/Excel/PPT格式的文件转换为PDF的示例,提取PDF内容、创建PDF文档、增加页面水印;

(2)示例中演示了未科学使用时输出PDF转换为图片就有文档水印;

(3)示例中演示了科学使用后设输出PDF转换为图片没有文档水印;

(4)示例执行后生成的 TIFF/JPG/PNG/GIF 图片和对应PDF两种格式文档,图片格式可以让文档每页都生成,本次只选择生成了其中的一页;

5.其它说明

(1)Qoppa Software推出了15款Java集成开发组件库,,除此之外的其它组件在生成/转换为PDF文档时,应该需要处理文档属性中的“制作工具”;

(2)更多的组件需要使用License注册,使用试用版本将会有对应的试用提示信息,比如插入文字水印、图片中被插入水印、内容中被插入DEMO字样的文本,所以科学使用的目的在于单纯使用对应的工具库,不需额外关注License,又不改动Jar文件中的class,同时又恰好没有水印和文本混乱的限制。特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

(3)官网提供了对应各个组件的示例代码和组件库的Jar文件下载,未找到有试用Maven库管理组件的形式,需要自行下载相关的组件;

(4)官网的某些页面资料中也有说明还包含上述产品组件范围之外的其它组件,如:OCR等,没有找到详细的示例使用介绍,不作为本次学习摸索的重点;

(5)官网提供的试用组件的Jar文件中的class有经过加密混淆,从class部分入门则难道比较高,本次对于系列组件的摸索在于科学使用方面,对于组件提供的功能广度与深度应用不作过多的摸索;

(6)对各个组件学习摸索的时间并不算太多,发现这么多组件应该不能同时作用于同一个项目中,因为它们不同的组件Jar中提供的class类文件路径存在同名或同类的,存在互相冲突的场景,不知道是否有说明白,以jPDFWriter与jPDFWeb两个组件Jar的截图如下: 

image

(7)相关示例输出文件下载:《jOfficeConvert.zip》;

(8)尽可能的通过API来设置文档属性中的创建者、制作工具等信息(第1个代码给出了对应的API,但是附件上传时生成的附件并未设置对应的制作工具,可以查看默认生成的文档制作工具为“Qoppa PDF SDK jOfficeConvert v2022R1.29”),如果想要调整这个参数值则有两种方式,使用jPDFWriter的API载入文档并调用对应方法二次设置;第二种方法则是使用Javassist来进行改写,可以关注这个类“com.qoppa.cb.c.mb#g(java.lang.String)”,参考默认转换为PDF后的文档属性如下:

image.png


 点赞


 发表评论

当前回复:作者

 评论列表


留言区