我正在关注 xhtml2pdf 指南。
我使用了示例 html 文件之一并保存为 test.html:
<html>
<head>
<style>
@page {
size: a4 portrait;
@frame header_frame { # Static Frame
-pdf-frame-content: header_content;
left: 50pt; width: 512pt; top: 50pt; height: 40pt;
}
@frame content_frame { # Content Frame
left: 50pt; width: 512pt; top: 90pt; height: 632pt;
}
@frame footer_frame { # Another static Frame
-pdf-frame-content: footer_content;
left: 50pt; width: 512pt; top: 772pt; height: 20pt;
}
}
</style>
</head>
<body>
<!-- Content for Static Frame 'header_frame' -->
<div id="header_content">Lyrics-R-Us</div>
<!-- …Run Code Online (Sandbox Code Playgroud) 我正在使用xhtml2pdf在我的 Django 视图中生成 PDF。这个想法是遍历查询中存在的所有实例,然后为每个实例创建一个 PDF,然后将所有生成的 PDF 添加到一个 zip 文件中以供下载。该xtml2pdf逻辑是工作不错,但在循环逻辑是什么让我头疼。
所以这是我到目前为止的功能:
def bulk_cover_letter(request, ward_id, school_cat_id, cheque_number):
school_type = SchoolType.objects.get(id=school_cat_id)
schools_in_school_type = Applicant.objects.filter(
school_type=school_type, ward_id=ward_id, award_status='awarded'
).order_by().values_list('school_name', flat=True).distinct()
for school in schools_in_school_type:
beneficiaries = Applicant.objects.filter(school_type=school_type, ward_id=ward_id, award_status='awarded', school_name=school)
total_amount_to_beneficiaries = Applicant.objects.filter(school_type=school_type, ward_id=ward_id, award_status='awarded', school_name=school).aggregate(total=Sum('school_type__amount_allocated'))
context = {
'school_name' : school,
'beneficiaries' : beneficiaries,
'total_amount_to_beneficiaries' : total_amount_to_beneficiaries,
'title' : school + ' Disbursement Details',
'cheque_number': cheque_number
}
response = HttpResponse('<title>Cover Letter</title>', content_type='application/pdf')
filename = "%s.pdf" %(cheque_number)
content = "inline; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用wkhtmltopdf从HTML代码创建PDF。我使用过xhtml2pdf和pisa,但是我在使用CSS样式时遇到了问题。好吧,wkhtmltopdf是我的最后选择。
我已经按照这个步骤了。 https://github.com/incuna/django-wkhtmltopdf
sudo aptitude install libfontconfig
pip install django-wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)
如果我在INSTALLED_APPS中添加“ wkhtmltopdf”,它将识别出wkhtmltopdf路径。
INSTALLED_APPS = ["wkhtmltopdf"]
Run Code Online (Sandbox Code Playgroud)
好吧,当我尝试生成PDF时会生成错误。
这是我的代码:
from wkhtmltopdf.views import PDFTemplateResponse
context = {
'linkedin1':self.linkedin1,
'twitter1':self.twitter1,
'facebook1':self.facebook1,
'current': get_current_base_url,
}
html_path = "app/folder/page1_1.html"
response = PDFTemplateResponse(request=request,
template=html_path,
filename="hello.pdf",
context= context,
show_content_in_browser=False,
cmd_options=settings.WKHTMLTOPDF_CMD_OPTIONS,
)
Run Code Online (Sandbox Code Playgroud)
在设置中:
WKHTMLTOPDF_CMD_OPTIONS = {
'quiet': True,
}
Run Code Online (Sandbox Code Playgroud)
我的错误:
File "/home/user/.virtualenvs/app/local/lib/python2.7/site- packages/django/core/handlers/base.py", line 136, in get_response
response = response.render()
File "/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/django/template/response.py", line 104, in render
self._set_content(self.rendered_content)
File "/home/user/.virtualenvs/app/local/lib/python2.7/site- packages/wkhtmltopdf/views.py", line 144, in rendered_content
footer_filename=footer_filename)
File "/home/user/.virtualenvs/app/local/lib/python2.7/site-packages/wkhtmltopdf/views.py", line 103, …Run Code Online (Sandbox Code Playgroud) 我更新了xhtml2pdf 0.0.6,PyPDF2 1.21和reportlab 3.1.8.
当我使用xhtml2pdf 0.0.5和reportlab 2.7时,我的pdf很好.现在我的所有画面都有了边框.我确实删除了"-pdf-frame-border"并试图将"-pdf-frame-border:0"或"-pdf-frame-border:none"放入,但它仍然显示帧扩展.任何人都可以点灯吗?谢谢.
我正在使用比萨制作包含遵循通用格式的页面的PDF文件。我显然做错了,因为当我生成PDF时(无论是从命令行还是从python API生成),我都只会看到最后一页的重复。
在下面的代码上运行Pisa,我得到三个页面,每个页面都显示“ C Tuesday”,而我希望看到三个不同的页面,分别是“ A Monday”,“ B Tuesday”和“ C Tuesday”。
我当前的比萨版本是 XHTML2PDF/pisa 3.0.33 (Build 2010-06-16)
<html>
<style>
/* 297 x 210 */
@page {
size: a4 landscape;
margin: 1cm;
margin-bottom: 2.5cm;
@frame header {
-pdf-frame-content: headerContent;
background-color:black;
color:white;
top : 0cm;
margin-left: 0cm;
margin-right: 14.5cm;
height: 2.5cm;
width: 14.9cm;
}
@frame lhs {
-pdf-frame-content: lhs;
background-color:white;
color:black;
top : 4.5cm;
margin-left: 0cm;
margin-right: 14.5cm;
height: 13.5cm;
width: 14.9cm;
}
@frame footer {
-pdf-frame-content: footerContent;
color:black;
bottom: 1cm; …Run Code Online (Sandbox Code Playgroud) 希望有人可以解决这个问题。在 Google 上还没看到有人用过它。
我在 Python 中使用 xhtml2pdf,尝试生成一个带有页眉、页脚的简单文档,我的内容是带有标题的文本块。我希望在每个内容周围都有边框,但我却在每个子元素周围都有边框。
这是我的 HTML
@page {
size: letter;
border: 0;
@frame header_frame {
-pdf-frame-content: header;
border: 0pt solid white;
left: .75in;
width: 7in;
top: .5in;
height: 1.5in;
}
@frame content_frame {
border: 0pt solid white;
left: .75in;
width: 7in;
top: 1.5in;
height: 7.5in;
}
@frame footer_frame {
-pdf-frame-content: footer;
border: 0pt solid white;
left: .75in;
width: 7in;
top: 9.5in;
height: 1in;
}
}
h1 {
padding-top: 5pt;
}
.desc {
margin-top: 3px;
margin-bottom: 3px;
padding: …Run Code Online (Sandbox Code Playgroud)我正在我的 Django 网站上开发发票 PDF 生成器。我用xhtml2pdf. 它似乎有效,但编码不正确。当我使用变音符号时有错误的符号/字符。
这是一个视图:
def render_to_pdf(template_src, context_dict):
template = get_template("pdf/pdf.html")
context = context_dict
html = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode('utf-8'), result)
if not pdf.err:
return HttpResponse(result.getvalue(), content_type='application/pdf; encoding="utf-8"')
return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))
Run Code Online (Sandbox Code Playgroud)
这是 html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>
<p>? š ž Ž x y ? ? ó</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
你知道如何让它正常工作吗?
我尝试了 3 个将 HTML 转换为 PDF 的库,即 xhtml2pdf、weasyprint 和 wkhtmltopdf。
我的 HTML 中包含图表,它们是离线图表,即。从plotly.offline.plots生成的图表
当我在浏览器中加载相同的 HTML 时,图表和其他 HTML 内容呈现良好,但当使用上述任何一个库将其转换为 PDF 时,HTML 内容呈现良好,但图表在 PDF 内变为空白。
from plotly.graph_objs import Scatter
from plotly.offline import plot
fig = plot([Scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])], output_type='div')
Run Code Online (Sandbox Code Playgroud)
我将这个无花果传递到 Django 模板并将其渲染为
{{ fig|safe }}
Run Code Online (Sandbox Code Playgroud)
使用 xhtml2pdf、weasyprint 和 wkhtmltopdf 将 HTML 转换为 PDF,但它们都没有显示图表。
我的代码中缺少什么?谁能告诉我任何 HTML 到 PDF 转换库都会在 PDF 中呈现 Plotly 图表吗?
截至目前,我们正在使用XHTML2PDF动态生成PDF并在需要时输出到浏览器.现在我们的要求已更改为仅生成一次PDF并将其存储在服务器中.应该向用户显示该链接以查看PDF.你能指出任何资源或片段来达到这个目的吗?
这是代码:
def render_to_pdf(template_src, context_dict):
template = get_template(template_src)
context = Context(context_dict)
html = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result)
if not pdf.err:
return HttpResponse(result.getvalue(), mimetype='application/pdf')
return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))
Run Code Online (Sandbox Code Playgroud)
我使用django 1.7,错误是
init()得到了一个意外的关键字参数'mimetype'
请求方法:GET请求URL:http://127.0.0.1 :8000/admin/amministrazione/ddts/ stampa// Django版本:1.7.7异常类型:TypeError异常值:
init()得到了一个意外的关键字参数'mimetype'
例外位置:/home/stefano/.virtualenvs/company2/local/lib/python2.7/site-packages/django/http/response.py in init,第318行Python可执行文件:/home/stefano/.virtualenvs/company2/ bin/python Python版本:2.7.6
xhtml2pdf ×10
python ×6
django ×5
pisa ×3
css ×2
pdf ×2
wkhtmltopdf ×2
diacritics ×1
encoding ×1
html ×1
httpresponse ×1
plotly ×1
python-2.7 ×1
python-3.x ×1
weasyprint ×1
zipfile ×1