标签: weasyprint

We WeasyPrint可以自动适合纸张尺寸

我曾经为一个使用Prince XML生成PDF文档的组织工作.该组织已经折叠,我不再能够访问该Prince许可证.由于我在沙发垫之间没有四个盛大,我一直在尝试使用WeasyPrint将HTML发票呈现为PDF.我的HTML和CSS都很简单,所以Weasy可以准确地呈现它们,但需要注意.我不能让页面自动缩小到纸张大小,就像我在王子中使用:

@page {
prince-shrink-to-fit:auto;
}
Run Code Online (Sandbox Code Playgroud)

在重新编写整个网站的CSS以生成较小的文档之前,有没有人知道Weasy是否支持任何类似的命令?

html css python pdf weasyprint

5
推荐指数
1
解决办法
2743
查看次数

使用具有通用页眉/页脚和分页的WeasyPrint生成PDF

我正在使用WeasyPrint在Django中生成PDF.我可以从下面的静态html文件生成pdf -

from django.template import Context, Template
import weasyprint

with open('static_file.html', 'r') as myfile:
    html_str = myfile.read()

template = Template(html_message)
    context = Context({'some_key': 'some_value'})
    rendered_str = template.render(context)

weasyprint.HTML(string=rendered_str).write_pdf('generated.pdf')
Run Code Online (Sandbox Code Playgroud)

但我想生成一个PDF,其中,我可以在每个页面中包含一个公共页眉/页脚并添加分页.

如果任何人都可以告诉如何包含自定义字体来生成PDF,那么它将非常有用.我在操作系统(Ubuntu 14.04)中安装了该字体,但它无法正常工作.

我在网上搜索了很多关于这些的内容.但找不到合适的解决方案.

python django fonts pagination weasyprint

5
推荐指数
2
解决办法
6353
查看次数

如何在 weasyprint 中使用自定义字体

我有一个 django 应用程序,我想从我的 django 视图中创建一个 pdf。我使用 weasyprint,但出于某种原因,它不接受我的自定义字体。字体 url 正在工作,当我使用相同的字体呈现相同的 html 时,我看到了正确的字体,但我的 pdf 呈现错误的字体。我也尝试了 base64 字体字符串,但没有运气。我的渲染代码是:

import os
from weasyprint import HTML, CSS
from weasyprint.fonts import FontConfiguration

from django.conf import settings
from django.http import HttpResponse
from django.template.loader import get_template
from django.urls import reverse


def render_to_pdf(template_src, context_dict={}):
    font_config = FontConfiguration()
    font_string = '''
        @font-face {
          font-family: 'Titillium Web';
          font-style: normal;
          font-weight: 300;
          src: local('Titillium Web Light'), local('TitilliumWeb-Light'), url('http://X.X.X.X:8000/static/fonts/titillium_web.woff2') format('woff2');
        }
        *, div {font-family: 'Titillium Web';}
    '''

    template = get_template(template_src)
    rendered_html  = template.render(context_dict) …
Run Code Online (Sandbox Code Playgroud)

python django weasyprint

5
推荐指数
2
解决办法
8530
查看次数

仅缺少数字Weasyprint PDF

就是这样,我在Mac Mojave上具有weasyprint-44,python 3.6和Cairo等版本。PDF会以其他方式很好地呈现-符号和字母很好-只是没有数字?

太奇怪了。

谁能指出我正确的方向?

django-views python-3.x weasyprint

5
推荐指数
1
解决办法
176
查看次数

如何强制 weeasyprint 使用 PDF 中的颜色?

当我使用

$ weasyprint table.html table.pdf
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/MartinThoma/0hL29mcc/上,它会生成一个 PDF,如下所示:

在此输入图像描述

正如您所看到的,标题是黑色的,而不是红色的。此外,桌子不再有条纹。

不知何故,weasprint 删除了所有颜色。我怎样才能防止这种行为/保留颜色?(我不一定需要使用weasyprint,但我不知道有什么更好的选择)

我用WeasyPrint version 0.40

我尝试过的

  • pandoc table.html -o table.pdf:不应用 CSS 页面旋转;不应用CSS
  • wkhtmltopdf table.html out.pdf:不应用 CSS 页面旋转;(但应用了一些 CSS - 但不是颜色)
  • import pdfkit;pdfkit.from_file('table.html', 'outpdfkit.pdf'):不应用 CSS 页面旋转(看起来与 相同wkhtmltopdf

html pdf weasyprint

4
推荐指数
1
解决办法
2920
查看次数

使用Weasyprint的PDF输出不显示图像(Django)

我正在尝试使用Weasyprint库在Django上输出PDF,但是图像不会出现在生成的PDF上。我已经尝试了图像的相对URL和静态URL,但是即使静态URL也无法显示图像。在chrome上打开HTML本身时,图像会显示出来。

这是views.py文件中的pdf生成视图:

def pdf_generation(request, some_slug)
    stud = Student.objects.get(some_slug=some_slug)
    studid = stud.some_slug
    context = {'studid':studid}
    html_string = render_to_string('templates/pdf_gen.html', context)
    html = HTML(string=html_string)
    pdf = html.write_pdf(stylesheets=[CSS(settings.STATIC_ROOT +  '/css/detail_pdf_gen.css')]);
    response = HttpResponse(pdf, content_type='application/pdf')
    response['Content-Disposition'] = 'inline; filename="mypdf.pdf"'
    return response
Run Code Online (Sandbox Code Playgroud)

这是图像HTML的一部分:

<DIV id="p1dimg1">
<IMG src="{% static 'img/image.jpg' %}" alt="">
</DIV>
Run Code Online (Sandbox Code Playgroud)

和CSS:

#page_1 #p1dimg1 {position:absolute;top:0px;left:0px;z-
index:-1;width:792px;height:1111px;}
#page_1 #p1dimg1 #p1img1 {width:792px;height:1111px;}
Run Code Online (Sandbox Code Playgroud)

非常感谢你

html python pdf django weasyprint

4
推荐指数
3
解决办法
5962
查看次数

无法加载库:cairo

尝试运行以下命令时,我不断收到此错误:

python -m weasyprint http://weasyprint.org weasyprint.pdf
Run Code Online (Sandbox Code Playgroud)

错误:

  raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
OSError: dlopen() failed to load a library: cairo / cairo-2 / cairo-gobject-2 / cairo.so.2
Run Code Online (Sandbox Code Playgroud)

我使用pip install weasyprint. 要安装 cairo,我使用了这个文档:https : //weasyprint.readthedocs.io/en/latest/install.html

但是,在指南的最后,当我尝试运行时WHERE libcairo-2.dll出现not found错误。

我一直在一步一步地遵循指南,但它不起作用,我不断收到同样的错误,我搜索了各种解决方案,但没有一个解决了问题。有什么建议吗?提前致谢

python python-3.x weasyprint

4
推荐指数
1
解决办法
1万
查看次数

使用 docker 内的 WeasyPrint 导出 PDF 中的字体 (FastAPI)

我有一个在 Docker 容器内运行的应用程序。该服务是使用 FastAPI 框架编写的,用于生成报告。我们首先生成一个 HTML 报告,然后使用 Wea​​syprint 库将其转换为 PDF。当我在笔记本电脑上执行它时(我使用的是 Manjaro Linux),一切都运行良好。但是,当我在 docker 容器内使用 API 时,我注意到生成的 PDF 中的字体不同。在 CSS 文件中,我们使用 Helvetica 字体系列、无衬线字体。因此,当在容器内生成报告时,无衬线字体不起作用。

此外,我已将我的字体文件夹(从我的笔记本电脑)复制到 Docker 容器中,以检查它是否缺少某些字体;然而,无衬线字体仍然不起作用。

这是我的 Dockerfile:

FROM tiangolo/uvicorn-gunicorn-fastapi

RUN apt-get update && apt-get install -y build-essential unzip vim git curl locales orca
RUN apt install -y python3-cffi libcairo2 libcairo2-dev libpango-1.0-0 libpango1.0-dev libpangocairo-1.0-0 libgdk-pixbuf2.0-0 \
                   libgdk-pixbuf2.0-dev libffi-dev shared-mime-info libffi-dev fonts-font-awesome

RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
    locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

ARG RELEASE=main …
Run Code Online (Sandbox Code Playgroud)

python docker weasyprint fastapi

4
推荐指数
1
解决办法
2388
查看次数

WeasyPrint始终从Zurb Ink生成单页PDF

从电子邮件生成PDF(Zurb Ink模板化); 但我总是提供单页PDF.

可运行的测试用例:

from weasyprint import HTML, CSS
from urllib2 import urlopen

if __name__ == '__main__':
    html = urlopen('http://zurb.com/ink/downloads/templates/basic.html').read()
    html = html.replace('<p class=\"lead\">', '{0}<p class=\"lead\">'.format(
        '<p class=\"lead\">{0}</p>'.format("foobar " * 50) * 50))
    HTML(string=html).write_pdf('foo.pdf', stylesheets=[
                                  CSS(string='@page { size: A4; margin: 2cm };'
                                             '* { float: none !important; };'
                                             '@media print { nav { display: none; } }')
                                ])
Run Code Online (Sandbox Code Playgroud)

如何获得多页PDF?

css pdf multipage weasyprint zurb-ink

3
推荐指数
1
解决办法
4834
查看次数

使用weeasy print和django从html模板编写多页pdf

您好,我正在从包含行数不同的表格的 html 模板生成 PDF,问题是当行数超过一定数量(12)时,其余行加上页脚会进一步推到下方,并且不会出现在生成的 PDF 中pdf.如何使其动态,以便将额外的信息推送到新页面,每个页面至少有一定数量的行,或者如果当前已满,是否有一种方法 weasy print 将数据移动到另一页

到目前为止,我的模板上有分页符,但它已经起作用了。

{% for record in data %}
    <tr>
        <td> {{ record.id}}</td>
        <td> {{ record.date}}</td>
    </tr>
    {% if forloop.counter|divisibleby:12 %}
        <div style="page-break-after: always;"></div>
        div style="page-break-before: always;"></div>
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

django weasyprint

3
推荐指数
1
解决办法
8586
查看次数