您尚未登录。

#1 2019-01-16 22:09:27

azuki
会员
注册时间: 2018-11-28
帖子: 6

某个 pdf 文件用 firefox 和 okular 显示乱码

就是这个文件

我略微观察了一下,乱码看起来和这个帖子里的有点像,然后我复制了一点乱码进行转换,果然可以转成中文。

至于解决方案,我在这里(PDF文档的乱码问题)看到了另一个阅读器——mupdf,用它果然可以正常显示。


可是,我还是不知道出问题的原因是什么。应该不是字体的问题(因为不是显示成方块),而是编码的问题。那么是制作pdf的时候因为不规范而出了问题吗?比如没有选择编码,所以okular使用了一个默认的编码?
okular/firefox有没有办法正常显示这样的文件呢?还是必须装多个阅读器?

离线

#2 2019-01-17 01:00:51

驿窗
驿窗
所在地: 基础开源研究
注册时间: 2016-06-03
帖子: 927
个人网站

Re: 某个 pdf 文件用 firefox 和 okular 显示乱码

理论上,所有PDF文件乱码,都是制作PDF时不规范导致的~(其实这是国内很多大学的数字图书馆所面临的现状)
国内流行这样操作:在制作PDF文件时,想确认显示是否正常,就把PDF文件放在不同电脑/设备或不同系统里打开查看,而不是检查制作流程是否符合PDF规范,这留下太多漏洞,所以时不时给你乱下码;

避免显示乱码的最佳办法是在PDF文件中嵌入字体~
嵌入字体的PDF文件除了包含字体信息,也包含编码信息;
你那个文件,我检查了一下,嵌入字体信息为空,即没有嵌入任何字体;另外,那个文件一共使用了5种字体,只有宋体是正规字体,其它四种都不正规,即阅读器无法解析到字体的正确信息,所以不清楚应该从系统调用哪种字体;
无嵌入字体,且字体信息不正确,这两个情况同时发生,就算系统里有对应的字体,也会乱码;

mupdf其实用了一种中庸思维,即解析无嵌入字体文件时,从系统中找一种相近/默认字体进行替代;

所有文字式PDF乱码解决方案最终都是要指定替代字体,无非是具体怎么实现~
okular/firefox研究不多,但方向应该是强制字体替代;

windows下制作PDF一直存在这种乱象,linux下使用libreoffice就比较简单,因为libreoffice制作PDF时会强制嵌入字体,你想不嵌入,还真不太容易~

最近编辑记录 驿窗 (2019-01-17 01:04:41)


开源/Linux大众化,从驿窗开始~

离线

#3 2019-01-17 13:39:54

azuki
会员
注册时间: 2018-11-28
帖子: 6

Re: 某个 pdf 文件用 firefox 和 okular 显示乱码

谢谢驿窗。
明白了,是制作不规范导致的。看来还是得装多个阅读器,不过也没什么负担就是。

离线

#4 2019-01-17 16:24:03

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: 某个 pdf 文件用 firefox 和 okular 显示乱码

PDF上的文字应该是直接引用字体内部的CID,不用Unicode,编辑或者复制时依赖嵌入字体的CMap转换表给你临时生产Unicode数据,Adobe Reader最新版甚至能复制出富文本,不过这个肯定是依赖Windows的剪贴板OLE机制了,别的系统用不了。

最近编辑记录 xtricman (2019-01-17 23:04:56)


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#5 2019-01-17 18:40:54

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 某个 pdf 文件用 firefox 和 okular 显示乱码

bd444392ff85a1393ae8ab6c5448907f8c3c34.png
这种 PDF 最讨厌了。

离线

#6 2019-01-17 18:43:00

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 某个 pdf 文件用 firefox 和 okular 显示乱码

xtricman 说:

PDF上的文字应该是直接引用字体内部的CID,不用Unicode,编辑或者复制时依赖嵌入字体的CID-Unicode转换表给你临时生产Unicode数据,Adobe Reader最新版甚至能复制出富文本,不过这个肯定是依赖Windows的剪贴板OLE机制了,别的系统用不了。

X Window 剪贴板又不是不支持富文本,只要请求的类型提供方能够提供就行。

离线

页脚