PDFlib GmbH München, Germany
www.pdflib.com
PDFlib、 PDI 和
PPS 教程
®
PDF 动态生成库
版本 7.0.1
Cobol、 C、 C++、 Java、 Perl、 PHP、 Python、 RPG、
综合版本:
Ruby 和 Tcl
版权所有 © 1997–2007 PDFlib GmbH 和 Thomas Merz。保留所有权利。
在此授予 PDFlib 用户许可,可以内部使用为目的复制本手册的印刷或数字副本。
PDFlib GmbH
Tal 40, 80331 München, Germany
www.pdflib.com
电话 +49 • 89 • 29 16 46 87
传真 +49 • 89 • 29 16 46 86
如果您有任何疑问,请查看 tech.groups.yahoo.com/group/pdflib 上的 PDFlib 邮件列表及相关存档。
许可联系人: sales@pdflib.com
商业 PDFlib 许可证持有人支持: support@pdflib.com (请提供您的许可证号)
本出版物及其所含信息 “按原样”提供;如有更改,恕不另行通知,且不应视为 PDFlib GmbH 所做的
承诺。 PDFlib GmbH 不对存在的任何错误和不准确性承担任何责任,不对本出版物做出任何形式 (明
示、默示或法定)的保证,并明确声明:不对其适销性、特定用途的实用性以及有关第三方权利的无
侵权做出任何形式的保证。
PDFlib 及 PDFlib 徽标是 PDFlib GmbH 的注册商标。在此授予 PDFlib 许可证持有者在其产品文档中使用
PDFlib 名称和徽标的权利。但是,并不要求使用 PDFlib 名称和徽标。
Adobe、Acrobat、PostScript 和 XMP 是 Adobe Systems Inc. 的商标。AIX、IBM、OS/390、WebSphere、
iSeries 和 zSeries 是 International Business Machines Corporation 的商标。ActiveX、Microsoft、OpenType
和 Windows 是 Microsoft Corporation 的商标。Apple、Macintosh 和 TrueType 是 Apple Computer, Inc. 的
商标。Unicode 及 Unicode 徽标是 Unicode, Inc. 的商标。Unix 是 The Open Group 的商标。Java 和 Solaris
是 Sun Microsystems, Inc. 的商标。HKS 是 HKS 品牌联名的注册商标:Hostmann-Steinberg、K+E Printing
Inks、 Schmincke。 其他公司的产品和服务名称可能是其他公司的商标或服务标志。
软件应用程序或用户文档中显示的 PANTONE® 颜色可能不符合 PANTONE 确定的标准。有关准确的颜
色,请参阅最新版的 PANTONE 颜色文献。 PANTONE® 和其他 Pantone, Inc. 商标为 Pantone, Inc. 所有。
版权所有 © Pantone, Inc., 2003。
Pantone, Inc. 是颜色数据和 / 或软件的版权所有者,并已授予 PDFlib GmbH 使用许可,但仅限于同
PDFlib 软件一起分发。除非作为执行 PDFlib 软件的一部分,否则不得将 PANTONE 颜色数据和 / 或软件
复制到另一此案或存储设备中。
PDFlib 包含下列经过修改的第三方软件组件:
ICClib,版权所有 © 1997-2002 Graeme W. Gill
GIF 图像解码器,版权所有 © 1990-1994 David Koblas
PNG 图像参考库 (libpng),版权所有 © 1998-2004 Glenn Randers-Pehrson
Zlib 压缩库,版权所有 © 1995-2002 Jean-loup Gailly and Mark Adler
TIFFlib 图像库,版权所有 © 1988-1997 Sam Leffler,版权所有 © 1991-1997 Silicon Graphics, Inc.
Eric Young 编写的密码软件,版权所有 © 1995-1998 (eay@cryptsoft.com)
Independent JPEG Group 的 JPEG 软件,版权所有 © 1991-1998, Thomas G. Lane
密码软件,版权所有 © 1998-2002 The OpenSSL Project (www.openssl.org)
Expat XML 分析器,版权所有 © 1998, 1999, 2000 Thai Open Source Software Center Ltd
PDFlib 包含 RSA Security, Inc. 的 MD5 消息摘要算法。
作者:Thomas Merz、 Katja Schnelle Romaus
设计和插图:Alessio Leonardi
质量控制 (手册): Katja Schnelle Romaus、 Kurt Stützer
质量控制 (软件):软件开发组
目录
0 应用 PDFlib 许可证密钥 9
1 前言 13
1.1 文档与示例指南 13
1.2 PDFlib 编程 14
1.3 PDFlib 7 中的新增功能 16
1.4 PDFlib/PDFlib+PDI/PPS 7 中的功能 19
1.5 产品的功能对照 21
2 PDFlib 语言绑定 23
2.1 Cobol 绑定 23
2.2 COM 绑定 24
2.3 C 绑定 25
2.4 C++ 绑定 27
2.5 Java 绑定 28
2.6 .NET 绑定 30
2.7 Perl 绑定 31
2.8 PHP 绑定 33
2.9 Python 绑定 35
2.10 REALbasic 绑定 36
2.11 RPG 绑定 37
2.12 Ruby 绑定 40
2.13 Tcl 绑定 41
3 PDFlib 编程 43
3.1 常规编程 43
3.1.1 异常处理 43
3.1.2 PDFlib 虚拟文件系统 (PVF) 45
3.1.3 资源配置和文件搜索 46
3.1.4 在内存中生成 PDF 文档 49
3.1.5 在基于 EBCDIC 的平台上使用 PDFlib 50
3.1.6 大型文件支持 50
3.2 页面说明 51
3.2.1 坐标系统 51
3.2.2 页面大小 53
3.2.3 路径 54
3.2.4 模板 54
目录 3
3.3 使用颜色 56
3.3.1 图案和平滑着色 56
3.3.2 专色 57
3.3.3 色彩管理和 ICC 色彩特征描述文件 59
3.4 交互元素 63
3.4.1 创建交互元素的示例 63
3.4.2 文本域的格式化选项 67
4 Unicode 与旧有编码 69
4.1 概述 69
4.2 几个重要的 Unicode 概念 70
4.3 PDFlib 中的字符串 72
4.3.1 PDFlib 中的字符串类型 72
4.3.2 识别 Unicode 的语言中的字符串 72
4.3.3 不识别 Unicode 的语言绑定中的字符串 73
4.4 8 位编码 76
4.5 中文、日文和韩文文本编码 80
4.6 字符和字形寻址 83
4.6.1 转义序列 83
4.6.2 字符引用和字形名称引用 84
4.6.3 字形检查和替代 86
4.6.4 检查字形可用性 87
5 字体处理 89
5.1 字体和编码概述 89
5.1.1 支持的字体格式 89
5.1.2 字体编码 90
5.2 字体格式详细信息 92
5.2.1 PostScript Type 1 字体 92
5.2.2 TrueType 和 OpenType 字体 93
5.2.3 用户定义的 (Type 3) 字体 94
5.3 搜索、嵌入和子集化字体 95
5.3.1 搜索字体 95
5.3.2 Windows 和 Mac 上的宿主字体 98
5.3.3 字体嵌入 99
5.3.4 字体子集化 101
5.4 其他主题 103
5.4.1 符号字体和特定于字体的编码 103
5.4.2 TrueType 和 OpenType 字体的字形 ID 寻址 104
5.4.3 欧元符号字形 104
5.4.4 Unicode 兼容的字体 105
5.5 字体规格和文本变体 106
5.5.1 字体和字形规格 106
5.5.2 字距调整 107
5.5.3 文本变体 108
4 目录
5.6 中文、日文和韩文字体 110
5.6.1 标准 CJK 字体 110
5.6.2 自定义 CJK 字体 111
6 导入图像和 PDF 页 115
6.1 导入光栅图像 115
6.1.1 基本图像处理 115
6.1.2 受支持的图像文件格式 116
6.1.3 剪贴路径 118
6.1.4 图像蒙版和透明度 119
6.1.5 图像着色 121
6.1.6 多页图像文件 122
6.1.7 OPI 支持 122
6.2 使用 PDI (PDF 导入库)生成 PDF 页 123
6.2.1 PDI 功能和应用程序 123
6.2.2 与 PDFlib 一起使用 PDI 函数 123
6.2.3 可接受的 PDF 文档 125
7 格式化功能 127
7.1 放置并调整单行文本 127
7.1.1 简单的文本放置 127
7.1.2 在框中放置文本 128
7.1.3 框中填充文本 129
7.1.4 沿字符对齐文本 131
7.1.5 放置图章 131
7.1.6 使用前导字符 132
7.2 多行 textflow 133
7.2.1 在限定框中放置 textflow 134
7.2.2 段落格式设置选项 136
7.2.3 内嵌选项列表和宏 137
7.2.4 制表位 139
7.2.5 编号列表和段落间距 140
7.2.6 控制字符、字符映射和符号字体 141
7.2.7 断字 144
7.2.8 控制换行算法 145
7.2.9 环绕文本 147
7.3 放置图像和导入的 PDF 页 150
7.3.1 简单的对象放置 150
7.3.2 在框中定位对象 150
7.3.3 使对象适合框 151
7.3.4 对象的定向 152
7.3.5 旋转对象 153
7.3.6 调整页面尺寸 155
目录 5
7.4 表格式化 156
7.4.1 放置简单表 157
7.4.2 表单元格的内容 158
7.4.3 表和列宽度 160
7.4.4 大表示例 161
7.4.5 表实例 165
7.5 匹配框 168
7.5.1 装饰文本行 168
7.5.2 在 Textflow 中使用匹配框 169
7.5.3 匹配框和图像 170
8 pCOS 接口 173
8.1 pCOS 的简单示例 173
8.2 处理基本 PDF 数据类型 174
8.3 复合数据结构和 ID 176
8.4 路径语法 177
8.5 伪对象 179
8.6 加密的 PDF 文档 183
9 生成各种风格的 PDF 185
9.1 Acrobat 和 PDF 版本 185
9.2 加密 PDF 187
9.2.1 PDF 安全性的优缺点 187
9.2.2 用 PDFlib 保护文档 188
9.3 网页优化的 (线性化的) PDF 190
9.4 用于印刷生产的 PDF/X 191
9.4.1 PDF/X 系列标准 191
9.4.2 生成符合 PDF/X 标准的输出 192
9.4.3 用 PDI 导入 PDF/X 文档 195
9.5 用于存档的 PDF/A 196
9.5.1 PDF/A 标准 196
9.5.2 生成符合 PDF/A 标准的输出 196
9.5.3 用 PDI 导入 PDF/A 文档 199
9.5.4 用于创建 PDF/A 的色彩策略 201
9.5.5 PDF/A 验证 202
9.6 标签 PDF 203
9.6.1 用 PDFlib 生成标签 PDF 203
9.6.2 用直接 Text Output 和 Textflows 创建标签 PDF 205
9.6.3 启动复杂布局的项目 206
9.6.4 在 Acrobat 中使用标签 PDF 209
6 目录
10 数据变量和块 211
10.1 安装 PDFlib 块增效工具 211
10.2 PDFlib 块概念的概述 213
10.2.1 文档设计和程序代码的完整分离 213
10.2.2 块属性 214
10.2.3 链接多个 Textflow 块 215
10.2.4 为什么不使用 PDF 表单域? 216
10.3 建立 PDFlib 块 217
10.3.1 利用 PDFlib 块增效工具交互式建立块 217
10.3.2 编辑块属性 220
10.3.3 页和文件之间的块拷贝 221
10.3.4 将 PDF 表单域转换为 PDFlib 块 222
10.4 用于自动化处理的标准属性 224
10.4.1 常规属性 224
10.4.2 Text 属性 226
10.4.3 Image 属性 230
10.4.4 PDF 属性 230
10.4.5 自定义属性 230
10.5 使用 pCOS 询问块名及其属性 231
10.6 PDFlib 块规格 233
10.6.1 PDFlib 块的 PDF 对象结构 233
10.6.2 利用 pdfmarks 生成 PDFlib 块 236
A 修订历史记录 237
索引 239
目录 7