1
bthulu 2021-07-29 13:27:33 +08:00
调用 wps 接口啊
|
3
bthulu 2021-07-29 14:16:51 +08:00
@auto 你不能开一台 windows 专门做这个事么, 在这台 windows 上起个接口, 接收上传的 word 文件, 返回 pdf 文件. 其他 Linux 机器调这个接口不就行了
|
4
bthulu 2021-07-29 14:18:07 +08:00
还可以考虑各大云厂商提供的 word 转 pdf 服务
|
5
aLazarus 2021-07-29 14:33:33 +08:00
```
<dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>fr.opensagres.xdocreport.core</artifactId> <version>2.0.2</version> </dependency> ``` |
8
InTen 2021-07-29 16:32:54 +08:00
openoffice/libreoffice,ONLYOFFICE Document Server API,或者第三方云服务
|
9
philipjf 2021-07-29 16:35:33 +08:00 via iPhone
macOS 自带 automation
|
10
cnoder 2021-07-29 16:40:39 +08:00
libreoffice
|
11
shoaly 2021-07-29 16:45:52 +08:00
https://help.aliyun.com/document_detail/63761.html
不光是转 pdf , 还能转 png , jpg |
12
z9961 2021-07-29 17:50:14 +08:00
jacob+office 其他的转出来的效果都不好
|
13
terry1024 2021-07-29 18:20:33 +08:00
收藏了 关注
|
17
MarkLeeyun 2021-07-29 18:55:52 +08:00
我感觉 java 可以可以调用某些 exe 文件就好了。
也算一个比较折衷的方案了。 比如 java 构造一个运行时调用 pandoc. 哈哈,这是我的想法。大家不要笑。 |
18
heyenyan 2021-07-29 18:57:35 +08:00
aspose-word
|
19
ikas 2021-07-29 19:37:00 +08:00
完美的想多了....找合适的转换工具.java 开任务处理...几乎都是这样的
|
20
akira 2021-07-29 20:50:30 +08:00
open office 已经算是比较好的了。
word 转 pdf 最大的问题是兼容性问题,好用不好用根本不是个事,能不能转才是重点 |
21
paulluis2dev 2021-07-29 22:30:02 +08:00
我专门做过这个,免费的话也是我们现在方案是 LibreOffice 转,LibreOffice 版本越高转换效果越好,差异越小。可以调命令也可以引依赖,但本质还是起 soffice 进程转
|
22
mmdsun 2021-07-29 23:52:01 +08:00 via Android
java 有收费的 spire.doc 可以转换。
如果想完美+免费的话,就用 Windows 机子。java 也能调用 dll 或者 COM 组件。 引入 Microsoft.Office.Interop.Word.dll 转换就几句话。 document = application.Documents.Open(sourcePath); document.ExportAsFixedFormat(targetPath, WdExportFormat.wdExportFormatPDF); |
23
mmdsun 2021-07-30 00:03:34 +08:00 via Android
还有一种方式就是 Linux 命令转化,效果也还可以。
比如 pandoc,unoconv 。(不知道现在哪个好用,若楼主用了效果好可以告知一下。) 这种 java 也能调用拿 Runtime.execute 方法执行命令即可。 ( java exec 执行命令很多坑 的自己封装脚本执行) |
25
fangshuai 2021-07-30 00:26:14 +08:00
poi-tl 生成 word 文档,在 linux 上安装 openoffice 或 libreoffice,通过 jodconverter api 进行转换,转换效果还是可以的
|
26
statumer 2021-07-30 00:46:01 +08:00 via Android
aspose 效果是最好的,你可以自己破解一下
其他开源方案都比较辣鸡,亲测 |
27
kpingdd 2021-07-30 01:41:12 +08:00
试试 spire.doc 吧,速度可能不太理想
|
28
sundev 2021-07-30 02:05:36 +08:00 via iPhone
最好的方案是调用 office,我试过了,其他都不完美!我现在专门弄了一台 windows 然后安装 office,程序调用 com 接口!
|
29
magicdu 2021-07-30 08:27:48 +08:00 via Android
aspose-word,感觉还可以,就是有些表格样式需要调整下
|
30
linbingcheng 2021-07-30 08:58:39 +08:00
这种事情不花钱买服务对接,个人实现真的很鸡肋,完全没法看,别人都是一个团队在做,专业的事情要找专业的干
|
31
encro 2021-07-30 09:17:36 +08:00
1,只有买第三方服务,格式无法保证,看对方实现方法,网上最多的 libreoffice 方案;
2,用微软自带 office 转换,需要 c#与 windows,格式是最好的,默认速度有点慢(大于 5 秒),有办法优化到 2 秒左右,不过是公司机密,不能告诉你; 如果你只是看看可以用方法 1,如果你需要打印那么需要方法 2 或者 spire/aspose 。 我们公司因为量比较大,以及全部需要打印,所以采用的是 2,自己建立的 c#队列服务,调用方队列发送过来,完了再发送回去。 |
33
shoaly 2021-07-30 11:58:04 +08:00
@encro 我们当时的目的是 把 ppt 和 word 转换成线上预览 且需要防盗版水印... 所以直接就直接转换成 jpg 页面了, 效果挺好的... 没怎么转 pdf, 虽然是支持的. 效果挺好的
|
34
STtree 2021-07-30 15:59:18 +08:00
以前研究过这个问题,linux 下 openoffice 应该是最好的解决方案了,然而还是很难做到 1:1 还原。这种要想有好的效果,要么调 MS Office 或 wps,要么就上一些收费服务和模块。
|
36
stormfeng 2022-06-23 12:38:06 +08:00
楼上各种方案,都不是 博主想要的 maven 呀!
1 )调接口? 还要尼玛的注册 aliyun 沙雕账号,还要实名制的手机号? 接口还收费,尼玛什么玩意。 如果所有的需求都去调接口,那还要程序猿干什么? 程序媛就够了呢 2 )调 wps 或者 windows 接口? 你以为你部署在自己的 windows 测试自己玩呢? 谁的 项目不是跑在线上的 linux 呀 3 )调 libreoffice ? 你让运维给你现场去装 这个 软件到 linux 服务器吗? 运维问: 你谁啊你? 4 )还有的 调用 google doc 或者 微软 doc 在线接口的,我就问问了,你们的老大知道你把 文档远程传输到外网了吗? 5 ) fr.opensagres.xdocreport.core , 这个其实是需要 POI 的,并且不支持 word 中有表格的,会报错的。 6 ) aspose-word , 效果虽好,但是 收费,有水印。https://zh.blog.aspose.com/2021/04/23/%E5%9C%A8java%E4%B8%AD%E4%BB%A5%E7%BC%96%E7%A8%8B%E6%96%B9%E5%BC%8F%E5%B0%86word-doc-docx%E8%BD%AC%E6%8D%A2%E4%B8%BApdf/ 7 ) spire doc ,效果也不错,但是 收费,有水印 https://www.e-iceblue.cn/spiredocforjavaconversion/java-convert-word-to-pdf.html 8 ) jOfficeConvert:demo 看起来不错,但是收费,而且还看不到源码 。 官网只是说自己使用了 Microsoft Word Viewing Technology 实现的。但是 完全搜索不到相关信息在 微软的官网。所以,难道就是 windows seerver 服务器本地装了 office 进行转换的 ? https://www.qoppa.com/pdfhtml/demo/html5-pdf-viewer-live-demo/ 9 ) openoffice 和 jodconverter 没试过,没有发言权。 10)其他方案,大部分看了,都是垃圾,要么 项目太老了,要么太新了,不匹配旧的 POI 和 jdk7 , https://stackoverflow.com/questions/3022376/how-can-i-convert-a-word-document-to-pdf 综上: 思路如下: 用收费版的 先把 word 转换为 pdf ,然后再把其中的水印去掉! 具体的代码都有了: http://www.codebaoku.com/it-java/it-java-250846.html |
37
stormfeng 2022-06-23 17:42:59 +08:00
@stormfeng 直接 CV 大法该代码 会有 3 个坑,
1 ) 去除水印的 pdf 损坏打不开; 2 )文字水印无法去除; 3 )无法去除图片水印。 我调试了半天才发现, 应该是防止 CV 大师们随意施展大法吧,挺好。 1 )这行代码,会导致 pdf 文件损坏,直接 注释掉这行代码即可。 // document.removePage(document.getNumberOfPages() - 1); 2 ) replaceText(page, "Ltd.", ""); // 这里的几行代码,要改成 跟你的看到的水印一毛一样的。aspose 不同的版本,水印文字也有差异。否则无法删除。 3 )该行代码,参数 X1 可调,removeImage(page, "X1"); // 可以改为 X2 X3 等等,数字代表 遍历到的图片序号 总结: 改好的代码,已经上传了,here https://blog.csdn.net/w1047667241/article/details/125431049 |