【问题标题】:pdfkit changes href from relative to absolute paths on conversionpdfkit 在转换时将 href 从相对路径更改为绝对路径
【发布时间】:2018-07-25 09:25:50
【问题描述】:

我正在使用 pdfkit 来转换包含带有 href 属性的链接的 html 文件。

在 html 内部,href 是用相对路径编写的,例如:

<a href="folder/picture.jpg">PIC</a>

当我将其转换为 pdf 时,href 似乎会自动重写为绝对路径 (C:/Users/...)。

为什么pdf会改变href?

【问题讨论】:

    标签: python wkhtmltopdf pdfkit


    【解决方案1】:

    pdfkit依赖的wkhtmltopdf默认将相对链接转换为绝对链接。

    这可以通过使用带有特殊标志的命令行工具来停止:

    wkhtmltopdf --keep-relative-links src destination
    

    或者通过告诉 pdfkit 应用这个选项:

    def convert_to_pdf(path):
        try:
            # run the conversion and write the result to a file
            config = pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
            options = {
                '--keep-relative-links': ''
            }
            pdfkit.from_url(path+'.htm', path+'.pdf', configuration=config, options=options)
        except Exception as why:
            # report the error
            sys.stderr.write('Pdf Conversion Error: {}\n'.format(why))
            raise
    

    【讨论】:

      【解决方案2】:

      通常,当您从 HTML 文件创建 PDF 时,PDF 文件将在另一个位置打开(例如,在通过邮件发送后在另一台计算机上打开)。因此,为了正确引用完整路径。

      当然,这仅在另一台计算机可以访问该路径时才有效(因此,如果该路径可以从另一台计算机访问)。使用 C 上的路径:这仅适用于本地主机,而不适用于其他 PC。

      【讨论】:

      • 我打算在与 pdf 文件相同的文件夹中创建一个包含所有附件的文件夹。所以,理论上,应该有足够的信息来打开文件。在任何情况下,html 文件都有效。
      • 感谢您的尝试,但我认为存在误解。我刚刚发布了我正在寻找的答案,以防您有兴趣。
      • 也许你应该问一个你想回答的问题。您问“为什么 pdf 会更改 href?”我回答了!
      • 您的回答表明“需要完整路径”,暗示我的问题的前提是不正确的,即路径可以是相对的。您可能误读了这个问题,并认为我在谈论我正在转换的 pdf 的路径,而不是 pdf 内部的链接,这显然是相对的。
      猜你喜欢
      • 2019-08-20
      • 2017-08-01
      • 2011-11-07
      • 2011-05-02
      相关资源
      最近更新 更多