我正在使用网络上的标准示例(http://www.20seven.org/journal/2008/11/pdf-generation-with-pisa-in-django.html)将django视图/模板转换为PDF.
是否有一种"简单"的方式在模板中包含图像(来自服务器上的URL或引用),以便它们显示在PDF上?
我正在尝试使用此代码段从模板生成pdf:
def write_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 http.HttpResponse(result.getvalue(), mimetype='application/pdf')
except Exception('PDF error')
Run Code Online (Sandbox Code Playgroud)
所有非拉丁符号都没有正确显示,模板和视图使用utf-8编码保存.
我已经尝试将视图保存为ANSI,然后保存到用户unicode(html,"UTF-8"),但它会抛出TypeError.
另外我想也许是因为默认字体不支持utf-8所以根据比萨文档我试图在样式部分的模板体中设置字体.
那仍然没有结果.
有没有人有一些想法如何解决这个问题?
我在我的Django应用程序中使用Pisa/xhtml2pdf从HTML源生成pdf.那是:
这个过程还可以,但速度很慢(特别是在处理长表时),我必须根据Pisa功能/限制使用HTML/CSS.
问题是:这是从Web应用程序生成pdf的正确方法(即创建HTML然后将其转换为pdf)还是有更直接的方法,即用更合适的语言"编写"pdf?
我正在使用pisa,这是一个用于Python的HTML到PDF转换库.
对于Word文档是否存在相同的东西:用于Python的HTML到.doc转换库?
我在浏览器中的django中有pisa生成.pdfs,但如果我想自动将文件写入磁盘怎么办?我想要做的是能够在指定的时间点生成.pdf版本文件并将其保存在uploads目录中,因此没有浏览器交互.这可能吗?
我正在使用Pisa将HTML转换为PDF(在Django项目中).处理跨越多个页面的表时,它非常慢:
一个200行的表需要150秒才能转换,而如果我把它分成更小的表需要15秒.
是否有建议由比萨处理的HTML表的提示或最佳实践?
首先,我是python,reportlab,xhtml2pdf的新手.我已经用reportlab完成了我的第一个pdf文件,但是我遇到了以下问题.
我需要两列中的大文本.
首先,我创建我的画布,创建我的故事,将我的大文本作为一个段落添加到故事中,创建我的框架,最后将故事添加到框架中.
c = Canvas("local.pdf")
storyExample = []
textExample = (""" This is a very large text Lorem Ipsum ... """)
storyExample.append(Paragraph(textExample, styleText))
frameExample = Frame(0, 0, 50, 50,showBoundary=0)
frameExample.addFromList(storyExample,c)
c.showPage()
c.save()
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.但我需要在两列represantation中显示文本.
现在文本只是流动我的框架像:
|aaaaaaaaaaaaaaaaaaaa|
|bbbbbbbbbbbbbbbbbbbb|
|cccccccccccccccccccc|
|dddddddddddddddddddd|
Run Code Online (Sandbox Code Playgroud)
但我需要这样:
|aaaaaaaaa bbbbbbbbbb|
|aaaaaaaaa cccccccccc|
|bbbbbbbbb cccccccccc|
|bbbbbbbbb dddddddddd|
Run Code Online (Sandbox Code Playgroud)
我希望你理解我想说的话.
我正在使用Djang +使用xhtml2pdf.pisa使用html + css生成PDF.但是,我遇到了CSS的各种奇怪问题.
以下是我的代码:
from django.template.loader import render_to_string
import cStringIO as StringIO
import xhtml2pdf.pisa as pisa
import cgi, os
def fetch_resources(uri, rel):
path = os.path.join(settings.STATIC_ROOT, uri.replace(settings.STATIC_URL, ""))
return path
def test_pdf(request):
html = render_to_string('pdf/quote_sheet.html', { 'pagesize':'A4', }, context_instance=RequestContext(request))
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), dest=result, link_callback=fetch_resources)
if not pdf.err:
return HttpResponse(result.getvalue(), mimetype='application/pdf')
return HttpResponse('Gremlins ate your pdf! %s' % cgi.escape(html))
Run Code Online (Sandbox Code Playgroud)
我的模板:
<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
{% load static from staticfiles %}
{% load i18n …Run Code Online (Sandbox Code Playgroud) 我的问题是:我正在使用 xhtml2pdf 库从 html 创建 pdf 文件。创建 pdf 文件后,我使用 sendgrid API 通过电子邮件将该文件发送给用户。但是,我无法在 pdf 文件中保留嵌入的图像,因为应用程序返回给我“需要有效的文件名!” 信息。我在几个地方进行了研究,但找不到解决方案。使用的代码如下。
HTML 代码:
<img src="/static/media/logo.jpg" alt="Image">
Run Code Online (Sandbox Code Playgroud)
python代码(将html转换为pdf):
def link_callback(uri, rel):
"""
Convert HTML URIs to absolute system paths so xhtml2pdf can access those
resources
"""
# use short variable names
sUrl = settings.STATIC_URL
mUrl = settings.MEDIA_URL
mRoot = settings.MEDIA_ROOT
# convert URIs to absolute system paths
if uri.startswith(mUrl):
path = os.path.join(mRoot, uri.replace(mUrl, ""))
else:
return uri # handle absolute uri (ie: http://some.tld/foo.png)
# make sure that …Run Code Online (Sandbox Code Playgroud) 我使用Pisa从HTML生成pdf文件:
def fetch_resources(uri, rel):
path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
return path
def write_pdf(template_src, context_dict, filename):
template = get_template(template_src)
context = Context(context_dict)
html = template.render(context)
result = open(filename, 'wb')
pdf = pisa.pisaDocument(StringIO.StringIO(
html.encode("UTF-8")), result, link_callback=fetch_resources)
result.close()
Run Code Online (Sandbox Code Playgroud)
我的HTML有一个外部CSS的链接,并且正确呈现,但比萨不使用CSS(例如字体大小,表格单元格宽度,文本对齐...).
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" href="/site_media/style/style.css" />
</head>
<body>
....
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢