PDF 端口

Version 26.2.9636


PDF 端口


PDF 端口支持使用 PDF 模板从 XML 生成丰富的可视化业务表单作为 PDF 文档。

核心功能

  • 支持通过基于模板的字段映射,从 XML 输入生成 PDF 表单
  • 支持多页输出、选择性页面生成以及条形码字段集成
  • 支持 Code39、Code128、GS1-128 和 QR 码等条形码类型,并具备高级配置选项

概述

PDF 端口将 XML 输入转换为 PDF。XML 元素名称与 PDF 模板中的表单字段名称匹配。每个 XML 元素的值被输出到适当的表单字段中,以生成 PDF 文件。

端口配置

此部分包含所有可配置的端口属性。

设置

配置

与端口核心操作相关的设置。

  • 端口 Id 端口的静态、唯一标识符。
  • 端口类型 显示端口类型及其用途的描述。
  • 端口描述 一个可选字段,用于提供端口及其在流中的角色的自由格式描述。
  • 模板文件 作为输出模板的 PDF 文件。此文件必须具有名称与传入 XML 数据匹配的表单字段。这些字段还必须按照期望端口生成的所有 PDF 文件的格式排列。下面的 示例 显示了 XML 和模板文件如何协同生成输出。

其他设置

  • 本地文件名格式 用于为端口输出的消息分配文件名的方案。 可以在文件名中动态使用宏来包含标识符和时间戳等信息。 有关详细信息,请参阅

高级页面

其他设置

  • 延迟处理 放置在输入文件夹中的文件的处理延迟的时间量(以秒为单位)。 这是一个遗留设置。 最佳实践是使用 File 端口 来管理本地文件系统,而不是此设置。

消息

  • 保存至 Sent 文件夹 选中此选项可将端口处理的文件复制到端口的已发送文件夹中。
  • 已发送文件夹方案 指示端口根据选定的时间间隔对已发送文件夹中的消息进行分组。 例如,Weekly 选项指示端口每周创建一个新的子文件夹,并将该周的所有消息存储在该文件夹中。 空白设置告诉端口将所有消息直接保存在“已发送”文件夹中。 对于处理许多消息的端口,使用子文件夹有助于保持消息的组织性并提高性能。

日志

  • 日志级别 端口生成的日志的详细程度。 当端口请求支持时,请将其设置为 调试
  • 日志子文件夹方案:指示端口根据所选的时间间隔对日志(Logs)文件夹中的文件进行分组。每周(Weekly)选项(默认设置)指示端口每周创建一个新子文件夹,并将该周的所有日志存储在其中。如果此设置留空,则端口将所有日志直接保存在日志文件夹中。对于处理大量事务的端口,使用子文件夹有助于保持日志井然有序并提高性能。
  • 保留消息副本 选中此项可使已处理文件的日志条目包含文件本身的副本。 如果禁用此功能,端口可能无法从事务选项卡下载文件的副本。

特殊设置

特殊设置 适用于特定用例。

  • 其他设置 允许在以分号分隔的列表中配置隐藏的端口设置,例如setting1=value1;setting2=value2。 正常的端口用例和功能不需要使用这些设置。

自动化页面

自动化设置

与端口自动处理文件相关的设置。

  • 发送 到达端口的消息是否被自动处理。

性能

与端口资源分配相关的设置。

  • 最大工作线程数 此端口上处理文件时从线程池中消耗的最大工作线程数。如果设置,则会覆盖 高级设置 页面的 性能设置 部分的默认设置。
  • 最大文件数 分配给端口的每个线程发送的最大文件数。如果设置,则会覆盖 高级设置 页面的 性能设置 部分的默认设置。

通知选项卡

与配置通知相关的设置。

在执行服务级别协议 (SLA) 之前,需要设置电子邮件通知以接收通知。默认情况下,知行之桥使用 通知 选项卡上的全局设置。要为此端口使用其他设置,请启用覆盖全局设置

默认情况下,错误通知处于启用状态,这意味着每当出现错误时都会发送电子邮件。要关闭错误通知,请取消选中启用复选框。

输入主题(必填),然后(可选)输入以逗号分隔的收件人电子邮件列表。

SLA 选项卡

与配置服务级别协议 (SLA) 相关的设置。

SLA 允许配置预期流程中端口发送或接收的数据量,并设置预期达到该数据量的时间范围。当 SLA 未达到时,知行之桥会发送电子邮件警告用户,并将 SLA 标记为_存在风险_,这意味着如果 SLA 未能尽快达到,则会被标记为_已违反_。这让用户有机会介入并确定 SLA 未达到的原因,并采取适当的措施。如果在风险时间段结束时仍未达到 SLA,则会将 SLA 标记为_已违反_,并再次通知用户。

要定义 SLA,请启用预期数据量,然后点击设置选项卡。

  • 如果端口具有单独的发送和接收操作,请使用单选按钮指定 SLA 适用的方向。
  • 在窗口的预计至少部分中:
    • 设置预计处理的最小事务数量(交易量)
    • 使用每个字段指定时间范围
    • 指示 SLA 生效的时间。如果选择开始于,请填写日期和时间字段。
    • 勾选希望 SLA 生效的星期几对应的复选框。如有必要,请使用下拉菜单选择每天
  • 在窗口的将状态设置为“有风险”部分中,指定应将 SLA 标记为有风险的时间。
    • 默认情况下,只有在违反 SLA 的情况下才会发送通知。要更改此设置,请勾选发送“有风险”通知

以下示例显示了为端口配置的 SLA,该端口预计在周一至周五每天接收 1000 个文件。如果尚未收到 1000 个文件,则会在时间段结束前 1 小时发送风险通知。

注意:如果有必要,可以关闭 SLA 通知。这在维护窗口期间非常有用。点击导航栏上的设置,然后跳转到通知 > 通用通知。点击平板和铅笔图标进行编辑,并取消勾选 SLA 通知设置。

生成 PDF 文档

PDF Label 端口读取 XML文件,并使用这些 XML 文件中的数据生成与模板文件中 PDF 模板匹配的 PDF 文档。这些 XML 输入文件的结构应该与下面描述的结构或下一节中的遗留结构相匹配。

XML 格式

下面是一个 XML 输入文件的示例,下面提供了解释:

<Items>
  <PDF>
    <FormField1>Some data</FormField1>
    <BarcodeField type="code39">>5789337490548932</BarcodeField>
  </PDF>
</Items>

如上例所示,XML 应与以下结构匹配:

  • 根目录下有一个 Items 元素
  • 一个 PDF 子元素代表一个 PDF 文档
  • PDF 元素内,该元素与动态填充数据的每个表单字段的名称匹配

每个表单字段的名称(即 PDF 元素内的元素名称)来自模板文件 PDF 模板。无论此模板中用于标记表单字段的值是什么,都应用作元素名称,以确保将正确的数据注入到生成的 PDF 文档的适当字段中。

多页输出

如果模板文件 PDF 包含多个页面,则在处理 XML 输入文件时,端口将自动生成适当数量的页面。此外,可以从单个 XML 文件生成模板文件的多个副本,在这种情况下,附加副本将作为同一个输出文件的多个 PDF 页面附加。

要生成模板文件的多个副本作为多页输出,只需重复根 Items 元素的直接子元素 PDF 元素。此位置的每个 PDF 元素都将被视为模板文件的单独实例,并应包含填写模板所需的所有命名表单字段值。

输出页面子集

如果模板文件 PDF 包含多个页面,则端口支持通过在 XML 输入文件中指定适当的页面来生成这些模板页面的子集。输入文档根目录中的 Items 元素接受 pages 属性,并带有逗号分隔的页码列表(零索引),该页码应包含在输出中。

例如,如果模板文件包含 4 页,并且输出中只应包含第一页和最后一页,则 XML 输入文件如下所示:

<Items pages="0,3">
  <PDF>
    <FormField1>Some data</FormField1>
  </PDF>
</Items>

Barcodes

Barcode 字段(应包含 Barcode 数据的表单字段)的处理方式与其它表单字段相同:Barcode 字段在 PDF 模板中有一个标签,该标签作为输入 XML 中的元素名称。此外,Barcode 字段应具有 type 属性,该属性确定要生成的 Barcode 类型。端口支持四种 Barcode 类型:

  • code39
  • code128
  • gs1128
  • qrcode

然后,将 Barcode 的数字数据作为 XML 值提供给相应命名的元素。

高级 Barcode 配置

除了在 XML 输入文件中指定 Barcode 类型外,还可以直接在 PDF 模板文件中配置 Barcode。创建/编辑保存 Barcode 的表单字段时,可以将配置信息添加到字段 ‘tooltip’ 中,将影响生成的 Barcode。此配置信息应始终具有以下格式:

$$parameter1:value,parameter2:value$$

Barcode 支持的参数如下:

  • barcode - Barcode 的类型(如前一节所述,使用 type 属性时冗余)
  • qrcodeversion - Barcode 类型设置为 qrcode 时 QR 码的版本
  • eclevel - 使用 QR 码时的纠错级别:可接受的值为 ‘L’(低),’M’(中),’Q’(四分位数)和 ‘H’(高)。
  • quietzone - Barcode 周围的空白缓冲区;值应该是代表最小条形尺寸倍数的整数值(建议值为 10 或更大)

以下参数不常见,仅应用于有特殊要求的 Barcode:

  • heightnarrowratio - 与 Barcode 高度相关的最窄条的宽度;必须指定为高度为1的比率(例如 ‘0.05’ 表示 1/20th)
  • widenarrowratio - 最窄条的宽度相对于最宽条的宽度;必须指定为最宽条为 1 的比率(例如 ‘0.2’ 为 1/5th)
  • spacebarratio - Barcode 中的空间宽度相对于条形图的宽度;必须指定为条形图宽度为 1 的比率(默认值为 1)

示例

下面是一个示例 XML 输入文件、PDF 模板文件 以及生成的 PDF 输出。

注意:下面的模板文件图像是 Adob​​e Pro 表单编辑器,其中显示每个表单字段的名称。请记住,模板文件中的字段名称必须与 XML 中的元素标签匹配。

输入 XML:

<Items>
  <PDF>
    <From1>WAREHOUSE 5B</From1>
    <To1>CLEARING HOUSE 14C</To1>
    <CarrierRoutingBarcode type="code39">5789337490548932</CarrierRoutingBarcode>
    <CarrierRoutingNumber>5789337490548932</CarrierRoutingNumber>
    <CarrierName>Fedex</CarrierName>
    <PRO_num>12345</PRO_num>
    <BOL_num>54321</BOL_num>
    <PO_num>87E112CA</PO_num>
    <ProductID_num>EE12FUZZY</ProductID_num>
    <Quantity>4</Quantity>
    <POBarcode type="code39">99123445215586</POBarcode>
    <PO_num_2>99123445215586</PO_num_2>
    <Carton_num>1</Carton_num>
    <Carton_total>1</Carton_total>
    <LotID>8821445</LotID>
    <SSCCNumber>2709667490538981</SSCCNumber>
    <SSCCBarcode type="code39">2709667490538981</SSCCBarcode>
  </PDF>
</Items>

模板文件:

PDF 模板

输出:

PDF 示例

旧 XML 格式

除了上面描述的 XML 格式外,端口还支持旧的 XML 输入文件结构,以保持向后兼容性。建议在设计新工作流时使用上一节中的语法。

以下是传统 XML 格式的示例:

<Items>
	<Item name="BillAddressLine1">Wayne Tech Plant 1</Item>
	<Item name="BillAddressLine2">100 Wayne Ave.</Item>
	<Item name="BillAddressLine3">Chapel Hill, NC 27514</Item>
	<Item name="ShipAddressLine1">Same as billing address</Item>
</Items>

在这个结构中,根元素的所有 Items 子元素都应该被称为 Items,并且这个 XML 属性应该与 PDF 模板文件中的表单字段名相匹配。前面几节中描述的相同的 XML 属性在旧格式中可用(指定 Barcode 字段的 type 和生成输出页面子集的 pages 等)。

在文件命名策略中使用宏可以提高组织效率和对数据的上下文理解。 通过将宏合并到文件名中,可以动态地包含相关信息,例如标识符、时间戳和消息头信息,从而为每个文件提供有价值的上下文。 这有助于确保文件名反映对组织重要的详细信息。

知行之桥 支持这些宏,它们都使用以下语法:%Macro%

描述
ConnectorID 替换为端口的 ConnectorID。
Ext 替换为端口当前正在处理的文件的文件扩展名。
Filename 替换为端口当前正在处理的文件的文件名(包括扩展名)。
FilenameNoExt 替换为端口当前正在处理的文件的文件名(不带扩展名)。
MessageId 计算端口输出的消息的 MessageId。
RegexFilename:pattern 将正则表达式模式应用于端口当前正在处理的文件的文件名。
Header:headername 替换为端口正在处理的当前消息的目标消息头 (headername) 的值。
LongDate 以常规格式计算系统的当前日期时间(例如,2024 年 1 月 24 日星期三)。
ShortDate 以 yyyy-MM-dd 格式计算系统的当前日期时间(例如 2024-01-24)。
DateFormat:format 以指定格式(format)计算系统的当前日期时间。 有关可用的日期时间格式,请参阅示例日期格式
Vault:vaultitem 计算指定保管库项目的值。

示例

某些宏(例如 %Ext% 和 %ShortDate%)不需要参数,但其他宏则需要。 所有带有参数的宏都使用以下语法:%Macro:argument%

以下是带有参数的宏的一些示例:

  • %Header:headername%:其中 headername 是消息上消息头的名称。
  • %Header:mycustomheader% 解析为输入消息上设置的 mycustomheader 消息头的值。
  • %Header:ponum% 解析为输入消息上设置的 ponum 消息头的值。
  • %RegexFilename:pattern%:其中“pattern”是正则表达式模式。 例如,%RegexFilename:^([\w][A-Za-z]+)% 匹配并解析为文件名中的第一个单词,并且不区分大小写(test_file.xml解析为test) 。
  • %Vault:vaultitem%:其中 vaultitemvault 中项目的名称。 例如,%Vault:companyname%解析为存储在保管库中的companyname项的值。
  • %DateFormat:format%:其中 format 是可接受的日期格式(有关详细信息,请参阅示例日期格式)。 例如,%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%解析为文件上的日期和时间戳。

还可以创建更复杂的宏,如以下示例所示:

  • 将多个宏组合在一个文件名中:%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%
  • 包括宏之外的文本:MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%
  • 在宏中包含文本: %DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%