Я создаю PDF-файл в Symfony с помощью snappy из шаблона ветки:
Итак, это мой контроллер, где я создаю 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>
Я стараюсь, чтобы черный заголовок вписывался в страницу без рамки. Но есть еще белая окантовка. До края не доходит.
@geoB Я смотрю на документ в формате PDF, который я открываю в своем браузере. Я не знаю, почему там белая рамка. Я хочу только все черное
Проблема в том, что wkhtmltopdf по умолчанию имеет ненулевые левые и правые поля. Если вы измените свой исполняемый файл на wkhtmltopdf -R 0 -L 0 ...
, черный цвет будет распространяться на ширину страницы. См. это.
Кстати, вы можете убрать лишнюю фигурную скобку }
в строке непосредственно над </style>
Пробовал писать в строке wkhtmltopdf -R 0 -L 0
в терминал и получаю сообщение You need to specify at least one input file, and exactly one output file Use - for stdin or stdout
Изменить эту строку
$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.
Можете ли вы быть более точным в отношении эффектов, которые вы видите? Вы просматриваете документ PDF или html в браузере? Белая рамка связана с
<div class = "header">...
или с<div style = "padding-left:20px">...
?