请选择 进入手机版 | 继续访问电脑版

LibreOffice 中文社区

 找回密码
 马上加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
12
返回列表 发新帖
开启左侧

[已解决] Draw打开PDF文件粗体字错认为轮廓字

[复制链接]
suokunlong 发表于 2021-6-27 10:00:00 | 显示全部楼层
我已经找到原因了,问题在
https://opengrok.libreoffice.org ... .cxx?r=55c724b9#150
这一行。

深层次的原因是,宋体的粗体效果在PDF中是采用了 fill+stroke的伪粗体效果,其Text Render Mode为2。Draw在导入时检测到该渲染类型,就以为是轮廓效果,因此将其渲染成了轮廓字。

开放,包容,奉献。
suokunlong 发表于 2021-8-25 22:30:24 | 显示全部楼层
我上个月提交的
https://git.libreofficechina.org ... 934dfb04aa7b0d065ad
已经修复了这个问题,现在在master上已经解决了。但是由于考虑到有倒退风险,我没有往7.2和7.1分支提交。感兴趣的可以用每日构建版或自己编译测试。

另外,这只解决了伪粗体的问题,其实还有一个伪斜体的问题没有解决,我会再想想办法。

其实,将pdf导入为可编辑的Draw文档很麻烦,而且根本做不到100%完美,能做到80%已经很不错了。主要原因在于,pdf天生就是用来给别人看的,而不是给别人编辑的,这也就是为什么市面上有那么多pdf阅读器,但是pdf编辑器很少。很多自称pdf编辑的其实只是能旋转、提取页面、改变顺序。

比如,要编辑pdf页面上的文字,就会遇到字体问题这个坎过不去,pdf大多都只嵌入某个字体的子集,因此如果导入Draw之后使用内嵌字体,则新增加的文字在内嵌字体里可能根本没有那个字符,使用系统字体的话就需要先猜测或尝试检测嵌入的字体对应的是系统中哪个字体,而pdf嵌入的字体名称没有一个规则,叫法千奇百怪,所以很可能会用错字体(或者粗体斜体等属性用错)导致版式与pdf阅读器中看到的不一样。
开放,包容,奉献。
驿窗 发表于 2021-8-26 14:56:49 | 显示全部楼层
非常同意这个观点:pdf天生就是用来给别人看的,而不是给别人编辑的

编辑PDF,首先是要对PDF进行解释,然后才是对解释的内容进行修改。而解释PDF,目前除了adobe自己,其它任何厂商或组织,好像都只能“仿”,而做不到完全兼容。

最典型的就是打印机内置的ps解释芯片。有 adobe ps 3 认证的打印机,通常都会在打印主板上增加一个专门用来解释ps的芯片,这个芯片需要向adobe公司购买,它专门用来解释ps和pdf两种格式,保证文件内容可以精确打印到纸上。

有一些打印厂商会自己开发兼容的ps解释器或解释芯片,比如施乐或者佳能。但兼容的结果是总会或多或少出现一点兼容不完美的问题。而这个小概率的兼容问题,对于数字快印来说,则是致命的,因为会导致印出来的书是废的。

从这里来推,LibreOffice除非购买adobe的ps解释器,否则pdf解释永远达不到完美。

这还只是其中一个问题,另外一个问题是,被解释的pdf如果是非adobe软件生成的,那么即使使用了adobe的解释器,也有可能出问题。所以,买解释器意义并不大,只有专业领域才有意义,比如scribus。(scribus怎么解释pdf和ps我不太清楚,猜测是开发团队按ps手册自己写的代码,也就是仿ps;但scribus主要用于创建和输出pdf,而不是用于编辑pdf),办公领域好像没必要。

我的结论是,Draw的PDF编辑功能,只是一个办公性功能,而不是一个生产性功能,这与创建PDF不是一回事~
开源/Linux大众化,从驿窗开始!
驿窗 发表于 2021-9-13 17:10:37 | 显示全部楼层
本帖最后由 驿窗 于 2021-9-13 17:21 编辑

这也许是一个机会~

1. 首先,PDF最初创建的目的是为了输出一致性,即PDF文件一旦创建,那么任何地方需要打印/显示,其结果都是相同的,不会因为语言/地域/软件版本等等因素导致打印/显示出问题,类似的问题在ms office上时有出现,比如word版本升级导致的旧文件格式发生变化。

2. PDF是adobe最初创建的,其本身没有开源基因,所以它更倾向于技术封闭,不开放。

基于上面两点,PDF的创建本身是不考虑“重用”(reuse)的,尤其是重新编辑(reedit)。那么,我们其实可以考虑以社区开源的形式,开发一种新的类PDF格式,即能有PDF格式的输出一致的优点,又增加可重用(reuse)和可重新编辑(reedit)的特性。

这样,新格式与odt格式就非常类似,一方面容易被其它软件重用(reuse),另一方面也可以促进软件生态系统的构建。

当前大家的思路都是对PDF进行再编辑,而上面的想法是直接从根上解决问题,软件生态的发展,需要这一类的基础特性~

ps:

pdf由ps(postscript)发展而来,而ps从版本1到版本2再到版本3(ps3)之后,已经差不多20年了,好像没有再增加什么特别重大的新功能。

开源/Linux大众化,从驿窗开始!
ACTom 发表于 2021-9-14 08:57:11 | 显示全部楼层
锁兄越来越厉害了~!

@驿窗,事实标准就很难动了,不过,pdf目前已经是国际标准了
PDF was standardized as ISO 32000 in 2008. The last edition as ISO 32000-2:2020 was published in December 2020.
驿窗 发表于 2021-9-19 19:07:36 | 显示全部楼层
本帖最后由 驿窗 于 2021-9-19 19:09 编辑

PDF诞生的背景是智能手机之前,即电子阅读流行之前。那个时代,PDF的主要功能是为了印出来,显示反而是次要的。

现在情况不同了,大家看资料用的移动设备太方便了,以致于大家对于印的需求一直在下降,这一点,从每一年新书品种规模下降可以佐证~

所以,现在和未来对于显示pdf的需求是主流了,“印出来”的需求越来越小,或者,“精确印出来”需求越来越小。这种情况下,PDF提供的功能就有点过于复杂,那些复杂功能可能只有专业印刷才用得到。

如果有一种新格式实现起来比PDF简单很多,且又易于再编辑,那就是机会了。毕竟,PDF不适合再编辑。实在没精力,有精力的话,可以研究一下PDF实现~
开源/Linux大众化,从驿窗开始!
suokunlong 发表于 7 天前 | 显示全部楼层
驿窗 发表于 2021-9-19 19:07
如果有一种新格式实现起来比PDF简单很多,且又易于再编辑,那就是机会了。毕竟,PDF不适合再编辑。实在没精力,有精力的话,可以研究一下PDF实现~

LibreOffice导出PDF时的“混合式PDF”选项不就是为此而生的吗?该选项在导出的PDF中嵌入一个ODF文件,该ODF文件与导出PDF时文档的状态完全一致。当用LibreOffice打开嵌入了ODF的PDF时,LibreOffice打开的其实是该嵌入的PDF,而不是PDF内容本身,从而能够实现无损原样对文档内容的编辑。

作为“最佳实践“,在导出为”混合式PDF“时,你保存的文件名最好是"文件名.odt.pdf"或"文件名.ods.pdf"这样的,也就是在.pdf后缀前加上嵌入的可编辑文档对象的格式后缀,这样别人也就能猜测到该文档采用了”混合式PDF“选项从而可以用LibreOffice无损打开编辑。

另外,既然PDF标准允许这样的嵌入方式,那么其他“PDF生成软件”(比如微软Office)应该也可以这么做,将其可编辑格式与PDF格式混合为同一个PDF文件,这样编辑查看打印三不误。


开放,包容,奉献。
驿窗 发表于 5 天前 | 显示全部楼层
本帖最后由 驿窗 于 2021-9-23 13:13 编辑

我一直以为“混合PDF”是LibreOffice开发的功能~

深入想一下,确实解决了编辑查看打印三个问题,这个思路有点意外,不知道这个PDF混合功能是从哪个版本的PDF开始的~

开源/Linux大众化,从驿窗开始!
*滑块验证:
您需要登录后才可以回帖 登录 | 马上加入

本版积分规则

Archiver|手机版|小黑屋|LibreOffice 中文社区 ( 粤ICP备13080851号-4 )

GMT+8, 2021-9-28 00:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表