【问题标题】:pdfkit - is there a way to change the HTML before converting it to pdf?pdfkit - 有没有办法在将 HTML 转换为 pdf 之前更改它?
【发布时间】:2017-08-04 15:17:59
【问题描述】:

我正在使用模块 python pdfkit:https://pypi.python.org/pypi/pdfkit

我要转换为 pdf 的页面有一个模式窗口,其中涵盖了我需要保存在 pdf 中的内容,我正在通过 python 请求访问。我需要做的是关闭模态,然后调用 pdfkit.from-url 方法:pdfkit.from_url('http://the_page.com', 'out.pdf', options={'cookie': s.cookies.items()})

但我不知道是否可以使用请求删除模式。而且我不想使用硒!

有什么办法吗?

【问题讨论】:

  • 只是一个一般建议,你能不能通过 URLLib(或类似的东西)单独获取 HTML,编辑掉模态,然后使用pdfkit.from_string(HtmlString, 'out.pdf')?或者,由于 PDFKit 似乎依赖 WebKit 在保存之前创建模型渲染,您可能只能使用.replace(...) 或类似的东西在模态元素上插入style='display:none;'。不过,作为参考,我没有使用 PDFKit 的经验,所以这些只是在黑暗中拍摄。
  • 它可以工作,但不是我想要的方式,它会丢失页面的 css 和图像,并仅使用非外部 css 生成 pdf。发生这种情况是因为 from_string 仅使用页面的文本而不是其资源,因为 from_url 获取所有内容!
  • 我在随机浏览堆栈溢出时遇到了一个问题,让我想起了你的问题。您可以为此使用PhantomJS。我不确定如果没有 Selenium 是否可以做到这一点,但它可能值得探索。
  • 有很多方法可以做到这一点......将外部css插入到htmlstring中;使用 beautifulsoup 移除模态窗口;插入使窗口不可见的 css

标签: python python-requests pdfkit


【解决方案1】:

pdfkit 可以从 html 文件中读取。因此,您可以将 html 保存在本地,进行任何编辑,然后写入 pdf 文件。

pdfkit.from_file(['file1.html', 'file2.html'], 'out.pdf')

with open('file.html') as f:
    pdfkit.from_file(f, 'out.pdf')

【讨论】:

    猜你喜欢
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多