【问题标题】:in pdfmake how to print html data from a string在pdfmake中如何从字符串打印html数据
【发布时间】:2018-10-04 07:27:17
【问题描述】:

这是 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 中一样。

【问题讨论】:

    标签: html angular typescript pdfmake


    【解决方案1】:

    选项 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);
    

    【讨论】:

      【解决方案2】:

      使用 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',
            },
      

      【讨论】:

        【解决方案3】:

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

        查看此链接here

        npm 中提供了许多 JS 库,用于从图像或 html 创建 PDF。

        【讨论】:

        • 我已经在使用 Pdfmake 了。例如,某些内容(富文本)采用 html 格式。将内容保持为 pdf 格式
        猜你喜欢
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 2015-11-18
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 2021-07-24
        • 1970-01-01
        相关资源
        最近更新 更多