首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PdfMake-wrapper解析html

使用PdfMake-wrapper解析html
EN

Stack Overflow用户
提问于 2019-11-01 17:59:50
回答 1查看 1.2K关注 0票数 1

我正在开发一个angular网站,它必须创建一个pdf,我使用的是PdfMake-wrapper (https://github.com/Lugriz/pdfmake-wrapper)。

这是我的函数:

代码语言:javascript
复制
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文本(它包含表、div ecc..)我想把我的pdf格式化为html格式。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2020-03-12 23:54:06

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

代码语言:javascript
复制
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导出为wkhtmltopdf格式的pdf,该格式可以从https://wkhtmltopdf.org/下载

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58657256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档