> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PDF 端口

> 知行之橋PDF Label 端口的配置和使用指南。

PDF 端口支援使用 PDF 範本從 XML 生成豐富的視覺化業務表單作為 PDF 文件。

## 核心功能

* 支援透過基於範本的欄位對映，從 XML 輸入生成 PDF 表單
* 支援多頁輸出、選擇性頁面生成以及條形碼欄位整合
* 支援 Code39、Code128、GS1-128 和 QR 碼等條形碼型別，並具備進階配置選項

## 概觀

PDF 端口將 XML 輸入轉換為 PDF 輸出。XML 元素名稱與 PDF 範本中的表單欄位名稱匹配。每個 XML 元素的值會填入相應的表單欄位，以生成 PDF 輸出檔案。

## 端口配置

本節包含所有可配置的端口屬性。

### 設定索引標籤

#### 配置

\_與端口核心操作相關的設定。

| 設定 | 說明 |
| - | - |
| **端口 ID** | 端口的靜態唯一識別碼。 |
| **端口型別** | 顯示端口名稱及其功能說明。 |
| **端口說明** | 可選欄位，用於自由描述端口及其在工作流程中的角色。 |
| **範本檔案** | 用作輸出範本的 PDF 檔案。此檔案必須具有名稱與傳入 XML 資料匹配的表單欄位。這些欄位還必須按照端口生成的所有 PDF 檔案所需的格式排列。下面的[範例](#範例)顯示了 XML 和範本檔案如何協同生成輸出。 |

#### 其他設定

| 設定 | 說明 |
| - | - |
| **本地檔案方案** | 為端口輸出的訊息分配檔名的方案。可以在檔名中使用宏，動態包含識別碼和時間戳等資訊。有關更多資訊，請參見[宏](#宏)。 |

### 進階選項卡

#### 其他設定

| 設定 | 說明 |
| - | - |
| **處理延遲** | 放入**交易**索引標籤的檔案延遲處理的時長（秒）。這是一箇舊版設定。最佳實踐是[使用 File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/flows/designing-a-flow.md#與本地檔案系統互動)管理本地檔案系統，而不是使用此設定。 |

#### 訊息

*訊息設定確定端口如何搜尋訊息並在處理後管理它們。*

**注意：**以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇**顯示成功路徑**，然後將成功路徑連線到 [File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/file.md)。

<table><thead><tr><th>設定</th><th>描述</th></tr></thead>
<tbody><tr><td>**儲存到已傳送資料夾**（已棄用）</td>
<td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受[靜態加密](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/encryption-at-rest.md)保護。</td></tr>
<tr><td>**已傳送資料夾方案**（已棄用）</td>
<td>按所選時間間隔對 **Sent** 資料夾中的檔案進行分組。僅在啟用**儲存到已傳送資料夾**時適用。</td></tr></tbody></table>

#### 日誌

*用於管理日誌建立和儲存的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**日誌級別**</td>
<td>指定要記錄在端口日誌目錄中的資訊型別：
<ul><li>**None** - 不建立任何日誌。</li>
<li>**Error** - 僅當端口遇到錯誤時才建立日誌。</li>
<li>**Warning** - 僅當端口發出警告時才建立日誌。</li>
<li>**Info** - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
<li>**Debug** - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
<li>**Trace** - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li></ul>
\*\*請注意：\*\***Debug** 和 **Trace** 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td></tr>
<tr><td>**日誌資料夾結構**</td>
<td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，**Weekly** 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td></tr>
<tr><td>**保留訊息副本**</td>
<td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td></tr></tbody></table>

#### 其他設定

*特殊設定適用於特定用例。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**其他設定**</td>
<td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 `setting1=value1;setting2=value2`。正常的端口用例和功能不需要使用這些設定。</td></tr></tbody></table>

### 自動化索引標籤

#### 自動化設定

\_與端口自動處理檔案相關的設定。

| 設定 | 說明 |
| - | - |
| **傳送** | 到達端口的訊息是否會被自動處理。 |

#### 效能

*與端口資源分配相關的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**最大工作執行緒數**</td>
<td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 [進階設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/advanced-settings.md) 頁面的 [效能設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/performance-settings.md) 部分的預設設定。</td></tr>
<tr><td>**最大檔案數**</td>
<td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 [進階設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/advanced-settings.md) 頁面的 [效能設定](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/performance-settings.md) 部分的預設設定。</td></tr></tbody></table>

### 告警索引標籤

*與配置通知相關的設定。*

在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，知行之桥 使用 [通知](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/alerts.md) 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 **覆蓋全域設定**。

預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 **啟用** 核取方塊。

輸入 **主題**（必填）。勾選**允許在主題中使用 ArcScript**，即可在**主題**欄位中使用 ArcScript。選中後會顯示 **ArcScript 編輯器**按鈕（![ArcScript 編輯器按鈕](https://docs.kasoftware.com/26.4/images/rest_arcscript_editor.png)）。

（可選）輸入以逗號分隔的**收件人**電子郵件地址清單。

### SLA 索引標籤

*與配置服務級別協議 (SLA) 相關的設定。*

SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，知行之桥 會傳送電子郵件警告使用者，並將 SLA 標記為 *存在風險*，這意味著如果 SLA 未能儘快達到，則會被標記為 *已違反*。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。

SLA 轉換為 *存在風險* 或 *已違反* 狀態時，也會寫入[應用程式日誌](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/activity.md#应用程序日志)，這意味著應用程式效能監控 (APM) 和日誌擷取工具也可以針對這些狀態發出警示。

要定義 SLA，請啟用 **預期資料量**，然後點選 **設定** 索引標籤。

![SLA Empty](https://docs.kasoftware.com/26.4/images/sla_empty.png)
<ul><li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
<li>在視窗的 **預計至少** 部分中：
<ul><li>設定預計處理的最小交易數量（交易量）</li>
<li>使用 **每個** 欄位指定時間範圍</li>
<li>指示 SLA 生效的時間。如果選擇 **開始於**，請填寫日期和時間欄位。</li>
<li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 **每天**。</li></ul></li>
<li>在視窗的 **將狀態設定為“有風險”** 部分中，指定應將 SLA 標記為有風險的時間。
<ul><li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 **傳送“有風險”通知**。</li></ul></li></ul>

以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。

![SLA Configuration Example](https://docs.kasoftware.com/26.4/images/sla_defined.png)

> [!NOTE]
>
> 如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 **設定**，然後跳轉到 **通知 > 通用通知**。點選平板和鉛筆圖示進行編輯，並取消勾選 **SLA 通知** 設定。

## 生成 PDF 文件

PDF 端口讀取 XML 輸入檔案，並使用這些 XML 檔案中的資料生成與[設定索引標籤](#設定索引標籤)中指定的**範本檔案** PDF 文件匹配的 PDF 文件。這些 XML 輸入檔案的結構應與下面描述的結構或下一節中描述的[舊結構](#舊-xml-格式)匹配。

### XML 格式

下面是一個 XML 輸入檔案範例：

```xml theme={null}
<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 輸入檔案如下所示：

```xml theme={null}
<Items pages="0,3">
  <PDF>
    <FormField1>Some data</FormField1>
  </PDF>
</Items>
```

### 條形碼

條形碼欄位（應包含條形碼資料的表單欄位）的處理方式與其他表單欄位相同：條形碼欄位在 PDF 範本中有一個標籤，該標籤應作為輸入 XML 中的元素名稱。此外，條形碼欄位應具有 *type* 屬性，用於確定要生成的條形碼型別。端口支援四種條形碼型別：

* code39
* code128
* gs1128
* qrcode

然後，將條形碼的數字資料作為相應命名元素的 XML 值提供。

#### 進階條形碼配置

除了在 XML 輸入檔案中指定條形碼型別外，還可以直接在 PDF 範本檔案中配置條形碼。建立和編輯用於儲存條形碼的表單欄位時，可以將配置資訊新增到欄位工具提示中，以影響生成的條形碼。此配置資訊應始終採用以下格式：

`$$parameter1:value,parameter2:value$$`

條形碼支援以下參數：

* **barcode**：條形碼型別（使用上一節所述的 *type* 屬性時冗餘）
* **qrcodeversion**：當條形碼型別設定為 *qrcode* 時 QR 碼的版本
* **eclevel**：使用 QR 碼時的糾錯級別。可接受的值為 *L*（低）、*M*（中）、*Q*（四分位）和 *H*（高）
* **quietzone**：條形碼周圍的空白緩衝區。該值應為整數，表示最小條形尺寸的倍數（建議值為 10 或更高）

以下參數不常用，僅應在條形碼有特殊要求時使用：

* **heightnarrowratio**：最窄條相對於條形碼高度的寬度；必須指定為高度為 1 的比率（例如 '0.05' 表示 1/20）
* **widenarrowratio**：最窄條相對於最寬條寬度的寬度；必須指定為最寬條為 1 的比率（例如 '0.2' 表示 1/5）
* **spacebarratio**：條形碼中空白相對於條形寬度的寬度；必須指定為條形寬度為 1 的比率（預設值為 1）

## 範例

下面是一個範例 XML 輸入檔案、PDF **範本檔案** 以及生成的 PDF 輸出。

> [!NOTE]
>
> 下面的範本檔案影像來自 Adobe Pro 表單編輯器，其中顯示每個表單欄位的名稱。請記住，範本檔案中的欄位名稱必須與 XML 中的元素標籤匹配。

### 輸入 XML

```xml theme={null}
<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 範本](https://mintcdn.com/qiao/HyyOl9gYIsxaiGgh/26.4/images/label_1010_screenshot.png?fit=max\&auto=format\&n=HyyOl9gYIsxaiGgh\&q=85\&s=b080764f3afc239ba704a9a7d50d9d66)

### 輸出

![PDF 範例](https://mintcdn.com/qiao/HyyOl9gYIsxaiGgh/26.4/images/label_1010_filled.png?fit=max\&auto=format\&n=HyyOl9gYIsxaiGgh\&q=85\&s=484fc0f7ed65da00f6340cf84950a598)

## 舊 XML 格式

除了[生成 PDF 文件](#生成-pdf-文件)中描述的 XML 格式外，端口還支援舊的 XML 輸入檔案結構，以保持向後相容。知行軟體建議你在設計新工作流程時使用上一節中描述的語法。

以下是舊 XML 格式範例：

```xml theme={null}
<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* 元素的所有子元素都應命名為 *Item*，並且 *name* XML 屬性應與 PDF 範本檔案中的表單欄位名稱匹配。前幾節中描述的相同 XML 屬性也可用於舊格式（例如用於指定條形碼欄位的 *type*，以及用於生成輸出頁面子集的 *pages*）。

## 宏

在檔案命名策略中使用宏可以提高組織效率和對資料的上下文理解。透過將宏合併到檔名中，可以動態地包含相關資訊，例如識別碼、時間戳和訊息頭資訊，從而為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織重要的詳細資訊。

知行之桥 支援這些宏，它們都使用以下語法：`%Macro%`。

<table><thead><tr><th>宏</th><th>描述</th></tr></thead>
<tbody><tr><td>ConnectorID</td><td>替換為端口的 ConnectorID。</td></tr>
<tr><td>ConnectorName</td><td>替換為端口名稱。可用於在檔名或路徑中包含連線名稱，例如按生成備份檔案的資料庫連線標記檔案。</td></tr>
<tr><td>Ext</td><td>替換為端口當前正在處理的檔案的副檔名。</td></tr>
<tr><td>Filename</td><td>替換為端口當前正在處理的檔案的檔名（包括副檔名）。</td></tr>
<tr><td>FilenameNoExt</td><td>替換為端口當前正在處理的檔案的檔名（不帶副檔名）。</td></tr>
<tr><td>MessageId</td><td>計算端口輸出的訊息的 MessageId。</td></tr>
<tr><td>RegexFilename:*pattern*</td><td>將規則運算式模式應用於端口當前正在處理的檔案的檔名。</td></tr>
<tr><td>Header:*headername*</td><td>替換為端口正在處理的當前訊息的目標訊息頭（`headername`）的值。</td></tr>
<tr><td>LongDate</td><td>以常規格式計算系統的當前日期時間（例如，2024 年 1 月 24 日星期三）。</td></tr>
<tr><td>ShortDate</td><td>以 yyyy-MM-dd 格式計算系統的當前日期時間（例如 2024-01-24）。</td></tr>
<tr><td>DateFormat:*format*</td><td>以指定格式（`format`）計算系統的當前日期時間。有關可用的日期時間格式，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#date-formats-with-literal-characters)。</td></tr>
<tr><td>Vault:*vaultitem*</td><td>計算指定保管庫專案的值。</td></tr></tbody></table>

### 範例s

某些宏（例如 %Ext% 和 %ShortDate%）不需要參數，但其他宏則需要。所有帶有參數的宏都使用以下語法：`%Macro:argument%`

以下是帶有參數的宏的一些範例：

<ul><li>%Header:headername%：其中 `headername` 是訊息上訊息頭的名稱。</li>
<li>%Header:mycustomheader% 解析為輸入訊息上設定的 `mycustomheader` 訊息頭的值。</li>
<li>%Header:ponum% 解析為輸入訊息上設定的 `ponum` 訊息頭的值。</li>
<li>%RegexFilename:pattern%：其中 `pattern` 是規則運算式模式。例如，`%RegexFilename:^([\w][A-Za-z]+)%` 匹配並解析為檔名中的第一個單詞，並且不區分大小寫（`test_file.xml` 解析為 `test`）。</li>
<li>%Vault:vaultitem%：其中 `vaultitem` 是 [vault](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/global-settings-vault.md) 中專案的名稱。例如，`%Vault:companyname%` 解析為儲存在保管庫中的 `companyname` 項的值。</li>
<li>%DateFormat:format%：其中 `format` 是可接受的日期格式（有關詳細資訊，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#sample-date-formats)）。例如，`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%` 解析為檔案上的日期和時間戳。</li></ul>

還可以建立更復雜的宏，如以下範例所示：

<ul><li>將多個宏組合在一個檔名中：`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%`</li>
<li>包括宏之外的文字：`MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%`</li>
<li>在宏中包含文字：`%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%`</li></ul>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.