【问题标题】:How can I create a header without margin in pdf created with snappy twig (Symfony 4)?如何在使用 snappy twig (Symfony 4) 创建的 pdf 中创建没有边距的标题?
【发布时间】:2019-06-14 23:39:32
【问题描述】:

我在 Symfony 中通过 snappy 从 twig 模板创建了一个 pdf:

所以这是我的控制器,我正在创建 pdf:

 /**
  * @Route("/pdf", name="pdf")
  */

  public function pdf(Request $request, Pdf $snappy)
  {

    $snappy->setOption("encoding","UTF-8");

    $html = $this->renderView("default/pdf.html.twig",array(
      "title" => "pdf"
    ));

    $filename = "mypdf";
    return new Response(
      $snappy->getOutputFromHtml($html),
      200,
      array(
        'Content-Type' => 'application/pdf',
        'Content-Disposition' => 'inline; filename="'.$filename.'.pdf"'
      )
    );

  }

这里是 html 模板,我在其中创建标题 pdf.html.twig:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {box-sizing: border-box;}

body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
}

.header {
  overflow: hidden;
  background-color: #000;
  padding: 20px 10px;
}



.header-right {
  float: right;
}


}
</style>
</head>
<body>

<div class="header">
  <a href="#default" class="logo">Logo</a>

</div>

<div style="padding-left:20px">
  <h1>headline</h1>
  <p>Some text</p>
  <p>Some content..</p>
</div>

</body>
</html>

我尝试让黑色页眉适合无边框的页面。但是仍然有一个白色的边框。它不会走到边缘。

【问题讨论】:

  • 你能更准确地描述你看到的效果吗?您是在浏览器中查看 PDF 文档还是 html?白色边框与&lt;div class="header"&gt;...&lt;div style="padding-left:20px"&gt;... 相关吗?
  • @geoB 我正在查看我在浏览器中打开的 pdf 文档。不知道为什么会有白边。我只想要一切都是黑色的

标签: php css symfony pdf snappy


【解决方案1】:

改变这一行

 $snappy->setOption("encoding","UTF-8");

进入

$snappy->setOption("encoding","UTF-8");
$snappy->setOption('margin-left', '0mm');
$snappy->setOption('margin-right', '0mm');
$snappy->setOption('margin-top', '0mm');

【讨论】:

  • 很高兴您找到了可行的替代方案。我会把我的放在一个环境变量中,这样就可以同时使用 Windows 和 Linux 环境。
【解决方案2】:

问题在于 wkhtmltopdf 默认为非零左右边距。如果您将可执行文件修改为wkhtmltopdf -R 0 -L 0 ...,黑色将延伸到页面的宽度。见this

顺便说一句,您可能想删除&lt;/style&gt; 正上方那一行的额外大括号}

【讨论】:

  • 我尝试将wkhtmltopdf -R 0 -L 0 行写入终端并收到消息You need to specify at least one input file, and exactly one output file Use - for stdin or stdout
猜你喜欢
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2021-09-27
相关资源
最近更新 更多