V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
auto
V2EX  ›  Java

求助! Java 代码 word 转 pdf 有什么好方法吗?现在找到几个,各有优势,之前的人用的 open office,但是是使用命令在代码中启动的,而且还要单独弄个包,感觉很麻烦,还不好

  •  
  •   auto · 132 天前 · 2599 次点击
    这是一个创建于 132 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1 、poi + itext 。 先转 html 再绘制,听说格式有差异。比较复杂,格式兼容差,跨平台。

    2 、借助 openoffice 现在暂时用的这个 3 、jacob + ms linux 部署,这个似乎只能 windows 用 4 、docx4j 的 export pdf 组件。 感觉有点慢,对中文的支持似乎也不太行啊 5 、aspose 等其他组件。 付费的,前公司用的这个,感觉很好用啊,有没有类似的啊?
    第 1 条附言  ·  132 天前
    linux 环境下,最好可以直接 maven 包管理的
    35 条回复    2021-07-30 23:35:25 +08:00
    bthulu
        1
    bthulu  
       132 天前
    调用 wps 接口啊
    auto
        2
    auto  
    OP
       132 天前
    @bthulu 只能在 window 环境中吧,linux 不行。
    bthulu
        3
    bthulu  
       132 天前
    @auto 你不能开一台 windows 专门做这个事么, 在这台 windows 上起个接口, 接收上传的 word 文件, 返回 pdf 文件. 其他 Linux 机器调这个接口不就行了
    bthulu
        4
    bthulu  
       132 天前
    还可以考虑各大云厂商提供的 word 转 pdf 服务
    aLazarus
        5
    aLazarus  
       132 天前
    ```
    <dependency>
    <groupId>fr.opensagres.xdocreport</groupId>
    <artifactId>fr.opensagres.xdocreport.core</artifactId>
    <version>2.0.2</version>
    </dependency>
    ```
    aLazarus
        6
    aLazarus  
       132 天前
    @aLazarus 如果在 linux 使用某些字体,需要 Override getFont 方法
    auto
        7
    auto  
    OP
       132 天前
    @bthulu 这个没办法,公司腾讯云只弄了 linux 服务
    InTen
        8
    InTen  
       132 天前
    openoffice/libreoffice,ONLYOFFICE Document Server API,或者第三方云服务
    philipjf
        9
    philipjf  
       132 天前 via iPhone
    macOS 自带 automation
    cnoder
        10
    cnoder  
       132 天前
    libreoffice
    shoaly
        11
    shoaly  
       132 天前
    https://help.aliyun.com/document_detail/63761.html
    不光是转 pdf , 还能转 png , jpg
    z9961
        12
    z9961  
       132 天前
    jacob+office 其他的转出来的效果都不好
    terry1024
        13
    terry1024  
       132 天前
    收藏了 关注
    auto
        14
    auto  
    OP
       132 天前
    @z9961 似乎只能 windows ?
    auto
        15
    auto  
    OP
       132 天前
    @shoaly 可能不能直接调 ali 的接口,万一哪天这个接口收费了咋办👀
    shoaly
        16
    shoaly  
       132 天前
    @auto 如果是要免费撸的.... 当我没说吧
    MarkLeeyun
        17
    MarkLeeyun  
       132 天前
    我感觉 java 可以可以调用某些 exe 文件就好了。
    也算一个比较折衷的方案了。
    比如 java 构造一个运行时调用 pandoc.
    哈哈,这是我的想法。大家不要笑。
    heyenyan
        18
    heyenyan  
       132 天前
    aspose-word
    ikas
        19
    ikas  
       132 天前
    完美的想多了....找合适的转换工具.java 开任务处理...几乎都是这样的
    akira
        20
    akira  
       132 天前
    open office 已经算是比较好的了。

    word 转 pdf 最大的问题是兼容性问题,好用不好用根本不是个事,能不能转才是重点
    paulluis2dev
        21
    paulluis2dev  
       132 天前
    我专门做过这个,免费的话也是我们现在方案是 LibreOffice 转,LibreOffice 版本越高转换效果越好,差异越小。可以调命令也可以引依赖,但本质还是起 soffice 进程转
    mmdsun
        22
    mmdsun  
       132 天前 via Android
    java 有收费的 spire.doc 可以转换。

    如果想完美+免费的话,就用 Windows 机子。java 也能调用 dll 或者 COM 组件。

    引入 Microsoft.Office.Interop.Word.dll
    转换就几句话。

    document = application.Documents.Open(sourcePath);

    document.ExportAsFixedFormat(targetPath, WdExportFormat.wdExportFormatPDF);
    mmdsun
        23
    mmdsun  
       132 天前 via Android
    还有一种方式就是 Linux 命令转化,效果也还可以。

    比如 pandoc,unoconv 。(不知道现在哪个好用,若楼主用了效果好可以告知一下。)

    这种 java 也能调用拿 Runtime.execute 方法执行命令即可。

    ( java exec 执行命令很多坑 的自己封装脚本执行)
    cz5424
        24
    cz5424  
       132 天前 via iPhone
    @auto 这接口就是收费的 0.08 元 /次
    fangshuai
        25
    fangshuai  
       132 天前
    poi-tl 生成 word 文档,在 linux 上安装 openoffice 或 libreoffice,通过 jodconverter api 进行转换,转换效果还是可以的
    statumer
        26
    statumer  
       132 天前 via Android
    aspose 效果是最好的,你可以自己破解一下
    其他开源方案都比较辣鸡,亲测
    kpingdd
        27
    kpingdd  
       132 天前
    试试 spire.doc 吧,速度可能不太理想
    sundev
        28
    sundev  
       132 天前 via iPhone
    最好的方案是调用 office,我试过了,其他都不完美!我现在专门弄了一台 windows 然后安装 office,程序调用 com 接口!
    magicdu
        29
    magicdu  
       131 天前 via Android
    aspose-word,感觉还可以,就是有些表格样式需要调整下
    linbingcheng
        30
    linbingcheng  
       131 天前
    这种事情不花钱买服务对接,个人实现真的很鸡肋,完全没法看,别人都是一个团队在做,专业的事情要找专业的干
    encro
        31
    encro  
       131 天前
    1,只有买第三方服务,格式无法保证,看对方实现方法,网上最多的 libreoffice 方案;
    2,用微软自带 office 转换,需要 c#与 windows,格式是最好的,默认速度有点慢(大于 5 秒),有办法优化到 2 秒左右,不过是公司机密,不能告诉你;

    如果你只是看看可以用方法 1,如果你需要打印那么需要方法 2 或者 spire/aspose 。

    我们公司因为量比较大,以及全部需要打印,所以采用的是 2,自己建立的 c#队列服务,调用方队列发送过来,完了再发送回去。
    encro
        32
    encro  
       131 天前
    @shoaly
    效果怎么样?能用于打印还是预览?
    shoaly
        33
    shoaly  
       131 天前
    @encro 我们当时的目的是 把 ppt 和 word 转换成线上预览 且需要防盗版水印... 所以直接就直接转换成 jpg 页面了, 效果挺好的... 没怎么转 pdf, 虽然是支持的. 效果挺好的
    STtree
        34
    STtree  
       131 天前
    以前研究过这个问题,linux 下 openoffice 应该是最好的解决方案了,然而还是很难做到 1:1 还原。这种要想有好的效果,要么调 MS Office 或 wps,要么就上一些收费服务和模块。
    encro
        35
    encro  
       131 天前
    @shoaly

    应该订订也是用这个方案,感觉还可以,好像只有偶尔有问题。楼主可以试一下。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1215 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:05 · PVG 03:05 · LAX 11:05 · JFK 14:05
    ♥ Do have faith in what you're doing.