原生js 不使用html2canvas、jspdf等第三方库 将节点打印为pdf或图片
时间: 2024-01-22 21:21:10 浏览: 175
要将节点打印为 PDF 或图片,可以使用原生的 JavaScript 和浏览器内置的功能。以下是一些步骤:
1. 获取需要打印的节点的引用,可以使用 `document.getElementById()` 或 `document.querySelector()`。
2. 使用 `window.getComputedStyle()` 获取节点的样式。
3. 创建一个 `canvas` 元素,并设置其宽度和高度为节点的宽度和高度。
4. 在 `canvas` 上绘制节点和样式,可以使用 `canvas.getContext('2d')` 方法和相关的绘图 API。
5. 如果要将节点打印为 PDF,则可以使用 `window.print()` 方法,并在打印对话框中选择“打印到 PDF”。
6. 如果要将节点打印为图片,则可以使用 `canvas.toDataURL()` 方法将 `canvas` 转换为 base64 编码的字符串,然后将其作为图像资源使用。
以下是一个示例代码:
```javascript
// 获取需要打印的节点
const node = document.getElementById('myNode');
// 获取节点样式
const styles = window.getComputedStyle(node);
// 创建 canvas
const canvas = document.createElement('canvas');
canvas.width = parseInt(styles.width);
canvas.height = parseInt(styles.height);
// 绘制节点和样式
const ctx = canvas.getContext('2d');
ctx.fillStyle = styles.backgroundColor;
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.font = styles.font;
ctx.fillStyle = styles.color;
ctx.fillText(node.innerText, 0, 0);
// 打印为 PDF
window.print();
// 打印为图片
const img = new Image();
img.src = canvas.toDataURL('image/png');
document.body.appendChild(img);
```
阅读全文