为什么 PDFKit 不能很好地处理边距?

Rom*_*ePC 2 python pdf django pdfkit

虽然我只是不需要通常问一些事情(互联网只是一个金矿,尤其是这个网站),但这让我失望,因为我已经花了两天时间试图让它工作,但我没有找到任何东西有用。如果找到类似帖子的链接,将不胜感激,因为我没有找到。让我们开始吧。


我使用 PDFKit 与 Python 2.7 和 Django 1.9 来生成一些 HTML 到 PDF。工作轻松。HTML 看起来就像这样:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <style type="text/css">
    * {
      /* Box-model */
      margin: 0;
      padding: 0;
    }

    .wrapper {
      /* Box-model */
      width: 229mm;
      height: 161mm;
    }
  </style>
</head>
<body>
  {% for someone in people %}
  <div class="wrapper">
    <p><strong>{{ someone.complete_name }}</strong></p>
    <p>{{ someone.bio }}</p>
  </div>
  {% endfor %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的 PDFKit 选项如下所示:

{
    "page-width": "229mm",
    "page-height": "162mm",
    "paper-size": "CE5",
    "encoding": "utf-8"
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我只是不添加任何边距或填充。我生成了 PDF,看起来很棒(毫不奇怪,一切都在它所属的地方)。但是,如果我在 HTML 和/或选项中添加任何边距/填充,则在生成 PDF 时我只会得到持续重复的增量边距(举个例子,在 50 页中,第一个没有边距,第 50 个没有边距)大约有两个手指左右的余量)。我尝试了边距、内边距和高度的不同组合,但什么也没有:当我只添加边距或内边距时,PDF 会变得疯狂。

(注意:是的,页面高度比 HTML 中的高度大 1 毫米,但这是需要的,以便包装器适合 PDF 页面)。

以前有人遇到过这个问题吗?提前致谢。

Bac*_*ech 7

您还可以删除 PDF 默认边距

import pdfkit 

# Remove PDF margin 
options = {
    'page-size': 'Letter',
    'margin-top': '0.0in',
    'margin-right': '0.0in',
    'margin-bottom': '0.0in',
    'margin-left': '0.0in'
}

pdfkit.from_url('http://example.com/', 'output.pdf', options = options)
Run Code Online (Sandbox Code Playgroud)