跳转到主要内容

使用nightmarejs将HTML转换为pdf的django实现

项目描述

nightmare-pdf v0.1.10 on PyPi MIT license Stable

django-nightmare-pdf

使用nightmare将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设置中。

INSTALLED_APPS = (
    ...
    'nightmare_pdf',
)

创建一个目录以保存Nightmare创建的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,定义了nightmare打开和渲染url之间的超时时间

  • page_size [可选] 默认为 'A4',接受选项为 A3, A4, A5, Legal, Letter 或 Tabloid

  • landscape [可选] 默认为 0,定义是否以横幅模式渲染 PDF

  • print_background [可选] 默认为 1,定义是否打印背景

  • margins_type [可选] 默认为 1,定义使用哪种边距。使用 0 为默认边距,1 为无边距,2 为最小边距。

  • script [可选] 默认为 DEFAULT_RENDER_SCRIPT,定义使用哪个渲染脚本。

  • temp_dir [可选] 默认为 DEFAULT_TEMP_DIR,定义使用哪个临时目录。

用于保存 PDF 的模型

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

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 二进制的路径,默认为 node

DEFAULT_RENDER_SCRIPT

定义默认使用的 render_script,默认为包内的 render_pdf.js

DEFAULT_TEMP_DIR

定义 Nightmare 生成临时 PDF 使用的目录,默认为 pdf_temp

支持

如果您遇到问题,请告诉我们或提交一个 pull request。

许可证

该项目受 MIT 许可证许可。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

此版本没有可用的源分布文件。请参阅有关 生成分布存档 的教程。

构建分布

nightmare_pdf-0.1.0-py2.py3-none-any.whl (11.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面