从Django模板

时间:2018-01-09 18:42:30

标签: django textarea pdfkit

我使用pdfkit生成Django模板的PDF(通过从Django的get_templaterender函数获取页面的HTML字符串并传递string to pdfkit ...参见post)。

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

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

考虑到这一点,我试着看看pdfkit是否对此类问题有任何建议而且找不到任何问题,我也尝试使用TextAreas以外的其他输入类型,其中没有一个能够正确显示换行符

此时我无法想到任何其他可能的解决方案,我愿意接受建议。如果您觉得我应该提供更多信息,请告诉我,并提前感谢您。

1 个答案:

答案 0 :(得分:0)

我最终找到了一个相对简单的修复方法。因为我使用的是django表单,所以我很容易从显示Textarea表单中改变:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
ind = ['16-12', '17-01', '17-02', '17-03', '17-04',
       '17-05','17-06', '17-07', '17-08', '17-09', '17-10', '17-11']
data = [1,3,5,2,3,6,4,7,8,5,3,8]
df = pd.DataFrame(data,index=ind)

ax2 = plt.axes()
ax2.xaxis.set_major_locator(ticker.MultipleLocator(1))

df.plot(kind='line', ax=ax2)

只显示纯文本:

{{ form.paragraph_data }}

但是,这最初导致新行无法正确显示,因为HTML不会以纯字符串处理它们。所以我在创建表单时添加了一些处理来用{{ form.paragraph_data.initial }} s替换换行符:

<br />

最后,我必须将form.fields['paragraph_data'].initial = form.fields['paragraph_data'].initial.replace('\n', '<br />') 过滤器添加到Django模板行,告诉它实际呈现HTML而不是清理它:

safe

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