Tips & Tricks

如何在 PDF 儀表板中嵌入即時資料來源

傳統的 PDF 是快照。它顯示的數據在生成 PDF 時被凍結。每次開啟文件時,包含即時資料的互動式 PDF 儀表板都會刷新其內容,從 Web 服務、資料庫或連結資料來源中提取目前資料。讀者看到的是當前數據,而不是上週的出口數據。此功能將 PDF 從靜態報告轉變為即時報告工具。

在 PDF 中嵌入即時資料來源需要以下三種方法之一:使用更新的資料按計劃重新產生 PDF、嵌入在開啟 PDF 時呼叫 Web 服務的 JavaScript,或將 PDF 元素連結到 PDF 閱讀器自動刷新的外部資料來源。每種方法都有不同的基礎設施要求和不同級別的 PDF 閱讀器支援。

WukongPDF 的Web 到 PDF 工具可根據需要將即時資料視圖轉換為 PDF。對於必須始終顯示當前資料的儀表板,計劃的重新生成方法在所有 PDF 閱讀器中是最可靠的。

How to Embed Live Data Feeds in a PDF Dashboard

方法 1:使用當前資料計劃 PDF 重新產生

確保 PDF 儀表板始終顯示目前資料的最可靠方法是按計劃重新產生資料。腳本從來源資料庫或 API 中提取資料、填充報告範本並匯出新的 PDF。產生的 PDF 包含目前資料作為靜態內容。閱讀器不需要支援 JavaScript 或外部資料連接。 PDF 在每個閱讀器中看起來都是一樣的,因為數據是在生成時烘焙到文件中的。

Python 等工具以及 matplotlib 和 reportlab 函式庫可以透過程式設計方式產生資料驅動的 PDF 儀表板。伺服器上的 cron 作業每小時或每天執行該腳本,提取新資料並覆蓋先前的 PDF。 PDF 的 URL 保持不變,但每次腳本運行時其內容都會更新。此方法適用於任何 PDF 閱讀器和任何可以透過程式查詢的資料來源。限制在於數據僅與最後一個再生週期相同。對於每小時或每天更新就足夠的儀表板,計劃重新產生可提供最佳相容性。

WukongPDF

嘗試編輯 PDF

無需安裝。直接在您的瀏覽器中工作。

立即開始 →

方法 2:文件開啟上的 JavaScript API 呼叫

PDF 檔案可以包含開啟文件時執行的 JavaScript。該腳本可以呼叫外部 Web 服務、接收回應中的 JSON 數據,並使用傳回值填入表單欄位或更新文字元素。當讀者開啟 PDF 並點擊安全警告以允許網路連線時,儀表板會填入來自 Web 服務的即時資料。

此方法需要一個以 JSON 格式傳回儀表板資料的伺服器端點。 PDF 包含使用 Acrobat JavaScript API 中的 Net.HTTP.request 方法呼叫此端點的 JavaScript。該腳本在 DocOpen 事件上運行,獲取資料並更新欄位值。此方法適用於啟用 JavaScript 的 Adobe Acrobat Reader。它不適用於基於瀏覽器的 PDF 檢視器、大多數行動 PDF 閱讀器或禁用 JavaScript 的 Acrobat Reader。有限的閱讀器支援使得這種方法適合分發給已知的、支援 JavaScript 的閱讀器上的使用者的內部儀表板。

方法 3:透過自動刷新連結 Excel 資料

Microsoft Excel 可以透過連結資料連線將圖表和表格匯出為 PDF。當 Excel 檔案連接到外部資料來源(例如 SQL 資料庫、Web API 或 Power Query 資料來源)時,Excel 工作簿中的圖表和資料透視表會在刷新資料連線時更新。將更新的工作簿匯出為 PDF 會嵌入最新資料。

實際上,PDF 和即時數據之間的連結是間接的。 Excel 檔案連接到資料來源,按計劃或開啟時刷新,並且巨集或計劃任務匯出更新的 PDF。 PDF 本身包含來自最近 Excel 刷新的靜態資料。此方法使用 Excel 內建的資料連接性,無需在 PDF 中使用 JavaScript。

資料源刷新方法複雜性
伺服器端腳本+PDF再生使用更新的數據按計劃重新生成整個 PDF中等,需要腳本和調度
JavaScript + 內嵌式Web服務調用PDF 表單在開啟時呼叫 API,以回應填入字段中等,需要伺服器端點和 JS 知識
具有自動更新功能的連結電子表格PDF 圖表連結到外部資料來源,開啟時更新低,在 Excel 到 PDF 工作流程中受支持

為您的受眾選擇正確的方法

預定的重新生成方法適用於任何受眾,因為它會產生每個讀者都可以打開的標準靜態 PDF。 JavaScript 方法在開啟時提供真實的即時數據,但僅適用於使用啟用了 JavaScript 的 Acrobat Reader 的讀者。 Excel 連結方法提供半即時數據,並以 Excel 作為資料來源和 PDF 輸出之間的橋樑。

對於向具有未知 PDF 閱讀器配置的受眾進行外部分發,計劃重新生成是安全的選擇。對於同事在託管裝置上查看的內部儀表板,JavaScript 或 Excel 連結方法可以提供更頻繁的資料更新。該決定平衡了數據新鮮度和讀者相容性。向每位收件者顯示前一小時資料的儀表板通常比向擁有合適 PDF 閱讀器的一小部分收件者顯示即時資料的儀表板更有用。

PDF 儀表板中的即時資料模糊了靜態文件和動態報告介面之間的界限。 PDF 格式最初是為靜態內容交換而設計的,當與正確的資料傳輸機制結合使用時,可以用作輕量級儀表板容器。預定的重新生成方法是為最廣泛的受眾提供即時 PDF 儀表板的最實用途徑。

保護 PDF 儀表板中的即時資料連結

在大多數情況下,發出網路請求以取得即時資料的 PDF 會引入靜態 PDF 所沒有的安全性考量。網路請求可能會將閱讀器的 IP 位址暴露給資料伺服器,如果伺服器受到威脅,伺服器的回應可能包含惡意內容。對於內部儀表板,請確保資料端點使用 HTTPS 並需要驗證。 PDF 的 JavaScript 應在傳送或接收資料之前驗證伺服器的 SSL 憑證。

對於外部分發的儀表板,計劃的 PDF 重新生成是更安全的方法,因為資料在生成時嵌入受控伺服器上的文件中,並且收件人的 PDF 閱讀器不會發出網路請求。靜態 PDF 的安全模型比進行即時 API 呼叫的支援 JavaScript 的 PDF 更簡單且更容易審核。為內部儀表板保留即時 API 方法,其中伺服器端點、PDF 閱讀器配置以及它們之間的網路路徑都在組織的控制之下。

將即時資料服務中的圖表嵌入為影像

不要建立完整的儀表板,而是考慮嵌入由即時數據服務產生的單獨圖表。 Google Charts 和 QuickChart 等服務將圖表呈現為來自 URL 的圖像,並帶有指定資料值的查詢參數。 PDF 顯示從 URL 載入的圖像,該圖像在請求時傳回包含當前資料的圖表。

這種方法比 JavaScript 資料擷取具有更廣泛的閱讀器相容性,因為支援連結影像的 PDF 閱讀器可以在不執行 JavaScript 的情況下顯示圖表。圖表服務處理資料檢索和視覺化。 PDF 僅顯示產生的影像。對於分發給具有未知 PDF 檢視器配置的讀者的儀表板,連結的圖表影像提供具有廣泛相容性的即時視覺化。

PDF 儀表板中的即時資料將 PDF 格式的實用性擴展到靜態文件交換之外。預定的再生方法提供了數據新鮮度和讀取器相容性的最佳平衡。 JavaScript 和連結圖像方法為已知閱讀器軟體的受控環境提供了更高的及時性。為受眾選擇正確的資料刷新策略可確保儀表板發揮其價值,而不會出現相容性意外。

包含即時資料的 PDF 儀表板佔據靜態報告和完整 Web 應用程式之間的中間地帶。它以每個利害關係人都可以打開的格式提供當前數據,而無需學習新工具。預定的再生方法提供了最廣泛的兼容性和最少的技術依賴性。

PDF 儀表板中的即時資料將格式從靜態文件交換擴展到輕量級報告。預定的重新生成方法提供了跨 PDF 閱讀器的最佳相容性。 JavaScript 和連結圖像方法為受控環境提供了更高的及時性。將刷新策略與受眾相匹配可確保儀表板在不存在相容性差距的情況下提供價值。

WukongPDF

嘗試編輯 PDF

無需安裝。直接在您的瀏覽器中工作。

立即開始 →