全部產品
Search
文件中心

DataWorks:在DataWorks中通過Function Compute節點實現動態為PDF添加浮水印

更新時間:Jun 11, 2025

本文為您介紹如何在DataWorks中通過Function Compute節點調用Function Compute服務,實現周期性對OSS中的增量PDF檔案添加浮水印。

背景介紹

DataWorks當前已經支援通過Function Compute節點調用Function Compute服務,在Function Compute服務中可以自訂各種功能,最終可通過DataWorks進行調用。

前提條件

  • 已開通DataWorks服務,詳情請參見開通DataWorks服務

  • 已開通Function Compute服務,詳情請參見快速建立函數

  • 已開通OSS,詳情請參見開通OSS服務。建立Bucket並已向其上傳需要添加浮水印的pdf檔案。本文樣本:在Bucketbucket-test222下建立目錄2023-08-15,並上傳example.pdf到此目錄下。

使用限制

  • 功能限制

    DataWorks目前僅支援調用事件函數,不支援調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在建立函數時,需要建立用於處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型

  • 地區限制

    DataWorks目前僅支援華東1(杭州)、華東2(上海)、華北2(北京)、華南1(深圳)、西南1(成都)、中國香港、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、德國(法蘭克福)、英國(倫敦)、美國(矽谷)、美國(維吉尼亞)地區的工作空間使用Function Compute功能。

步驟一:建立Function Compute應用

  1. 登入Function Compute控制台,在左側導覽列,單擊應用

  2. 在應用頁面,單擊建立應用,然後選擇通過模板建立應用,在“搜尋應用模板”輸入框中搜尋“pdf檔案加浮水印”,在下方模板地區,找到pdf檔案加浮水印模板,移動游標到該卡片中,然後單擊立即建立

    image

    說明

    “pdf檔案加浮水印”應用的原始碼可參見GitHub。此應用實現的邏輯為:將OSS中的PDF檔案按照指定的內容添加浮水印並寫回相同的OSS路徑下。

  3. 設定建立應用的參數。

    參數

    描述

    部署類型

    本文選擇直接部署

    應用程式名稱

    預設已自動產生一個符合要求的名稱,可根據實際情況修改。

    角色名稱

    預設已選擇AliyunFCServerlessDevsRole,其對應的策略可根據實際情況進行設定。

    • 通過Serverless應用中心部署應用時,可能會訪問其他雲端服務,例如,部署Function Compute的服務和函數資源,建立或更新VPC、NAS、SLS相關資源等,此時需要授予Function Compute相應的存取權限。首先為應用或環境關聯一個RAM服務角色,然後將目標授信服務設定為Function Compute,應用中心使用AssumeRole - 擷取扮演角色的臨時身份憑證方式訪問使用者的雲端服務。

    • 為了簡化授權操作步驟,Serverless應用中心提供了系統預設角色,即AliyunFCServerlessDevsRole。該角色包含了應用中心需要訪問的部分雲資源許可權。您可以登入RAM角色管理主控台,查看AliyunFCServerlessDevsRole角色的許可權內容。

    地區

    建立應用所在的地區,後面選擇OSS 儲存桶名時僅可選擇此地區下的OSS Bucket。

    函數名

    預設已自動產生一個符合要求的名稱,可根據實際情況修改。

    時區

    預設已自動選擇當前地區下所屬時區,可根據實際情況修改。

    OSS 儲存桶名

    僅可選擇和“建立應用所在的地區”同地區下的Bucket。

    RAM角色ARN

    預設已自動選擇AliyunFcDefaultRole,可根據實際情況修改。

    為了簡化您的授權操作,Function Compute為您提供了一個系統預設的服務角色,即AliyunFcDefaultRole。該角色內包含了Function Compute需要訪問的部分雲資源許可權。關於如何建立預設角色AliyunFcDefaultRole和綁定該角色的操作步驟,請參見步驟一:開通Function Compute服務

    說明

    如果您在建立應用的過程中,提示您當前選擇的應用還需要一些額外的許可權,請單擊前往授權

  4. 單擊建立並部署預設環境。詳情頁上顯示部署成功時,表示部署完成。

    image.png

  5. 單擊應用頁面的應用程式名稱,進入應用詳情。

    image

  6. 找到預設環境單擊環境詳情下的函數名稱,進入函數詳情。

    image

  7. 單擊測試後,輸入參數,進行函數測試。

    圖片編輯

    • 事件名稱:輸入事件名稱。

    • 事件內容:輸入JSON格式內容。本文樣本如下:

      重要

      如果直接複製以下JSON樣本內容,請務必將//及其後面的注釋內容刪除,否則它無法通過JSON格式校正。

      // 以下配置為對pdf檔案(2023-08-15/example.pdf)添加浮水印文字(DataWorks),使用30號字型Helvetica,具體參數含義參見各個參數後面的注釋
      {
          "pdf_file": "2023-08-15/example.pdf",  // PDF檔案在OSS Bucket中的路徑
          "mark_text": "DataWorks",    // 浮水印文字,如果給PDF加浮水印,該參數必填
          "pagesize": [595.275590551181, 841.8897637795275], // 選擇性參數,預設是A4大小,(21*cm, 29.7*cm), 其中1cm=28.346456692913385
          "font": "Helvetica",     // 字型,選擇性參數,預設為Helvetica, 中文字型可選擇為zenhei或microhei
          "font_size": 20,         // 字型大小,選擇性參數,預設為30
          "font_color": [0, 0, 0], // 字型顏色,格式為 RGB,預設為黑色
          "rotate": 30,            // 旋轉角度, 選擇性參數,預設為0
          "opacity": 0.1,          // 透明度, 選擇性參數,預設為 0.1,1表示不透明
          "density": [198.4251968503937, 283.46456692913387] // 浮水印密度,浮水印文字間隔,預設是[141.73228346456693, 141.73228346456693],即(7*cm, 10*cm), 表示每個浮水印文字在橫座標和縱座標的間隔分別是7cm和10cm
      }
  • 單擊測試函數按鈕,顯示執行成功後,可在OSS中對應的源檔案路徑下查看添加過浮水印的pdf檔案。本文樣本會產生example-out.pdf檔案。

    image.png

    查看OSS中的檔案,如下:

    image.png

步驟二:在DataWorks中建立並配置Function Compute節點

  1. 登入DataWorks控制台

  2. 將頁面頂部導覽列的地區列表切換為步驟一:建立Function Compute應用中指定的地區。

  3. 單擊左側導覽列中的資料開發與營運下的資料開發,選擇工作空間後,進入DataWorks資料開發頁面。

  4. 單擊目標商務程序名稱,在其展開的通用節點上按右鍵並選擇Function Compute。在建立節點彈出框中輸入節點名稱並單擊確定按鈕,完成Function Compute節點的建立。

  5. 設定Function Compute節點參數。

    設定Function Compute節點參數

    參數

    描述

    選擇函數

    選擇步驟設定建立應用的參數中輸入的函數名稱。如需建立,詳情請參見管理函數

    說明

    DataWorks目前僅支援調用事件函數,不支援調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在建立函數時,需要建立用於處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型

    選擇版本或別名

    選擇後續調用函數時所使用的服務版本或別名。預設版本為LATEST。本文選擇預設版本

    • 服務版本

      Function Compute提供服務等級的版本控制功能,支援您為自己的服務發布一個或多個版本。當發布版本時,Function Compute會為服務產生快照,包括服務的配置、服務內的函數代碼及函數配置,但不包括觸發器,並自動分配一個版本號碼與其關聯,以供後續使用。發布版本,詳情請參見發布版本

    • 版本別名

      Function Compute支援為服務的版本建立別名。別名用於指向特定版本,您可利用別名輕鬆實現發布、復原以及灰階發布等功能。別名無法脫離服務或版本單獨存在。使用別名訪問服務或函數時,Function Compute會將別名解析為其指向的版本,調用方無需瞭解別名指向的具體版本。建立別名,詳情請參見建立別名

    調用方式

    本文選擇同步。調用方式詳情可參見同步調用非同步呼叫

    • 同步調用:該方式事件將直接觸發函數,Function Compute會運行該函數並等待響應,當函數調用完成後,Function Compute直接返回執行結果。

    • 非同步呼叫:該方式Function Compute會將事件請求先持久化後再立即返迴響應,而不是等待請求執行完成後才返迴響應。

      • 若函數存在耗時較長、資源消耗較大或易錯邏輯,可採用非同步呼叫,提升程式響應速度,更加可靠地應對突發流量。

      • 運行時間長度超過1小時的Function Compute任務,請使用非同步呼叫。

    變數

    調用函數的參數。本文使用事件內容中的JSON內容並進行適當修改,以實現每天增量對OSS中的PDF檔案添加浮水印。

    // 以下配置為對pdf檔案(${current_date}/example.pdf)添加浮水印文字
    {
        "pdf_file": "${current_date}/example.pdf",  // PDF檔案在OSS Bucket中的路徑
        "mark_text": "DataWorks",    // 浮水印文字,如果給PDF加浮水印,該參數必填
        "pagesize": [595.275590551181, 841.8897637795275], // 選擇性參數,預設是A4大小,(21*cm, 29.7*cm), 其中1cm=28.346456692913385
        "font": "Helvetica",     // 字型,選擇性參數,預設為Helvetica, 中文字型可選擇為zenhei或microhei
        "font_size": 20,         // 字型大小,選擇性參數,預設為30
        "font_color": [0, 0, 0], // 字型顏色,格式為 RGB,預設為黑色
        "rotate": 30,            // 旋轉角度, 選擇性參數,預設為0
        "opacity": 0.1,          // 透明度, 選擇性參數,預設為 0.1,1表示不透明
        "density": [198.4251968503937, 283.46456692913387] // 浮水印密度,浮水印文字間隔,預設是[141.73228346456693, 141.73228346456693],即(7*cm, 10*cm), 表示每個浮水印文字在橫座標和縱座標的間隔分別是7cm和10cm
    }
    說明
    • pdf_file的值(${current_date}/example.pdf)中,${current_date}表示使用一個名稱為current_date的變數。

    • DataWorks在調度任務時會將${current_date}替換為實際的值,變數可在調度參數中設定。例如:在2023年8月15日執行任務時,pdf_file2023-08-15/example.pdf;在2023年8月16日執行時,pdf_file2023-08-16/example.pdf

    • 業務系統只需每天在當前任務調度前按時間規則產生相應路徑的PDF檔案,即可每天動態為新增的PDF檔案添加浮水印。

    • 本樣本需要在運行任務之前向OSS中上傳符合此路徑${current_date}/example.pdf的pdf檔案。例如:2023-08-15/example.pdf

  6. 可選:調試運行Function Compute節點。節點配置完成後,您可單擊運行表徵圖,指定任務啟動並執行資源群組並為代碼變數賦值常量進行調試運行,測試節點代碼邏輯是否正確。例如:current_date=2023-08-15,代表Function Compute服務會對OSS中的2023-08-15/example.pdf檔案添加浮水印。

  7. 配置節點的周期調度屬性。DataWorks提供的調度參數,可實現調度情境下代碼動態傳參。開啟右側的調度配置,在參數地區設定參數。本文樣本添加參數current_date,參數值為$[yyyy-mm-dd],表示運行任務時的當前年月日。更多調度參數的配置,請參見調度參數支援的格式。更多調度屬性,請參見任務調度屬性配置概述

    image.png

三、提交並發布節點

Function Compute節點需要提交發布至生產環境後,才會自動調度運行。

  1. 儲存並提交節點。

    單擊工具列中的儲存提交表徵圖,儲存並提交節點。提交節點時,請根據提示輸入變更描述,並根據需要選擇是否進行程式碼檢閱及煙霧測試 (Smoke Test)。

    說明
    • 您需在調度配置中設定節點的重跑屬性依賴的上遊節點,才可以提交節點。

    • 開啟程式碼檢閱後,開發人員提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見程式碼檢閱

    • 為保障調度節點任務執行符合預期,建議您在發布前對任務進行煙霧測試 (Smoke Test),詳情請參見煙霧測試 (Smoke Test)

  2. 可選:發布節點。

    如果您使用的是標準模式的工作空間,提交成功後,需單擊右上方的發布,發布節點。相關介紹請參見標準模式的工作空間發布任務

後續步驟

相關文檔