javascript - Django HTML 和 CSS 呈现为 pdf

标签 javascript html css django bootstrap-4

我正在尝试使用 Django-weasyprint 将 HTML 和 CSS 转换为 pdf 页面但我有点坚持他们的教程,因为我希望 PDF 在用户单击下载按钮时呈现当前页面,并且 pdf 会以只读权限自动下载。整个过程做起来有点痛苦。
目前,weasyprint 只是将 Django 中的 URL 转换为 pdf,但我不知道如何设置按钮以查看 weasyprint View 。
也许我正在查看它并过度复杂化,任何帮助将不胜感激。
Weasyprints 示例代码:

from django.conf import settings
from django.views.generic import DetailView

from django_weasyprint import WeasyTemplateResponseMixin
from django_weasyprint.views import CONTENT_TYPE_PNG


class MyModelView(DetailView):
    # vanilla Django DetailView
    model = MyModel
    template_name = 'mymodel.html'


class MyModelPrintView(WeasyTemplateResponseMixin, MyModelView):
    # output of MyModelView rendered as PDF with hardcoded CSS
    pdf_stylesheets = [
        settings.STATIC_ROOT + 'css/app.css',
    ]
    # show pdf in-line (default: True, show download dialog)
    pdf_attachment = False
    # suggested filename (is required for attachment!)
    pdf_filename = 'foo.pdf'


class MyModelImageView(WeasyTemplateResponseMixin, MyModelView):
    # generate a PNG image instead
    content_type = CONTENT_TYPE_PNG

    # dynamically generate filename
    def get_pdf_filename(self):
        return 'bar-{at}.pdf'.format(
            at=timezone.now().strftime('%Y%m%d-%H%M'),
        )

我在我的电脑上制作了一个虚拟环境,它的设置与示例完全一样。目前使用 Boostrap 4。
*编辑,如果有更好的方法,欢迎分享:)
另外我想只定位正文标签,以便它只将该部分转换为 pdf 而不是整个页面。
我之前使用的解决方案是:https://codepen.io/AshikNesin/pen/KzgeYX但这效果不佳。
*编辑2.0
我已经转移到 js 并且我坚持使用这个脚本,它不想在单击函数上创建 pdf 表单,还有没有办法将 js 函数设置为仅下载 div 中选定的 Id 而不是在一定程度上? (怕它会用分辨率而不是实际需要渲染的内容)
https://jsfiddle.net/u4ko9pzs/18/
任何建议将不胜感激。

最佳答案

你不需要使用那个 django 应用程序。您可以按照博客文章 https://www.bedjango.com/blog/how-generate-pdf-django-weasyprint/ 中的示例编写自定义 View 来处理打印。

我发现应用程序限制并写了我自己的观点。这并不难。

关于javascript - Django HTML 和 CSS 呈现为 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418435/

相关文章:

jquery - bxSlider & Bootstrap 3 - 百分比 slideWidth

javascript - 使用 jQuery 更改展示图像源仅适用于 Chrome

javascript - 操纵 H1 标签

javascript - mousedown 事件未在平板电脑/手机、HTML5 Canvas 上触发

javascript - 从html表格中提取特定信息?

javascript - 缩放 div 以适合窗口但保持纵横比

javascript - 表单 Action onclick 无需使用 Ajax 刷新

javascript - 避免在 ParcelJS 上的 HTML 文件中重命名 JS 变量

javascript - 请求在竞争条件下定期返回空

html - 100vh 在手机上不够高