在 pdfmake 中如何从字符串打印 html 数据

in pdfmake how to print html data from a string

这是 html 字符串,我想在 pdfmake 中打印它

let html_string = "<html><head></head><body><p>HI</p></body></html>";

        //something like this
        { text: html_string,    

            pageBreak: 'after',
          },

它应该打印为 pdfmake 的一部分中的 html 内容:如何打印包含 html 的字符串,因为它在 pdf 中。

您可以使用 HTML2PDF Js 库从 html 字符串制作 pdf。

检查这个 link here

npm 中有许多 JS 库可用于从图像或 html 创建 PDF。

使用 html 解析器获取您想要的 html 内容。 https://www.npmjs.com/package/node-html-parser

之后,我会编写一个对象构建函数来获取您要查找的正确 html 标记内容。

import { parse } from 'node-html-parser';


const root = parse('<ul id="list"><li>Hello World</li></ul>');
   var htmlBody = root.querySelector('#list');
function getContentBuilder (htmlBody ) {

  var record = {}
  //Locate htmlBody childnode that you want and insert to record
  return record;

}
    //something like this
    { text: getContentBuilder(htmlBody) ,    

        pageBreak: 'after',
      },

选项 1. 在将 html 传递给 pdfmake 之前将其转换为字符串。您可以使用 html-to-text .

const PdfPrinter = require("pdfmake");
const htmlToText = require('html-to-text');

let dd = {
    pageSize: "A4",
    pageOrientation: "portrait",
    content: [
        {
            text: htmlToText.fromString("<p>Hello <strong>World</strong></p>", {
              wordwrap: 130
            }),
            style: "",
          }
    ],
}
let printer = new PdfPrinter(fonts);
let doc = printer.createPdfKitDocument(dd);

选项 2. 使用 html-to-pdfmake .如果您在 Nodejs 端执行此操作,则必须添加 jsdom。

const PdfPrinter = require("pdfmake");
let jsdom = require("jsdom");
let { JSDOM } = jsdom;
let { window } = new JSDOM("");
const htmlToPdfmake = require("html-to-pdfmake");

let dd = {
    pageSize: "A4",
    pageOrientation: "portrait",
    content: [
        {
            text: htmlToPdfmake(salesConditions.salesConditionBody, {
              window: window,
            }),
            style: "",
          }
    ],
}
let printer = new PdfPrinter(fonts);
let doc = printer.createPdfKitDocument(dd);