打开 PDF

打开 PDF 文件。使用“附加 PDF”等脚本步骤添加页面,然后使用“关闭 PDF”脚本步骤关闭并保存文件。

选项 

  • “来自”是 PDF 文件位置的指定方式:

    • “文件”指定 PDF 文件路径。选择后,“源文件”选项将变为可用。

    • “源”在容器字段或变量中指定 PDF 文件。选择后,“源”选项变得可用。

  • 当“来自”为“文件”时,“源文件”定义了 PDF 文件的一个或多个路径和文件名的列表。脚本步骤会搜索列表,并使用它成功找到的第一个 PDF 文件。路径必须使用 image 路径前缀之一。请参阅创建文件路径。

  • “源”指定当“来自”为“源”时存储 PDF 文件的容器字段或变量。

  • “密码”是打开加密 PDF 文件所需的密码的文本表达式。如果 PDF 文件未加密,则忽略此选项。

兼容性 

产品 是否支持
FileMaker Pro 是
FileMaker Go 是
FileMaker WebDirect 是
FileMaker Server 是
FileMaker Cloud 是
FileMaker Data API 是
自定义 Web 发布 是

原始版本 

26.0

说明 

此脚本步骤会打开一个现有的 PDF 文件,然后您可以使用其他 PDF 文件脚本步骤对其进行修改。PDF 文件在内存中保持打开状态,直到您使用关闭 PDF脚本步骤或取消 PDF脚本步骤将其关闭。

打开 PDF 文件后,您可以:

此工作流程可用于创建复杂的 PDF 文档,这些文档将来自多个来源的页面(如封面、报告数据和附录)组合在一起,全部汇编成一个 PDF 文件。

注释 

  • 一次只能打开一个 PDF 文件。如果 PDF 文件已打开,此脚本步骤将返回错误代码 833 (“PDF 文件已打开”)。

  • 除非您使用关闭 PDF脚本步骤将更改保存到同一位置,否则原始 PDF 文件不会被修改。

  • 对于加密的 PDF 文件,如果密码缺失或不正确,此脚本步骤将返回错误代码 831(“PDF 密码无效”)。

  • 如果发生以下任一情况,打开的 PDF 文件和任何未保存的更改都将丢失:

    • 当前的 FileMaker 客户端会话结束

    • 其脚本打开了 PDF 文件的 FileMaker Pro 文件关闭而未关闭打开的 PDF 文件

  • 在 FileMaker WebDirect 中,当“来自”设置为“文件”时,“源文件”选项会被忽略。执行此脚本步骤时,将打开一个对话框,网页用户可以在其中选择要上传到主机上的临时位置的 PDF 文件。从那里,脚本步骤打开内存中的 PDF 文件,然后从临时位置删除该文件。

示例 1 - 打开并修改现有的 PDF 文件

使用 image:ExistingReport.pdf 的路径和文件名打开当前目录中的现有 PDF 文件,添加当前记录,并将修改后的版本保存到 image:UpdatedReport.pdf。

复制
打开 PDF [ 来自: 文件 ; 源文件: "ExistingReport.pdf" ]

将记录另存为 PDF [ 恢复 ; 保存到: 当前打开的 PDF ; 当前记录 ]

关闭 PDF [ 保存到: 文件 ; "UpdatedReport.pdf" ; 创建文件夹: 关闭 ]

示例 2 - 打开有密码的加密 PDF 文件

打开存储在容器字段中的受密码保护的 PDF 文件,附加另一个 PDF 文件中的页面,并将结果保存到文件名为 UpdatedContract.pdf 的全局变量中。

复制
转到布局 [ "合同" (合同) ; 动画: 无 ]

打开 PDF [ 来自: 源 ; 源: Contracts::ContractPDF ; 密码: •••••••• ]

附加 PDF [ 来自: 文件 ; 源文件: "Appendix.pdf" ]

关闭 PDF [ 保存到: 目标 ; 目标: $$modifiedPDF ; 文件名: "UpdatedContract.pdf" ]

示例 3 - 打开带有错误处理的 PDF 文件

打开一个 PDF 文件,然后使用计算将错误代码映射为用户友好的消息来处理错误,并使用取消 PDF脚本步骤关闭已打开的 PDF 文件而不保存。

复制
设置错误捕获 [ 打开 ]

转到布局 [ "联系人" (联系人) ; 动画: 无 ]

设置变量 [ $pdfFilePath ; 值: "image:Contract.pdf" ]

打开 PDF [ 来自: 文件 ; 源文件: $pdfFilePath ; 密码: •••••••• ]

设置变量 [ $errorCode ; 值: Get(上一个错误) ]

设置变量 [ $errorMessage ; 值:
    Case (
        $errorCode = 0 ; "" ;
        $errorCode = 830 ; "PDF 文件未找到或格式无效。" ;
        $errorCode = 831 ; "加密的 PDF 文件的密码不正确。" ;
        $errorCode = 832 ; "PDF 文件安全设置阻止修改。" ;
        $errorCode = 833 ; "另一个 PDF 文件已打开。 请先将其关闭。" ;
        "打开 PDF 时出现未知错误: " & $errorCode
    )
]

If [ $errorCode ≠ 0 ]
    取消 PDF
    显示自定义对话框 [ "PDF 错误" ; $errorMessage ]
    退出脚本 [ 文本结果: "失败" ]
End If

附加 PDF [ 来自: 源 ; 源: Contracts::ContractPDF ]

关闭 PDF [ 保存到: 文件 ; $pdfFilePath ]