惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
aimingoo的专栏
aimingoo的专栏
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
Engineering at Meta
Engineering at Meta
IT之家
IT之家
V
Visual Studio Blog
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
A
About on SuperTechFans
博客园 - 聂微东
Blog — PlanetScale
Blog — PlanetScale
N
News and Events Feed by Topic
A
Arctic Wolf
WordPress大学
WordPress大学
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
F
Fortinet All Blogs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Y
Y Combinator Blog
T
Threat Research - Cisco Blogs
Latest news
Latest news
Simon Willison's Weblog
Simon Willison's Weblog
Cyberwarzone
Cyberwarzone
S
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
Lohrmann on Cybersecurity
Stack Overflow Blog
Stack Overflow Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy International News Feed
J
Java Code Geeks
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
I
Intezer
L
LangChain Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
G
GRAHAM CLULEY
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
AWS News Blog
AWS News Blog
Attack and Defense Labs
Attack and Defense Labs
Security Archives - TechRepublic
Security Archives - TechRepublic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - Charltsing

C# 预处理器指令语言 - 完整语法速查 LoggerMessage:编写高性能的 .NET 日志 PDFImageViewer v2.1 PDF查看图像和无损导出工具,一键转换单图PDF为JBig2黑白PDF。兼谈PDF内嵌图像。 PDF的色彩空间 25 个使用.NET 10 的性能技巧 为什么 PDF 编辑这么难? Unicode、UTF-8、UTF-16 如何直接编辑Github的Readme.md文件 自动导入工程项目属性,Directory.Build.props 和 Directory.Build.targets 新版 C# 高效率编程指南 C# 内联数组(Inline Array):高性能数组的新选择 如何在 .NET 中使用 SIMD .NET异步编程进阶:从语法糖到高性能架构的核心突破 C# 中的安全零拷贝 使用UnsafeAccessor 访问私有字段 C# 12与.NET 8实战指南:20个提升代码质量的最佳实践 C# Net9的模块初始化器(Module Initializer) ECMA-335 CLI 规范附录 C#中避免GC压力和提高性能的8种技术 函数内联 硬件内在函数 官方:oPDF v2.1免费版,专业的PDF水印分析处理工具,无损去除水印,通杀八类PDF水印。它是PDFCommander 万能PDF水印删除工具的升级版。 C#自动引用Debug | Release版本的dll
PDFontFixer v1.5 免费版,解决PDF文档复制粘贴乱码的问题,修复PDF文档字体的Unicode映射。
Charltsing · 2026-03-18 · via 博客园 - Charltsing

一直以来,经常会有人问我为什么PDF文档中的内容能看到,也能复制,但是粘贴就会乱码。

例如,一个红楼梦的样本文件,如果我打开文档之后,复制文本,粘贴到记事本,就会发现乱码

1

那么,是什么原因造成的乱码呢?我用AI分析这个文档,看一下字符是如何被渲染到页面上面的。

首先,我们用oPDF,看一下文档的内容流,你会看到类似的操作符

image

 这段指令的意思是,使用C0_0字体,渲染0003字符到指定位置。AI分析结果如下:

<C0003> Tj
    │
    ▼
/C0_0 (10 0 R) ──Type0字体──┐
    │                          │
    ├─ /Encoding /Identity-H  → CID = 0x0003 = 3
    │
    └─ /DescendantFonts → (31 0 R) (字体类型:CIDFontType0)
                            │
                            ├─ /CIDSystemInfo → Identity
                            │
                            └─ /FontDescriptor → (32 0 R)
                                                    │
                                                    └─ /FontFile3 → (20 0 R)
                                                                        │
                                                                        ▼
                                                                ┌───────────────┐
                                                                │ CFF数据流      │
                                                                │               │
                                                                │ CharStrings   │
                                                                │   [0] .notdef │
                                                                │   [1] CID 1   │
                                                                │   [2] CID 2   │
                                                                │   [3] CID 3 ★ │ ← 字形轮廓数据在这里!
                                                                │   ...         │
                                                                └───────────────┘

通过分析,我们知道了0003字符是从字体文件 /FontFile3 中读取字形,并渲染的。所以我们可以正确的看到这个字。

那么,为什么复制粘贴就乱码了呢?这就要提到一个字体中的概念----Unicode映射。字体文件的本质就是矢量绘图,而复制粘贴需要知道文字的Unicode码,把这个码放到剪贴板里面,其它的软件才会知道是什么字。正规的字体文件,都会带一个Unicode映射表,这个表会告诉软件字体中的第几个字对应的是Unicode中的哪一个字的编码。然后我们才能正确地复制粘贴。

所以,PDF文档为什么复制粘贴之后就会乱码的原因,想必你也清楚了。正是由于某些PDF文档在制作的时候,有意将Unicode映射表删掉了,造成我们无法得知复制的字对应的是Unicode的哪一个字,所以无法复制粘贴文档中的文本。这是一个很简单,也很有效的文档反拷贝手段。

为了解决这个问题,我写了一个软件PDFontFixer,采用OCR识别PDF文档中的字体里面的每一个字形,得到对应的Unicode编码,再将这些编码做成ToUnicode映射表,保存到PDF文档的字体里。这样,我们就可以正常复制粘贴文本了。

修复PDF字体缺映射

 2

1

相关的软件和测试文档在蓝奏云下载,密码:73t8 。 2026.5.15更新到 v1.5版。修改快捷键,可以输入空格。

有问题可以与作者联系 QQ:564955427,Email:liucq@163.com