word转pdf的几种方法

需求是实现将word转换成pdf在线预览, 试了几种方法发现样式效果最好的是aspose-words,但是需要破解, 附带了激活方式

  • openOffice 与 libreOffice

    两款都是运行在服务器上面的office处理软件, 通过命令行的方式去执行转换命令

    • openOffice下载地址
    • libreOffice下载地址

    下载安装好之后需要在代码中引入jodconverter相关jar包依赖(jodconverter.zip解压后lib下的都需要引入)

    相关软件及jar下载链接:https://pan.baidu.com/s/1u0U5jYYAjWRYO7mL5ilD8Q 提取码:8888

    // openOffice 和 libreOffice 差不多除了命令不一样
    // 1.执行系统命令启动openoffice线程
    // 2.连接openoffice服务连接
    // 3.执行转换// window 使用  调用openoffice服务线程
    String command = "C:/Program Files (x86)/OpenOffice 4/program/soffice-headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
    // Linux使用
    // String command = "/opt/openoffice4/program/soffice -headless -accept=\"socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard\"";
    Process p = Runtime.getRuntime().exec(command);// 连接openoffice服务
    OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
    connection.connect();// 转换word到pdf
    DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
    converter.convert(new File("/temp/1.doc"), new File("/temp/1.pdf"));connection.disconnect();
    p.destroy();
    
    • 如果出现中文乱码问题, 确定一下服务器上缺不缺中文字体

    ps: 试了大部分的word都能转换pdf, 有一些样式复杂的会渲染不出来, 直接把word源码生成pdf

  • spire.doc.free

    免费版的有页数限制, 我的场景不会有多页的就直接用的免费版本

    效果可以参照https://smallpdf.com/cn/word-to-pdf, https://www.freepdfconvert.com/zh-cn/word-to-pdf这些在线转换网站,我试了生成的效果和这些网站的一样.

    <!-- spire.doc.free 相关依赖 -->
    <dependency><groupId>e-iceblue</groupId><artifactId>spire.doc.free</artifactId><version>3.9.0</version>
    </dependency><repositories><repository><id>com.e-iceblue</id><url>http://repo.e-iceblue.cn/repository/maven-public/</url></repository>
    </repositories>
    

    代码相当简单…

    import com.spire.doc.*;public class WordtoPDF {public static void main(String[] args) {// 加载word示例文档Document document = new Document();document.loadFromFile("D:\\2.doc");// 保存结果文件document.saveToFile("D:\\3.pdf");}
    }
    

    ps: 我生成的最后换行不一致, 所以没选用这个

  • aspose-words(推荐)

    效果可以参照迅捷pdf在线转换器https://app.xunjiepdf.com/pdf2word/

    需要引入aspose-words-15.8.0-jdk16.jar到项目中

    链接:https://pan.baidu.com/s/1q06E0wK13dC2ejDbDtdpZQ
    提取码:8888

    <!-- 下载后放项目lib下通过system引用 -->
    <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8.0</version><scope>system</scope><systemPath>${project.basedir}/lib/aspose-words-15.8.0-jdk16.jar</systemPath>
    </dependency>
    

    核心代码

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;import com.aspose.words.Document;
    import com.aspose.words.License;
    import com.aspose.words.SaveFormat;public class WordPdfUtil {private static boolean license = false;static {try {// license.xml放在src/main/resources文件夹下InputStream is = WordPdfUtil.class.getClassLoader().getResourceAsStream("license.xml");License aposeLic = new License();aposeLic.setLicense(is);license = true;} catch (Exception e) {license = false;e.printStackTrace();}}public static void doc2pdf(String wordPath, String pdfPath) {// 验证License 若不验证则转化出的pdf文档会有水印产生if (!license) {System.out.println("License验证不通过...");return;}try {File file = new File(pdfPath);FileOutputStream os = new FileOutputStream(file);Document doc = new Document(wordPath);// 支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换doc.save(os, SaveFormat.PDF);os.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {doc2pdf("D:\\3.doc","D:\\5.pdf");}
    }
    

    在src/main/resources文件夹下创建license.xml填充下面内容激活

    <?xml version="1.0" encoding="UTF-8" ?>
    <License><Data><Products><Product>Aspose.Total for Java</Product><Product>Aspose.Words for Java</Product></Products><EditionType>Enterprise</EditionType><SubscriptionExpiry>20991231</SubscriptionExpiry><LicenseExpiry>20991231</LicenseExpiry><SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber></Data> <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
    </License>
    
  • file-online-preview

    github上面找到的一个开源项目, 活跃度比较高也记录一下. 目前试了效果没有aspose-words好用, 底层是集成的LibreOffice.

    项目地址: https://github.com/kekingcn/kkFileView

    支持的类型比较多,后续如果有需求,方便二次开发

word转pdf的几种方法相关推荐

  1. java word转pdf,docx4j转pdf,docx4j导出pdf乱码,docx4j导出pdf丢失插画和图片,aspose将word转pdf 一共两种方法

    前言:一共有docx4j转pdf,aspose转pdf两种方式,不需要设置模板!!! java转pdf目前本人使用有两种方法,下面是方法代码 ps:因为本人是云桌面开发,所以只作截图,具体代码需要自己 ...

  2. Java语言中抽取word、pdf的四种方法

    1.用jacob. 其实jacob是一个bridage,连接java和com或者win32函数的一个中间件,jacob并不能直接抽取word,excel等文件,需要自己写dll哦,不过已经有为你写好的 ...

  3. java生成word和pdf的几种方法的优缺点对比

    JAVA生成word优缺点对比 所用技术 优点 缺点 Jacob 功能强大 代码量大,设置样式繁琐:需要windows平台支持,无法跨平台 Apache POI 读写excel功能强大.操作简单 一般 ...

  4. PPT转成Word文档的四种方法

    注: 实际使用中,方法四比较好使. 如果想要提取图片,可以先转换成pdf,再转换成word. 方法一:利用"大纲"视图       打开PPT演示文稿,单击"大纲&quo ...

  5. html在电脑里怎么打开pdf文件,电脑上的PDF文档怎么打开?打开PDF的5种方法

    原标题:电脑上的PDF文档怎么打开?打开PDF的5种方法 目前常用的办公文档中PDF因其格式的稳定性和兼容性都较好,而被越来越多的人使用.那么PDF文档应该如何打开呢?有哪些常用的PDF文件的打开方式 ...

  6. python处理word或者pdf文件_利用python程序生成word和PDF文档的方法

    一.程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用fr ...

  7. C#实现将excel转换成pdf的三种方法

    文章目录 1.使用免费版的spire 2.使用Microsoft.Office.Interop.Excel 3.使用Aspose.Cells 本人经过一上午的搜索,总结了C#将excel转pdf的三种 ...

  8. 将word文件转换成PDF的两种方法

    由于工作需要,使用了两种方式实现了word文件转PDF的功能.以下的程序是我使用VB6编写,供大家参考. 第一种方法,使用PDFMAKERAPILib,使用这种方法,可以设置文件的安全性.这种方式是A ...

  9. 将ppt转换成pdf的三种方法分享

    在我们工作中,总免不了将一些ppt幻灯片里的内容复制到pdf文档中,一些同仁遇到这种现象常常不知道如何下手,有的甚至直接将ppt文本内容复制到word文档中,然后保存成pdf格式,这样打开肯定会导致排 ...

最新文章

  1. 使用sigaction处理内核信号
  2. 6 款 Java 8 自带工具,轻松分析定位 JVM 问题!
  3. rsync 更改配置后, 无需手动重启
  4. 【剑指offer】找出数组中出现一次的两个数
  5. ssacanf\Sprintf格式化字符串
  6. OPENSSL X509证书验证
  7. 工作95视频上传逻辑
  8. phpcmsV9 自定义分页函数与调用 - 不影响后台SQL分页
  9. 程序员如何处理被 “吃” 掉的异常?
  10. SQL优化的一些总结
  11. redis LRU和LFU
  12. Django3.0入门教程【四】:Django常用命令
  13. Moya 设置超时时间和请求头
  14. 华为开放亚太首个OpenDaylight实验室――被纳入OpenDaylight官方Community Labs 获高度肯定
  15. 面对来势汹汹的AI大潮,你该如何应对?
  16. 将Maven仓库地址修改为阿里云的仓库地址
  17. win10的开机启动文件夹
  18. Golang 二叉树遍历
  19. 利用FaceBook实现第三方登陆(自定义登陆按钮,非官方按钮)并获取用户数据
  20. 艾伟_转载:如何开发绚丽、高效率的界面(Windows嵌入式系统)

热门文章

  1. 2021-2025年中国卡波芬金行业市场供需与战略研究报告
  2. jQuery table组织架构图表插件
  3. 搭建react + typescript + airbnb eslint 项目
  4. 38岁女强人转行做足疗店,只用一年就把两家同行都挤垮了?
  5. 发送打印任务后不打印
  6. android 指纹框架,Android标准化指纹识别框架(只基于api23官方标准)
  7. Python中歌词解析
  8. 2019年9月Leetcode每日训练日志
  9. UG NX二次开发(C#)-装配-删除阵列矩阵
  10. anaconda、labelme标注软件安装和使用