PDF lib 搭配 JsBarcode 实现 PDF中增加条形码
- 思路:pdf中增加图片
- 遇到的小问题:JsBarcode displayValue: false 后在pdf中仍有显示 发现隐藏的只是浏览器端
- 解决:使用画布 位像素解决
- 代码如下:
- 浏览器要求:IE9+
- fontkit为自定义字体注册工具可以百度找 common 为我的静态资源路径
- formatNulls为我判断空值的工具类 代码在结尾
console.log('PDFLib',PDFLib);
const fontkit = window.fontkit;
const pdfDoc = await PDFLib.PDFDocument.create();
const fonturl = common + '/font_lib';
const fontBytes = await fetch(fonturl).then((res) => res.arrayBuffer());
pdfDoc.registerFontkit(fontkit);
const customFont = await pdfDoc.embedFont(fontBytes);
var canvas = document.createElement('canvas');
JsBarcode(canvas, this.formatNulls
(item.data), { displayValue: false });
var imageData = canvas.toDataURL('image/jpeg');
const base64Data = imageData.split(',')[1];
const binaryString = window.atob(base64Data);
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
const jpgImage = await pdfDoc.embedJpg(bytes);
page.moveTo(35, 35);
page.drawImage(jpgImage, {
x: 20,
y: 10,
width: 100,
height: 30,
});
formatNulls(value) { return value ? value : ''; }