將包含條碼的 PDF 檔案轉換為結構化的 XML 是庫存與物流系統需要機器可讀資料的常見需求。 Aspose.BarCode Cloud SDK for PHP 提供一個基於雲端的函式庫,使此轉換簡單且具可擴展性。在本指南中,您將學習如何設定 SDK、執行完整的 PHP 腳本來讀取 PDF、提取條碼資訊,並將結果寫入 XML,此外還提供等效的 cURL 工作流程與最佳實踐技巧。
PDF 轉換為 XML(PHP)- 完整工作範例
此範例示範如何使用 Aspose.BarCode Cloud SDK for PHP 讀取 PDF、辨識條碼,並將結果輸出為 XML。
<?php
require __DIR__ . '/vendor/autoload.php';
use Aspose\BarCode\Cloud\Configuration;
use Aspose\BarCode\Cloud\Api\BarcodeApi;
use Aspose\BarCode\Cloud\Model\RecognizeBarcodeRequest;
use Aspose\BarCode\Cloud\ApiException;
try {
// -------------------------------------------------
// 1. Configuration – replace with your credentials
// -------------------------------------------------
$config = new Configuration();
$config->setAppSid('YOUR_CLIENT_ID'); // App SID / Client ID
$config->setAppKey('YOUR_CLIENT_SECRET'); // App Key / Client Secret
// -------------------------------------------------
// 2. Initialise the Barcode API client
// -------------------------------------------------
$barcodeApi = new BarcodeApi(null, $config);
// -------------------------------------------------
// 3. Validate and read the source PDF (input.pdf)
// -------------------------------------------------
$inputFile = __DIR__ . '/input.pdf';
if (!is_file($inputFile) || !is_readable($inputFile)) {
throw new RuntimeException('Input PDF file is missing or unreadable.');
}
// Use a stream to avoid loading the whole file into memory at once
$handle = fopen($inputFile, 'rb');
if ($handle === false) {
throw new RuntimeException('Failed to open input PDF file.');
}
$pdfData = stream_get_contents($handle);
fclose($handle);
// -------------------------------------------------
// 4. Build the recognition request (PDF → XML)
// -------------------------------------------------
$recognizeRequest = new RecognizeBarcodeRequest();
$recognizeRequest->setFile($pdfData); // binary PDF content
$recognizeRequest->setType('pdf'); // source type
$recognizeRequest->setPreset('HighPerformance'); // performance hint
$recognizeRequest->setResultFormat('xml'); // ask for XML output
// -------------------------------------------------
// 5. Execute the request
// -------------------------------------------------
$xmlResult = $barcodeApi->postBarcodeRecognize($recognizeRequest);
// -------------------------------------------------
// 6. Write the XML to output.xml
// -------------------------------------------------
$outputFile = __DIR__ . '/output.xml';
$bytesWritten = file_put_contents($outputFile, $xmlResult);
if ($bytesWritten === false) {
throw new RuntimeException('Failed to write XML output file.');
}
echo "PDF successfully converted to XML. Output saved at: {$outputFile}\n";
} catch (ApiException $apiEx) {
// Handles errors returned by Aspose.BarCode Cloud service
error_log('Aspose.BarCode API error: ' . $apiEx->getMessage());
echo "API error occurred. Check logs for details.\n";
} catch (Exception $ex) {
// Handles all other runtime errors
error_log('General error: ' . $ex->getMessage());
echo "An error occurred. Check logs for details.\n";
}
注意: 此程式碼範例展示了核心功能。在將其用於您的專案之前,請確保更新檔案路徑(
input.pdf、output.xml等)以符合實際檔案位置,驗證所有必要的相依項已正確安裝,並在開發環境中徹底測試。若遇到任何問題,請參閱官方文件或聯繫支援團隊尋求協助。
使用 cURL 的 REST API 進行 PDF 轉 XML 轉換
如果您偏好純粹的 REST 方法,可以使用 cURL 命令執行相同的轉換。以下步驟說明如何取得存取權杖、上傳 PDF、請求條碼辨識,並下載 XML 結果。
# 1. Get an access token
curl -X POST "https://api.aspose.cloud/v3.0/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
將 YOUR_CLIENT_ID 和 YOUR_CLIENT_SECRET 替換為您的 Aspose 憑證。回應中包含一個 access_token,您將在後續調用中使用它。
# 2. Upload the source PDF (optional – you can also send the file directly)
curl -X PUT "https://api.aspose.cloud/v3.0/barcode/storage/file/input.pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-T "input.pdf"
# 3. Execute the PDF → XML barcode recognition
curl -X POST "https://api.aspose.cloud/v3.0/barcode/recognize" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F "file=@input.pdf" \
-F "type=pdf" \
-F "preset=HighPerformance" \
-F "resultFormat=xml"
回應主體包含帶有已識別條碼資料的 XML。
# 4. Save the XML response to a file
curl -X GET "https://api.aspose.cloud/v3.0/barcode/recognize/result" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o output.xml
如需參閱參數和錯誤代碼的完整清單,請參閱官方 API 文件。
PHP 中 PDF 轉換為 XML 的運作方式
- 配置憑證 -
Configuration物件儲存您的AppSid和AppKey。$config = new Configuration(); $config->setAppSid('YOUR_CLIENT_ID'); $config->setAppKey('YOUR_CLIENT_SECRET'); - 建立 API 用戶端 -
BarcodeApi是所有條碼操作的入口點。$barcodeApi = new BarcodeApi(null, $config); - 讀取 PDF 檔案 - 此腳本以串流方式讀取 PDF,以避免將整個檔案載入記憶體,這對大型文件尤為重要。
$handle = fopen($inputFile, 'rb'); $pdfData = stream_get_contents($handle); fclose($handle); - 建立辨識請求 -
RecognizeBarcodeRequest指定來源類型(pdf)、效能預設,且結果應以xml形式返回。$recognizeRequest = new RecognizeBarcodeRequest(); $recognizeRequest->setFile($pdfData); $recognizeRequest->setType('pdf'); $recognizeRequest->setPreset('HighPerformance'); $recognizeRequest->setResultFormat('xml'); - 執行並儲存 -
postBarcodeRecognize將請求發送至雲端服務。返回的 XML 字串會寫入output.xml。$xmlResult = $barcodeApi->postBarcodeRecognize($recognizeRequest); file_put_contents($outputFile, $xmlResult);
以下步驟說明了 PHP 中的 PDF 轉 XML 轉換腳本,並展示了 SDK 如何抽象化 HTTP 通訊,讓您專注於業務邏輯。
前置條件與安裝 Aspose.BarCode Cloud SDK
- PHP version - PHP 7.4 或更新版本是必需的。
- Composer - SDK 透過 Composer 發佈。使用以下指令安裝,然後引用該套件。
composer require aspose-barcode-cloud
-
Credentials - 註冊 Aspose Cloud 帳戶,建立應用程式,並取得
Client Id和Client Secret。 -
配置片段 - 安裝後,將先前顯示的配置代碼加入以使用您的憑證初始化 SDK。
欲取得完整的可下載二進位檔清單,請前往下載頁面。
可靠的 PDF 轉 XML 轉換實用技巧
- 重用 Configuration 物件 以在同一腳本中進行多次轉換,避免重複的驗證開銷。
- 串流大型 PDF 而不是一次性載入全部;範例使用
fopen和stream_get_contents來實現此目的。 - 選擇
HighPerformance預設,當您需要速度且 PDF 包含標準條碼類型時。 - 驗證產生的 XML 是否符合 XML 架構,若下游系統要求嚴格格式。
- 優雅地處理 API 例外;
ApiException的 catch 區塊會記錄錯誤細節,有助於故障排除。
結論
本指南已帶領您使用 Aspose.BarCode Cloud SDK for PHP 在 PHP 中完成 PDF 轉 XML 的轉換。您現在擁有可直接執行的程式碼範例、cURL 替代方案,以及一套最佳實踐,以確保條碼提取的準確性與效率。請記住,正式上線需要付費訂閱;在評估解決方案時,您可以從 臨時授權頁面 取得臨時授權。將 SDK 整合到您的工作流程中,使用真實文件進行測試,您就能自信地自動化條碼驅動的資料管道。
常見問題
Q: PDF 轉 XML 的 PHP 轉換如何處理不同的條碼編碼?
A: SDK 內建支援廣泛的條碼編碼類型。若需要將搜尋限制在特定類型,可在 RecognizeBarcodeRequest 中指定其他選項。請參閱 API reference 以取得完整清單。
Q: 有沒有在 PHP 中可以在無網路連線下運作的 PDF 轉 XML 轉換腳本?
A: Cloud SDK 需要網路連線,因為處理是在 Aspose 伺服器上進行的。若要離線使用,您需要本地部署的解決方案,而此庫並未涵蓋此類方案。
Q: 在 PHP 中,PDF 轉 XML 轉換效能的最佳實踐是什麼?
A: 使用串流方式讀取檔案,重複使用 Configuration 物件,並選擇 HighPerformance 預設設定。此外,將多個檔案批次處理於同一腳本中,以減少連線開銷。
Q: 我可以在哪裡找到更多條碼提取和 XML 生成的範例?
A: 官方文件提供了許多程式碼片段,社群論壇 Aspose.BarCode Cloud SDK for PHP 是提出具體問題的好去處。