jsPDF

jsPDF

在这里插入图片描述

Github仓库:https://github.com/MrRio/jsPDF
项目首页:github.com/mrrio/jspdf
查看原文请前方官方网站文档
官网

安装

从npm获取jsPDF:

npm install jspdf --save
# or
yarn add jspdf

或者,从CDN加载它:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script>

或者始终使用最新版本的Viaunpkg

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

此软件包的Dist文件夹中包含不同类型的文件

  • jspdf.es.*.js: 现代ES2015模块格式。
  • jspdf.node.*.js: 用于在Node.js中运行。使用文件操作加载/保存文件,而不是使用浏览器API.
  • jspdf.umd.*.js: UMD 模块格式。 用于 AMD 或脚本标签加载。
  • polyfills*.js:Internet Explorer等旧浏览器所需的兼容文件。ES变体只需从 core-js导入所有必需的polyfill,UMD 版本是独立的。

通常不需要在import语句中指定确切的文件。构建工具或节点会自动找到正确的文件,所以导入“jspdf”就足够了

使用

然后,您就可以开始制作文档了:

import { jsPDF } from "jspdf";

// 默认导出为a4纸张,纵向,单位为毫米
const doc = new jsPDF();

doc.text("Hello world!", 10, 10);
doc.save("a4.pdf");

如果要更改纸张大小、方向或单位,可以执行以下操作:

// 横向输出,2×4英寸
const doc = new jsPDF({
  orientation: "landscape",
  unit: "in",
  format: [4, 2]
});

doc.text("Hello world!", 1, 1);
doc.save("two-by-four.pdf");

在Node.js中运行

const { jsPDF } = require("jspdf"); // 将自动加载节点版本

const doc = new jsPDF();
doc.text("Hello world!", 10, 10);
doc.save("a4.pdf"); // 将文件保存在当前工作目录中

其他模块格式
AMD

require(["jspdf"], ({ jsPDF }) => {
  const doc = new jsPDF();
  doc.text("Hello world!", 10, 10);
  doc.save("a4.pdf");
});

传统方式使用

const { jsPDF } = window.jspdf;

const doc = new jsPDF();
doc.text("Hello world!", 10, 10);
doc.save("a4.pdf");

可选依赖项

jsPDF 的某些功能需要可选的依赖项。 例如。 html 方法,它依赖于 html2canvas 和,当提供一个字符串 HTML 文档时,dompurify。 JsPDF 在需要时动态加载它们(使用相应的模块格式,例如动态导入)。 像 Webpack 这样的构建工具会自动为每个可选的依赖项创建单独的块。 如果您的应用程序不使用任何可选依赖项,您可以通过将它们定义为外部依赖项来阻止 Webpack 生成块:

// webpack.config.js
module.exports = {
  // ...
  externals: {
    // 仅定义不用作外部的依赖项!
    canvg: "canvg",
    html2canvas: "html2canvas",
    dompurify: "dompurify"
  }
};

Vue CLI项目中,可以通过Vue.config.jsfile的ConfigureWebPackchainWebpack定义外部(首先需要在新项目中创建)。
Angular项目中,可以使用自定义网页包生成器定义外部。
React(create-react-app)项目中,可以使用react-app-rewiredor-ejecting来定义外部。

TypeScript/Angular/Webpack/React/etc. 配置:

jsPDF可以像任何其他第三方库一样导入。这适用于所有主要的工具包和框架。jsPDF还为TypeScript项目提供了键入文件。

import { jsPDF } from "jspdf";

您可以将jsPDF添加到meteor项目中,如下所示:

meteor add jspdf:core

Polyfills
jsPDF需要现代浏览器API才能正常工作。要在旧浏览器(如Internet Explorer)中使用jsPDF,需要使用polyfills 。可以按如下方式加载所有必需的polyfills :

import "jspdf/dist/polyfills.es.js";

或者,您可以加载预绑定的polyfill文件。不建议这样做,因为您可能会多次加载polyfills。对于小型应用程序或快速POC来说,可能仍然是不错的选择。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/polyfills.umd.js"></script>

Unicode字符/UTF-8的使用:

PDF中的14种标准字体仅限于ASCII代码页。如果你想使用UTF-8,你必须集成一个自定义字体,提供所需的字形。jsPDF支持.ttf文件。因此,如果您想在pdf中包含例如中文文本,您的字体必须具有必要的中文字形。因此,请检查您的字体是否支持所需的字形,否则它将显示乱码字符而不是正确的文本。

要将字体添加到 jsPDF 中,请使用我们的 fontconverter。fontconverter将创建一个js文件,其中提供的ttf文件的内容转换为base64编码字符串和jsPDF的附加代码。您只需将生成的js文件添加到项目中。然后,您就可以在代码中使用setFont方法并编写UTF-8编码的文本了。

const doc = new jsPDF();

const myFont = ... // 将*.ttf字体文件作为二进制字符串加载

// 将字体添加到jsPDF
doc.addFileToVFS("MyFont.ttf", myFont);
doc.addFont("MyFont.ttf", "MyFont", "normal");
doc.setFont("MyFont");

高级功能
自从与yworksfork合并以来,有很多新特性。但是,其中一些正在破坏API,这就是为什么在两种API模式之间存在API切换:

  • 在 compat API 模式下,jsPDF 具有与 MrRio 的原始版本相同的 API,这意味着与插件完全兼容。然而一些高级特性,如转换矩阵和模式将无法工作。这是默认模式。
  • 在 advanced API 模式下,jsPDF 拥有从 yWorks-fork 版本中使用的 API。这意味着所有高级特性,如模式、FormObjects 和 转换矩阵的可用性。

您可以通过调用

doc.advancedAPI(doc => {
  // your code
});
// or
doc.compatAPI(doc => {
  // your code
});

运行回调后,jsPDF将自动切换回原始API模式。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值