Angular 使用PdfMake包装器解析html

Angular 使用PdfMake包装器解析html,angular,pdf,pdfmake,Angular,Pdf,Pdfmake,我正在开发一个angular网站,它必须创建一个pdf,我正在使用PdfMake包装器() 这是我的职责: async pdf() { PdfMakeWrapper.setFonts(pdfFonts); const pdf = new PdfMakeWrapper(); pdf.pageSize('A4'); pdf.pageMargins([40, 60, 40, 60]); pdf.pageOrientation('portrait'); pdf.header(this.bando.

我正在开发一个angular网站,它必须创建一个pdf,我正在使用PdfMake包装器()

这是我的职责:

async pdf() {

PdfMakeWrapper.setFonts(pdfFonts);
const pdf = new PdfMakeWrapper();

pdf.pageSize('A4');
pdf.pageMargins([40, 60, 40, 60]);
pdf.pageOrientation('portrait');

pdf.header(this.bando.name);

pdf.add('Descrizione Bando');
pdf.add(this.bando.desc);

pdf.create().download();

}
问题是“this.bando.desc”是html文本(它包含table,div ecc..),我想将我的pdf格式设置为html格式。
我该怎么做呢?

我建议不要直接创建PDF,因为它需要很多不同于HTML的格式。最好创建一个HTML文档,然后将其转换为PDF。我在最近的一个项目(打印mtg卡组)中使用了此功能,它工作得非常好:

import pdfkit
from jinja2 import Template, Environment, FileSystemLoader


class Html(object):
    def __init__(self):
        self.template: Optional[Template] = None

    def load_template(self):
        template_loader = FileSystemLoader(searchpath="./")
        template_env = Environment(loader=template_loader)
        self.template = template_env.get_template("template.html")

    def write_html(self, deck_name: str, data: list):
        with io.open("index.html", mode="w", encoding="utf-8") as fh:
            if self.template:
                fh.write(self.template.render(deck_name=deck_name, rows=data))

class Pdf(object):
    def __init__(self, deck_name: str):
        self.deck_name = deck_name
        self.options = {
            'margin-left': '5mm',
            'margin-right': '5mm',
            'margin-top': '5mm',
            'margin-bottom': '5mm',
        }

    def create(self):
        # create pdf
        pdfkit.from_file('index.html', f'{self.deck_name}.pdf', options=self.options)

html = Html()
html.load_template()
html.write_html(deck_name=deck_name, data=rows)
pdf = Pdf(deck_name=deck_name)
pdf.create()
我猜代码不会在没有任何更改的情况下运行,因为我只是尝试将其拆分为基本函数,但是您可以了解它是如何工作的


它使用
Jinja2
作为模板引擎以方便格式化,然后使用
pdfkit
模块将html导出为pdf,并使用
wkhtmltopdf
,可以从下载。我建议不要直接创建pdf,因为它需要大量不同于html的格式。最好创建一个HTML文档,然后将其转换为PDF。我在最近的一个项目(打印mtg卡组)中使用了此功能,它工作得非常好:

import pdfkit
from jinja2 import Template, Environment, FileSystemLoader


class Html(object):
    def __init__(self):
        self.template: Optional[Template] = None

    def load_template(self):
        template_loader = FileSystemLoader(searchpath="./")
        template_env = Environment(loader=template_loader)
        self.template = template_env.get_template("template.html")

    def write_html(self, deck_name: str, data: list):
        with io.open("index.html", mode="w", encoding="utf-8") as fh:
            if self.template:
                fh.write(self.template.render(deck_name=deck_name, rows=data))

class Pdf(object):
    def __init__(self, deck_name: str):
        self.deck_name = deck_name
        self.options = {
            'margin-left': '5mm',
            'margin-right': '5mm',
            'margin-top': '5mm',
            'margin-bottom': '5mm',
        }

    def create(self):
        # create pdf
        pdfkit.from_file('index.html', f'{self.deck_name}.pdf', options=self.options)

html = Html()
html.load_template()
html.write_html(deck_name=deck_name, data=rows)
pdf = Pdf(deck_name=deck_name)
pdf.create()
我猜代码不会在没有任何更改的情况下运行,因为我只是尝试将其拆分为基本函数,但是您可以了解它是如何工作的

它使用
Jinja2
作为模板引擎以方便格式化,然后使用
pdfkit
模块将html导出为pdf,其中包含
wkhtmltopdf
,可从