Angular 使用PdfMake包装器解析html
我正在开发一个angular网站,它必须创建一个pdf,我正在使用PdfMake包装器() 这是我的职责: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.
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
,可从