使用噩梦将html转换为pdf和django

nightmare_pdf的Python项目详细描述


nightmare-pdf v0.1.10 on PyPiMIT licenseStable

django噩梦pdf

使用“噩梦”用django将html转换为pdf

要求

  • python(2.7)(需要测试3.x)
  • Django(1.10、1.9)(需要对以前的版本进行测试)

依赖性

这个django应用程序依赖于 Nightmare你需要 首先使用npm

安装

npm install nightmare

安装

使用pip

安装

pip install nightmare_pdf

nightmare_pdf添加到已安装的应用程序设置中。

INSTALLED_APPS = (
    ...
    'nightmare_pdf',
)

创建一个目录来保存由噩梦创建的pdf文件,默认为 pdf_temp

mkdir pdf_temp

示例

从url生成pdf并将其保存到数据库,或将其检索为 contentfile,或将其返回到httpresponse中:

from nightmare_pdf.generators import PDFGenerator

pdf = PDFGenerator(url="https://github.com/charlesthk/django-nightmare-pdf",

# Save it to database and retrieve a PdfDoc Object (database):
pdf.save(
        filename='nightmare_pdf',
        title="nightmare_pdf on github",
        description="Convert HTML to pdf with django using nightmare")

# Get the PDf as a Django ContentFile named 'my_pdf_file.pdf' :
pdf_content_file = pdf.get_content_file('my_pdf_file')

# Return a Django HttpResponse with the PDF Attached named 'my_pdf_file.pdf':
return pdf.get_http_response('my_pdf_file')

PDFGenerator选项

PDFGenerator类接受以下参数:

  • url[必需]
  • timeout[可选]默认值为1000,定义 打开并通过“噩梦”呈现URL
  • 页面大小[可选]默认为“A4”,接受选项为A3、A4, A5,法律、信件或小报
  • 横向[可选]默认为0,定义是否在 横向模式
  • 打印背景[可选]默认为1,定义是否打印 背景
  • margins_type[可选]默认为1,定义要使用的边距。 默认边距使用0,无边距使用1,最小边距使用2。
  • 脚本[可选]默认为默认渲染脚本,定义 要使用的渲染脚本。
  • temp_dir[可选]默认为default_temp_dir,定义 要使用的临时目录。

用于保存pdf的模型

使用save(filename, title='',description='')方法时 PDFGenerator,使用以下模型:

class PdfDoc(models.Model):
    """
    Store each generated pdf
    """
    title = models.CharField(verbose_name=_("Title"), max_length=255, blank=True)
    description = models.TextField(verbose_name=_("Description"), blank=True)
    document = models.FileField(verbose_name=_("Document PDF"), upload_to=pdf_settings.UPLOAD_TO)
    created_at = models.DateTimeField(auto_now=False, auto_now_add=True, verbose_name=_('Creation'))
    updated_at = models.DateTimeField(auto_now=True, auto_now_add=False, verbose_name=_('Update'))

设置

将设置添加到主django设置文件中。设置如下 默认设置为:

NIGHTMARE_PDF = {
    'UPLOAD_TO': 'pdfs',
    'NODE_PATH': 'node',
    'DEFAULT_RENDER_SCRIPT': os.path.join(NIGHTMARE_PDF_DIR, 'render_pdf.js'),
    'DEFAULT_TEMP_DIR': os.path.join(settings.BASE_DIR, 'pdf_temp')
}

UPLOAD_TO

定义保存PDF时要使用的目录或函数, 默认为pdfs

NODE_PATH

定义节点二进制文件的路径,默认为node

DEFAULT_RENDER_SCRIPT

定义默认使用哪个渲染脚本,默认为 render_pdf.js在包内。

DEFAULT_TEMP_DIR

定义目录,用于由Nearmatry临时生成的PDF。 默认为pdf_temp

支持

如果您有问题,请让我们知道或提交拉取请求。

许可证

这个项目是根据麻省理工学院的许可证授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java谷歌地图将地址转换为坐标   java舍入错误给了我无效的答案   JavaSpring3。0 mvc问题(请求的资源不可用)   java在关闭GraphStream时不关闭Swing主应用程序   java使用特定的orderby从包含多个子节点的FireBase数据库检索数据   java是否可以不安全地访问JVM未使用的对象?   java读取单词的第一个字母并选择其字母表编号   java在同一个包中导入类   安卓 java。lang.IndexOutOfBoundsException:索引0无效,大小为0   java JTextPane仅以单行显示插入的组件   java系统应用程序如何在CyanogenMod 11中以编程方式读取整个logcat?   java如何访问保存在中的变量。MatlabBuilder JA构建的jar文件中的mat文件?   Java不必要的图像覆盖   数组javajsonarray。包含(字符串)没有这样的函数?   javacamel:如何在文件组件中使用相同的头   java smack setKeystorePath不工作?   JavaJackcessDatabaseBuilder。开放式失败   对Jetty Jersey应用程序的java请求在1分钟后终止   在客户端断开连接后,java进程是否仍在继续   安全Java签名代码小程序混合代码警告即使在TrustedLibrary之后:true