Ответ 1
Изменить. Это исправление, по-видимому, требуется только тогда, когда wkhtmltopdf установлен в системе на базе Windows.
После многих проб и ошибок я заметил, что следующая логика, похоже, работает:
- Элемент body html-head должен быть установлен на высоту в 1,33 раза больше фактической высоты области заголовка. (Почему? Я не знаю. Это может быть связано с каким-то способом QT или wkhtmltopdf рендеринга, но он действительно работает во всех случаях, независимо от строк в содержимом области заголовка).
- Непосредственный (и единственный) дочерний элемент тела устанавливается на 100% высоты и скрывает переполняющий контент
Итак, измененный код (для приведенного выше примера) для html-head выглядит следующим образом:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<style type="text/css">
body
{
border:0;
margin: 0;
padding: 0;
height: 120mm;
/*
In the actual program this height is calculated dynamically in PHP as
($headerMargin - $topMargin) * 1.33
*/
}
#master-div
{
overflow: hidden;
height: 100%;
}
</style>
<script type="text/javascript">
function subst()
{
//process the GET parameters and accordingly set the Header Region text info
}
</script>
</head>
<body onload="subst()">
<div id="master-div">
//The actual content goes here
</div>
</body>
</html>
Я проверил это, по крайней мере, от 7 до 8 разных форматов бумаги (включая настройку ширины страницы и высоты страницы). Также проверяется с различным размером содержимого области заголовка (от 1 строки до 20 строк).
Единственный улов в том, что эта логика в 1,33 раза превышает высоту области заголовка, кажется, работает только в том случае, если маржа заголовка (b)/нижнего предела меньше или равна одной трети высоты бумаги. Если высота поля выходит за пределы того, что содержимое обрезается по мере увеличения высоты поля. Но иметь такие большие высоты заголовка, как правило, не требуется, я думаю.