®综合版本:Cobol、C、C++、Java、Perl、PHP、Python、RPG、Ruby和Tcl版本7.0.1PDFlib、PDI和PPS参考PDF动态生成库版权所有©1997–2007PDFlibGmbH和ThomasMerz。保留所有权利。在此授予PDFlib用户许可,可以内部使用为目的复制本手册的印刷或数字副本。PDFlibGmbHTal40,80331München,Germany电话+49•89•29164687传真+49•89•29164686如果您有任何疑问,请查看tech.groups.yahoo.com/group/pdflib上的PDFlib邮件列表及相关存档。许可联系人:sales@pdflib.com商业PDFlib许可证持有人支持:support@pdflib.com(请提供您的许可证号)本出版物及其所含信息“按原样”提供;如有更改,恕不另行通知,且不应视为PDFlibGmbH所做的承诺。PDFlibGmbH不对存在的任何错误和不准确性承担任何责任,不对本出版物做出任何形式(明示、默示或法定)的保证,并明确声明:不对其适销性、特定用途的实用性以及有关第三方权利的无侵权做出任何形式的保证。PDFlib及PDFlib徽标是PDFlibGmbH的注册商标。在此授予PDFlib许可证持有者在其产品文档中使用PDFlib名称和徽标的权利。但是,并不要求使用PDFlib名称和徽标。Adobe、Acrobat、PostScript和XMP是AdobeSystemsInc.的商标。AIX、IBM、OS/390、WebSphere、iSeries和zSeries是InternationalBusinessMachinesCorporation的商标。ActiveX、Microsoft、OpenType和Windows是MicrosoftCorporation的商标。Apple、Macintosh和TrueType是AppleComputer,Inc.的商标。Unicode及Unicode徽标是Unicode,Inc.的商标。Unix是TheOpenGroup的商标。Java和Solaris是SunMicrosystems,Inc.的商标。HKS是HKS品牌联名的注册商标:Hostmann-Steinberg、K+EPrintingInks、Schmincke。其他公司的产品和服务名称可能是其他公司的商标或服务标志。软件应用程序或用户文档中显示的PANTONE®颜色可能不符合PANTONE确定的标准。有关准确的颜色,请参阅昀新版的PANTONE颜色文献。PANTONE®和其他Pantone,Inc.商标为Pantone,Inc.所有。版权所有©Pantone,Inc.,2003。Pantone,Inc.是颜色数据和/或软件的版权所有者,并已授予PDFlibGmbH使用许可,但仅限于同PDFlib软件一起分发。除非作为执行PDFlib软件的一部分,否则不得将PANTONE颜色数据和/或软件复制到另一此案或存储设备中。PDFlib包含下列经过修改的第三方软件组件:ICClib,版权所有©1997-2002GraemeW.GillGIF图像解码器,版权所有©1990-1994DavidKoblasPNG图像参考库(libpng),版权所有©1998-2004GlennRanders-PehrsonZlib压缩库,版权所有©1995-2002Jean-loupGaillyandMarkAdlerTIFFlib图像库,版权所有©1988-1997SamLeffler,版权所有©1991-1997SiliconGraphics,Inc.EricYoung编写的密码软件,版权所有©1995-1998(eay@cryptsoft.com)IndependentJPEGGroup的JPEG软件,版权所有©1991-1998,ThomasG.Lane密码软件,版权所有©1998-2002TheOpenSSLProject()ExpatXML分析器,版权所有©1998,1999,2000ThaiOpenSourceSoftwareCenterLtdPDFlib包含RSASecurity,Inc.的MD5消息摘要算法。作者:ThomasMerz设计和插图:AlessioLeonardi质量控制(手册):KatjaSchnelleRomaus、KurtStützer质量控制(软件):软件开发组目录3目录1PDFlib编程概念51.1数据类型51.2选项列表51.3函数范围92常规函数112.1参数处理112.2设置132.3文档函数162.4页面函数222.5PDFlib虚拟文件系统(PVF)262.6异常处理282.7日志303文本函数313.1字体处理313.2Type3字体定义373.3编码定义393.4简单文本输出403.5Unicode转换函数454格式化函数474.1使用文本流的单行文本474.2使用文本流的多行文本524.3表格式化644.4匹配框705图形函数735.1图形状态735.2保存和恢复图形状态765.3坐标系统转换775.4显式图形状态795.5路径构建815.6路径绘制和剪切845.7图层864目录6颜色函数896.1设置颜色和色彩空间896.2ICC色彩特征描述文件926.3图案和着色957图像和模板函数997.1图像1007.2模板1067.3缩览图1078PDF导入函数(PDI)1098.1文档和页面1098.2pCOS函数1148.3其他PDI处理1168.4不常用的PDI参数1179PersonalizationFunctions(PPS)11910交互功能12310.1交互元素的参数12310.2动作12310.3命名目标12710.4注释12910.5表单域13410.6书签13911多媒体功能(3D图片)14112文档交换14312.1文档信息域14312.2XMP元数据14412.3标签PDF146A所有函数的列表149B所有参数的列表151C所有选项列表153D修订历史记录163索引1651.1数据类型51PDFlib编程概念1.1数据类型本手册记录了用于各种语言绑定的函数/方法范例。各种语言绑定之间的主要差异在于:在面向对象的语言绑定中,PDFlib方法的名称中不包含PDF_前縀,而在其他语言绑定中,PDF_前縀却是所有函数名称的一部分。此外,PDF上下文参数必须作为第一个自变量提供给非面向对象的语言绑定中的所有函数。相反,面向对象的语言绑定将PDF上下文隐藏在语言包装程序创建的对象中表1.1详细说明了所有语言绑定使用的PDF文档类型以及字符串类型。有关文本和字符串处理的详细信息,请参见PDFlib教程。由于所有绑定中都有明显的对应数据类型,所以表中没有提及整型、长整型和双精度型数据。1.2选项列表选项列表是一种强大且简便的PDFlibAPI函数调用控制方法。许多API方法都支持选项列表(简称optlists),而不要求大量的函数参数。这些选项列表是字符串,可以包含任意数量的选项。选项列表支持各种数据类型以及数组等复合数据。在大多数语言绑定中,可通过连接所需关键字和值来简便地构建optlists。C语言编程人员也许需要使用sprintf()函数构建optlists。表1.2列出了各种示例。表1.1语言绑定中的数据类型语言绑定p参数?PDF_前缀?字符串数据类型二进制数据类型C是是constchar*11.这里认为C语言NULL字符串值相当于空字符串。constchar*C++否否string22.NULL字符串值不能用于C++绑定。char*Cobol是否33.Cobol程序必须使用PDFlib函数的缩写名称。STRINGSTRINGJava否否字符串byte[]Perl是是字符串字符串PHP是是字符串字符串PHP5(面向对象)否否字符串字符串Python是是字符串字符串RPG是是string,但必须添加x’00’dataRuby否否字符串字符串Tcl是是字符串字节数组表1.2选项示例选项类型示例浮点型opacityfill=0.75百分比leading=150%布尔型embedding(等效于embedding=true)布尔型nokerning(等效于kerning=false)字符串password{secretstring}(该字符串值包含三个空白)6第1章:PDFlib编程概念选项列表语法optlist是一个字符串,包含一个或多个关键字/值对。可用任意空白字符(例如空格、制表符、回车符、换行符等)或等号“=”分隔关键字和值,以及多个关键字/值对。另外,还可用等号“=”分隔关键字和值:keyvaluekey=value如果相应值是个包含空白字符或等号的字符串,则必须用括号将该字符串括起来:key={multiplewords}key={value=containing=equal=signs}由于选项列表将由左至右计算,可以在同一列表内多次使用同一选项。这时,昀后一次出现的选项将覆盖前面的选项。在下面的示例中,第一个选项赋值将被第二个覆盖;该选项列表处理完后,键值将为2:key=1key=2下文将更加详细地讨论选项列表支持的下列数据类型:简单值:布尔型、字符串、内容/超文本/名称字符串、单字符、关键字、浮点型、整型、句柄复合值:列表、矩形、动作列表、色彩对于列表类型的选项,必须用大括号将该列表括号来,并且列表元素必须用空白字符分隔开来:key={value1value2value3}如果选项列表包含多个关键字/值对,则确保在左大括号前和右大括号后插入空白字符(也可以在选项名称和左大括号之间使用等号):key1={...values...}key2={...values...}字符串password{weird\}string}(该字符串值包含一个右大括号)单字符replacementchar=space(等效于replacementchar=0x20)关键字blendmode=overlay矩形cropbox={00500600}包含三个数字的列表dasharray={112233}包含两个关键字的列表position{centerbottom}包含一个列表的列表polylinelist={{10203040}}色彩backgroundcolor={cmyk0100}包含单个动作的列表action={activate{012}}包含三个动作的列表action={keystroke=0format=1validate=2}选项列表metadata={filename=info.xmp}包含一个选项列表的列表fill={{area=tablefillcolor={rgb100}}}包含两个选项列表的列表fill={{area=rowoddfillcolor={rgb010}}{area=rowevenfillcolor={rgb100}}}表1.2选项示例选项类型示例1.2选项列表7某些列表类型的选项接受optionlist或listofoptionlists类型。optionlist类型的选项包含一个或多个从属选项。listofoptionlists类型的选项包含一个或多个嵌套选项列表。处理嵌套选项列表时,指定适当数量的右大括号很重要。有关示例,请参见表1.2。简单值简单值可以使用下列任一数据类型:布尔型:true或false;如果省略布尔选项的值,则缺省值为true。作为简略表示法,可使用noname替代name=false。字符串:这些字符串是ASCII纯文本字符串,通常用于不可本地化的关键字。包含空白字符或“=”的字符串必须用{和}括起来。可以使用{}构建空字符串。如果字符{和}是字符串的一部分,则必须在前面添加\字符。内容字符串、超文