【问题标题】:Auto-Expanding TextAreas on PDF Generated from Django Template在从 Django 模板生成的 PDF 上自动扩展 TextAreas
【发布时间】:2018-06-18 20:58:30
【问题描述】:

我正在使用 pdfkit 生成 Django 模板的 PDF(通过从 Django 的 get_templaterender 函数获取页面的 HTML 字符串并将该字符串传递给 pdfkit 来执行此操作...参见 post )。

在这个页面上,我有一些可以包含多行文本的 TextArea,默认情况下,它们会在生成 PDF 时被截断。

我尝试通过使用一些 javascript 库(我尝试了几个)在页面加载时自动扩展 TextAreas 来解决此问题。我可以让这些在普通页面上完美运行,但是当我尝试将它包含在 PDF 模板中时,我会遇到各种错误,从根本不工作到过度扩展 TextArea。我的第一个假设是存在一些导致问题的样式差异,但我相当肯定我已经排除了这种可能性。我尝试将 PDF 模板直接加载为视图,并且 TextArea 的大小已正确调整,这让我相信 pdfkits 生成的某些内容无法很好地调整大小。

鉴于此,我尝试查看 pdfkit 是否对此类问题有任何建议但找不到任何建议,并且我还尝试使用除 TextAreas 以外的其他输入类型,但均无法正确显示换行符。

目前我想不出任何其他潜在的解决方案,我愿意接受建议。如果您认为我应该提供更多信息,请告诉我,并提前感谢您。

【问题讨论】:

    标签: django textarea pdfkit


    【解决方案1】:

    我最终找到了一个相对简单的解决方法。因为我使用的是 django 表单,所以我可以很容易地从显示表单 Textarea 进行更改:

    {{ form.paragraph_data }}
    

    只显示纯文本:

    {{ form.paragraph_data.initial }}
    

    但是,这最初会导致换行符无法正确显示,因为 HTML 不会以纯字符串形式处理它们。所以我在创建表单时添加了一些处理,用<br />s 替换换行符:

    form.fields['paragraph_data'].initial = form.fields['paragraph_data'].initial.replace('\n', '<br />')
    

    最后,我必须在 Django 模板行中添加 safe 过滤器,告诉它实际呈现 HTML 而不是清理它:

    {{ form.paragraph_data.initial|safe }}
    

    同样,由于 Django 表单,这部分容易,但它应该相对容易地转换为更标准的 javascript/html 解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2019-07-28
      • 2010-11-27
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多