有大神吗?拜托了。。用 LibreOffice,转换为 PDF 后,格式混乱

2019-10-12 20:27:17 +08:00
 kieya00

谁用过了 LibreOffice,转换为 PDF 后,里面的内容排版格式混乱,doc 和 docx 转过去都有问题,Linux 和 win 下也都有问题,很通过,搞了两天两夜了。。。。求大神,v2ex 是我最后的希望

8573 次点击
所在节点    Java
29 条回复
kieya00
2019-10-12 20:27:58 +08:00
真的跪了,大神快来
tempdban
2019-10-12 20:34:36 +08:00
为啥不用 word…
whileFalse
2019-10-12 20:46:31 +08:00
很正常。
EastLord
2019-10-12 20:52:25 +08:00
格式乱了很正常
JackieMe
2019-10-12 20:58:33 +08:00
装个 WPS 试试?反正我是 WPS 和 LibreOffice 都装着备用
AEANWspPmj3FUhDc
2019-10-12 20:58:52 +08:00
word 文档用什么软件写的,就用那个软件转换。
wunonglin
2019-10-12 21:00:53 +08:00
word 或者 WPS,干嘛想不开用 LibreOffice ?
richard1122
2019-10-12 21:32:50 +08:00
应该还可以直接用微软的在线 office 吧
lisces
2019-10-12 21:35:22 +08:00
没搞过的根本不懂需求,LibreOffice 有命令行,可以作为任务自动执行。
LibreOffice 其实非常强大,绝大部分乱的格式都可以调整到位,处理的思路很简单,就是实现比较繁琐。简单直接的自动转换格式肯定会乱,处理方法就是用模板,比如 word 里有正文和脚注,那么预先按照 word 的版式建好对应的 pdf 模板,内容上可以填上变量的方式,比如正文的地方写${content} ,脚注的地方写${footnote},执行的时候用代码去解析 word 中对应的区块内容,然后替换对应的变量,最后再做其它处理。
word 中的索引、分栏、页码、头注、脚注、测注、角标、竖版等等各种版面格式都可以完美的转换到 pdf,甚至用建几十个模板适配不同图片大小的方式,来接近完美的解决图文环绕。
我在七八年前就在某产品体系里做过这个工作,效果秒杀百度文档、豆丁之类的在线网站,和市面上所有能找到的自动转换工具。当时这套系统也有一个问题,就是需要用户预先手工选定匹配的模板。当时的产品失败了,十分可惜。其实如果可以继续不断迭代开发的话,我想可以在产品端加入一些生成缩略图然后智能识别匹配的方式,最终把用户需要选择模板的步骤都省略了,实现一套近乎完美的在线转换工具。
lisces
2019-10-12 21:39:01 +08:00
这事做起来不难,就是贼烦。绣花针上雕佛经,螺蛳壳里做道场,是个很需要耐心的细致活。
EastLord
2019-10-12 21:39:16 +08:00
我猜他想做在线预览
whileFalse
2019-10-12 23:46:39 +08:00
@lisces Office 有 Com 接口,PowerShell 调起来不比命令行费劲,还能用.NET 调用。
blackwolf
2019-10-12 23:54:54 +08:00
@lisces 这一套感觉跟 latex 差不多了,格式和文本分离
vipcc
2019-10-12 23:57:49 +08:00
用 Office,成熟,简单
zzl22100048
2019-10-13 00:36:50 +08:00
是用 http 接口转的 pdf 吗,用接口转需要用 libreoffice 调格式,wps word openoffice 这几个格式有点区别
gaolycn
2019-10-13 05:57:59 +08:00
@lisces 请问你说的这个方案里,把 pdf 模板里的变量替换为真正的内容,这一步用什么工具替换?
lyog
2019-10-13 07:03:11 +08:00
哈哈,之前开发电子合同的时候用过,想要不乱的话,word 文档在 libreoffive 里预览试试,看到哪处乱掉就把哪处格式处理一下。处理完再转就可以了。
ipwx
2019-10-13 09:54:55 +08:00
lycx5360
2019-10-13 10:23:53 +08:00
@gaolycn word 的话只需要 jodconverter+itextpdf,后者可以实现根据关键字定位。如果需要处理一些复杂的 excel 可以结合 jxls 制作 excel 模板
ungrown
2019-10-13 10:38:46 +08:00
@lisces 知道你有需求,但是你不知道的是 libreoffice 和微软 office 其实不一样。
微软 office 本质上还是封闭的,虽然 docx 这个格式开源且标准化了,但那只是文件格式,里面怎么定义文档中的元素、怎么描述排版格式,微软其实是自己用着一套体系,根本不带开源社区一起玩。
libreoffice 已经尽其所能把常用功能和格式做到兼容了,其他能逆向的也尽力做了,然而还是不行:微软 office 里好好的排版,到了 libreoffice 里面就是会错乱甚至丢元素,你没有办法的。
想要用 libreoffice 就必须放弃对微软 office 所生成的文档的兼容性,想兼容其他人用微软 office 写的文档就只能老老实实用微软 office,想把微软 office 自动化就只能老老实实在 win 系统里调用 COM 接口写脚本。
熊与鱼掌不可得兼。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/608750

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX