新闻资讯 | 控件产品 | 技术文章 | 购物车 | 合作伙伴 | 问题解答 | 电子简报 | PDF论坛 | 资源下载
您现在的位置:技术文章>PDF开发篇 首页|PDF应用篇|PDF开发篇|解决方案

PDFlib开发:创建超文本元素的示例

发布日期:2006-6-2 作者:PDFHome 出处:PDFHome

 

本文解释如何利用PDFlib创建超文本元素(如书签、表单域和注释)。图 1 显示了包含我们将在本节中创建的所有超文本元素的结果文档。该文档包含以下超文本元素:
     > 在页面的右上角,文本 www.pdfhome.com.cn 处有一个不可见的 Web 链接。单击此区域将打开一个相关网页。
     > Web 链接之下有一个文本类型的灰色表单域。通过使用 JavaScript 代码,将自动使用当前日期填充该表单域。
     > 红色图钉包含带有一个附件的注释。单击此图钉将打开附加的文件。
     > 在页面的左下角,有一个带有打印机符号的按钮类型的表单域。单击此按钮将执行Acrobat 的菜单项“文件” -> “打印”。
     > 该导航页包含书签“Our Paper Planes Catalog”。单击此书签将打开另一页 PDF 文档。
在下一个段落中,我们将详细说明如何使用 PDFlib 创建这些超文本元素。
Web 链接让我们从网站 www.pdfhome.com.cn 的链接开始。此操作分为两步完成。第一步,我们创建 URI 类型的操作(在 Acrobat 中:打开一个 Web 链接)。这将为我们提供一个操作句柄,随后可将该句柄指定给一个或多个超文本元素:
web_action = oPDF.create_action("URI", "url http://www.pdfhome.com.cn")

 


图 1 包含超文本元素的文档

第二步,我们创建实际的链接。PDF 中的链接是一个 Link 类型的注释。该链接的 action 选项包含将触发操作的事件名称 activate 以及上面为操作自身创建的 web_action 句柄:
         oPDF.create_annotation left_x, left_y, right_x, right_y, "Link",& _

                                          "linewidth=0 action {activate " & web_action & "}"
默认情况下,将使用一个细的黑色边框显示该链接。最初,准确定位非常方便,但是我们使用 linewidth=0 禁用边框。
作为一种选择方式,您可以按如下方式使用 weblink 选项调用 fit_textline( ) 来创建文本输出和链接注释:
     oPDF.fit_textline "http://www.pdfhome.com.cn", x, y, "position=50 underline "& _

                      "weblink {linewidth=1 annotcolor={rgb 1 0 0 }} fillcolor={rgb 0 0 1}"
用于跳转到另一文件的书签现在我们来创建书签“Our Paper Planes Catalog”,该书签可跳转到另一个名为 paper_planes_catalog.pdf 的 PDF 文件。首先我们创建一个 GoToR 类型的操作。在此操作的选项列表中,我们使用 filename 选项定义目标文档的名称; destination  选项指定将要扩大的页面的某个部分。更准确地说,文档将使用固定视图 (type fixed) 显示
在第二页 (page 2) 上,在此视图中,页面的中间部分可见 (left 50 top 200) 并且缩放因子为200% (zoom 2):
           optlist = "filename paper_planes_catalog.pdf " & _
                        "destination {page 2 type fixed left 50 top 200 zoom 2}"
           goto_action = oPDF.create_action("GoToR", optlist)
在下一个步骤中,我们创建实际的书签。书签的 action 选项包含将触发操作的 activate 事件,以及上面为所需操作创建的 goto_action 句柄。选项 fontstyle bold 指定粗体文本,textcolor {rgb 0 0 1} 使书签成为蓝色的。提供书签文本“Our Paper Planes Catalog”作为函数参数:
          optlist="action {activate " & goto_action & " } fontstyle bold textcolor {rgb 0 0 1}"
          catalog_bookmark=oPDF.create_bookmark("Our Paper Planes Catalog", optlist)
单击书签将显示目标文档中的页面的指定部分。
带有文件附件的注释在下一个示例中,我们创建一个文件附件。我们先创建一个FileAttachment 类型的注释。filename 选项指定附件的名称,选项 mimetype image/gif 指定附件的类型(MIME 是一种用于给文件内容分类的常用约定) 。注释将显示为一个红色(annotcolor {rgb 1 0 0}) 的图钉 (iconname pushpin),并带有一个工具提示 (contents {Get the Kraxi Paper Plane!})。注释不进行打印 (display noprint):
       optlist = "filename kraxi_logo.gif mimetype image/gif iconname pushpin " & _
                    "annotcolor {rgb 1 0 0} contents {Get the Kraxi Paper Plane!} display noprint"
      oPDF.create_annotation left_x, left_y, right_x, right_y, "FileAttachment", optlist
请注意,使用 iconname 定义的符号的大小不会变化;图标将按其标准尺寸显示在指定矩形的左上角。
用于打印的按钮表单域下一个示例创建可用于打印文档的按钮表单域。在第一个版本中,我们将对按钮添加一个标题;在以后的版本中,我们将使用打印机符号,而不用标题。
我们先创建一个 Named 类型的操作(在 Acrobat 中:执行菜单项)。同样,我们必须指定标题的字体:

       print_action = oPDF.create_action("Named", "menuname Print")
       button_font = oPDF.load_font("Helvetica-Bold", "winansi", "")
按钮表单域的 action 选项包含作为执行操作的触发器的 up 事件(在 Acrobat 中:鼠标松开),以及上面为操作本身创建的 print_action 句柄。backgroundcolor {rgb 1 1 0} 选项指定黄色背景, bordercolor {rgb 0 0 0} 指定黑色边框。选项 caption Print 将文本 Print 添加到按钮上, tooltip {Print the document} 为用户创建附加说明。font 选项通过使用上面创建的
button_font 句柄指定字体。默认情况下,将调整标题的尺寸以使其完全适合按钮的区域。
最后,使用适当的坐标、名称 print_button、类型 pushbutton 和合适的选项创建实际的按钮表单域:
       optlist = "action {up " & print_action & "}" & _
                    "backgroundcolor {rgb 1 1 0} bordercolor {rgb 0 0 0} " & _
                    "caption Print tooltip {Print the form} font " & button_font
      oPDF.create_field left_x, left_y, right_x, right_y, "print_button", "pushbutton", optlist
现在我们通过用一个小的打印机图标替换文本 Print 的方式扩展第一个版本的按钮。为了完成此操作,在创建页之前,我们加载相应的图像文件 print_icon.jpg 作为模板。使用 icon 选项,我们可以对按钮域指定模板句柄 print_icon,并创建类似于以上代码的表单域:
       print_icon = oPDF.load_image("auto", "print_icon.jpg", "template")
       If (print_icon = -1) Then
            ' Error handling
            End
       End If
       oPDF.begin_page_ext pagewidth, pageheight, ""
       ...
       optlist = "action {up " & print_action & "} " & _
                    "icon " & print_icon & " tooltip {Print the document} font " &                button_font
       oPDF.create_field left_x, left_y, right_x, right_y, "print_button", "pushbutton", optlist
简单文本域现在我们在页面的右上角附近创建一个文本域。用户将能够在此域中输入当前日期。我们获取一个字体句柄,并创建一个名为 date 且带有灰色背景的 textfield 类型的表单域:
       textfield_font = oPDF.load_font("Helvetica-Bold", "winansi", "")
       oPDF.create_field left_x, left_y, right_x, right_y, "date", "textfield", _
                                   "backgroundcolor {gray 0.8} font " & textfield_font
默认情况下,字体大小是 auto,这意味着域高度最初将用作为字体大小。当输入文本达到域的末尾时,将减少字体大小以便使文本总是适合域大小。

带有 JavaScript 的文本域为了改进上面创建的文本表单域,在页面打开的情况下,我们使用当前日期自动填充此文本表单域。首先,我们创建 JavaScript 类型的操作(在 Acrobat中 :运行 JavaScript)。此操作的选项列表中的 script 选项定义一个 JavaScript 片段,该片段在 date 文本域中按照“月- 日- 年”的格式显示当前日期:
         optlist = "script {var d = util.printd('mmm dd yyyy', new Date()); " & _
                      "var date = this.getField('date'); date.value = d;}"
        show_date = oPDF.create_action("JavaScript", optlist)
在第二个步骤中,我们创建页面。在选项列表中,我们提供 action 选项将上面创建的show_date 操作附加到触发器事件 open (在 Acrobat 中:进入页面):
        optlist = "action {open " & show_date & "}"
                     oPDF.begin_page_ext pagewidth, pageheight, optlist
最后,我们按照上面的操作创建文本域。只要页面处于打开状态,就将用当前日期自动填充该页面:
        textfield_font = oPDF.load_font("Helvetica-Bold", "winansi", "")
        oPDF.create_field left_x, left_y, right_x, right_y, "date", "textfield", _
                                    "backgroundcolor {gray 0.8} font " & textfield_font

发布人:管理员 【报告错误】·【推荐好友】·【打印文章】
相关评论 本文现有 2 条评论 评分人数: 0 平均分: 0
坐井观书   2006-12-1 14:12:17
很好,不知道有没有更多更详细的例子。。。。
坐井观书   2006-12-1 14:15:08
我的QQ:286342118
相关评论
用户名: 密  码:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
注意:请不要在评论中含与内容无关的广告链接,违者封ID
文章搜索
推荐文章
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
热门点击
一个简单的PDF文件结构的分析(22562)
PHP的FDF文档支持(16207)
用C#制作PDF文件全攻略(13651)
Word转换PDF格式的C#或(12165)
pdfMaker文章:PDF加(11657)
ITextRenderer学习(11364)
PDF文件加密仿真(11074)
怎样用iReport制作Web(10435)
iText PDF概述(1)(9954)
循序渐进学习iTextShar(9890)
热门评论
从pdf文档中提取出文本(8)
PDFlib开发:创建超文本元(2)
客户端自动打印PDF(Prin(2)
浅谈PDFlib中文输出(一)(2)
xml的转换之pdf 2 ((1)
xml的转换之pdf 1 (x(1)
PDF知识讲座(1)(1)
PDFBox使用简介(1)
使用正则表达式计算PDF文档的(1)
word转pdf(1)