首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wkhtmltopdf --我如何使用相对路径?

Wkhtmltopdf --我如何使用相对路径?
EN

Stack Overflow用户
提问于 2017-09-19 19:03:45
回答 1查看 2.3K关注 0票数 2

我想把Django模板转换成pdf文件。模板中的图像:

代码语言:javascript
运行
复制
<img src="{% static "img/person.png" }%" />

被更改为

代码语言:javascript
运行
复制
<img src="/static/img/person.png" />

而且它在浏览器中运行得很好。

但是,当我尝试用Wkhtmltopdf模块将这个html文件转换为pdf文件时,会出现一个错误:

代码语言:javascript
运行
复制
$ wkhtmltopdf --javascript-delay 5000 report.html  report.pdf
Warning: Failed to load file:///static/img/person.png (ignore) 

Wkhtmltopdf模块似乎只需要绝对路径。

如果我将src设置为绝对路径,如下所示:

代码语言:javascript
运行
复制
<img src="/home/bingbong/django/project/apps/static/img/person.png" />

虽然效果很好,但我知道这不是个好办法。

Wkhtmltopdf是否有使用静态根路径的方法?

如何成功地转换它?

编辑

我正试着跟踪这个用django创建PDF (wkhtmltopdf)

但是,有一个很严重的问题

代码语言:javascript
运行
复制
Error: Failed loading page http://false (sometimes it will work just to ignore this error with --load-error-handling ignore)
Exit with code 1 due to network error: HostNotFoundError

subprocess.CalledProcessError: Command '['/usr/bin/wkhtmltopdf', '--encoding', 'utf8', '--javascript-delay', '1000', '--quiet', 'False', '/tmp/wkhtmltopdf3atfj280.html', '-']' returned non-zero exit status 1

我不知道为什么http://false在那里。

这是我的urls.py

代码语言:javascript
运行
复制
app_name = 'apps'
    urlpatterns =[
        url(r'^pdf/$', views.MyPDFView.as_view()),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

这是我的settings.py

代码语言:javascript
运行
复制
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

WKHTMLTOPDF_CMD = '/usr/bin/wkhtmltopdf'

WKTHMLTOPDF_CMD_OPTIONS ={
    'quiet': False,
}

这是MyPDFView类

代码语言:javascript
运行
复制
class MyPDFView(View):
    template='apps/Report.html' # the template

    def get(self, request):

        response = PDFTemplateResponse(
            request=request,
            template=self.template,
            filename="apps/Report.pdf",
            show_content_in_browser=False,
            cmd_options={
                'javascript-delay':1000,
                'quiet':False,
            },
        )
        return response
EN

Stack Overflow用户

发布于 2017-09-19 20:07:37

我建议在Django中使用Wkhtmltopdf,同时使用类似django-wkhtmltopdf的方法,将静态和媒体路径转换为PDF所需的绝对路径。

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

https://stackoverflow.com/questions/46308017

复制
相关文章

相似问题

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