JavaScript 輸出 PDF 檔案(使用 jsPDF 套件)

jsPDF 是一個在 GitHub 上有 27.5k Star,npm 每周有 70 萬下載的老牌套件(上次發佈更新是 2022 年 1 月...),本篇就來示範該如何使用 jsPDF 套件輸出 PDF 檔案。

安裝

使用 npm
    
npm install jspdf --save
    

或是直接使用 CDN:
    
<script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js"></script>
    

產生第一個 PDF

    
<script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js"></script>

<script>
    // import {jsPDF} from 'jspdf'; // npm 的使用方式
    const {jsPDF} = window.jspdf; // CDN 的使用方式
    const doc = new jsPDF();
    doc.text("Hello world!", 10, 10);
    doc.save("A4.pdf");

</script>
    

顯示中文

顯示中文內容會發現出現亂碼,最根本的原因是因為 jsPDF 預設的字型都只有支援 ASCII,其他的字型都需要手動安裝,然後設定文字字型。比較安全的作法是將字型檔案下載下來,一並提供給使用者。
網路上最常使用的就是 Google 和 Adobe 合作開發的免費開源的思源黑體,不過檔案都不小無法直接使用,還好有網友已經把它打包好放在 npm 上,可以直接使用 CDN 使用該字體。
    
<script src="https://cdn.jsdelivr.net/npm/vxe-table-plugin-export-pdf/fonts/source-han-sans-normal.js"></script>
    

設定字體:
    
doc.addFont('SourceHanSans-Normal.ttf', 'SourceHanSans-Normal', 'normal');
doc.setFont('SourceHanSans-Normal', 'normal');
doc.text("繁體中文 English", 10, 30);
    

這樣就可以正常顯示中文了

PDF 設定

PDF 預設是直向、使用毫米為單位、A4 大小,但是也可以自行調整設定
    
// const doc = new jsPDF();
const doc = new jsPDF({
    orientation: "p", // "p" (portrait), "l" (landscape)
    unit: "pt", // "pt" (points), "mm", "cm", "in", "px", "pc", "em" or "ex"
    format: "a4", // "a0" ~ "a10", "b0" ~ "b10", "c0" ~ "c10", "dl", "letter", "government-letter", "legal", "junior-legal", "ledger", "tabloid", "credit-card"
    putOnlyUsedFonts: true,
    floatPrecision: 16 // or "smart", default is 16
});
    

常用範例

文字對齊

文字在顯示時都是從定位點的左邊開始,往右依序顯示文字,也可以調整為文字的中心在定位點,或是文字的右側貼齊定位點:
    
doc.text("繁體中文 English", 105, 40, null, null); // 文字靠左
doc.text("繁體中文 English", 105, 50, null, null, "center"); // 文字置中對齊定位點
doc.text("繁體中文 English", 105, 60, null, null, "right"); // 文字右側對齊定位點
    

插入圖片

插入免費服務的隨機圖片:
    
doc.addImage("https://picsum.photos/200/300", "JPEG", 15, 40, 180, 180);
    

上面的圖片可以直接顯示, 不過需要注意的是使用圖片時很可能會遇到 CORS 問題,瀏覽器限制無法跨域顯示圖片,就需要圖片提供的 API 中允許任何來源。

如果真的遇到 CORS 的問題在這裡有點難提供所有情況的解決方式,不過有個最簡單的解決方式,就是把圖片轉換為 base64 就可以很簡單的顯示了:
    

var base64Img = " data:image/jpeg;base64,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";
doc.addImage(base64Img, "JPEG", 15, 40, 61, 20);
    



參考資料:
GitHub - parallax/jsPDF
GitHub - adobe-fonts/source-han-sans
GitHub - x-extends/vxe-table-plugin-export-pdf

留言