Немного странная проблема. Я генерирую некоторые HTML-отчеты, а затем, из-за ограничений Outlook 2010 для понимания CSS/HTML/изображений, я отправляю весь проклятый отчет как изображение.
Генерация работает нормально. Предварительный просмотр сгенерированного HTML-кода в браузере выглядит прекрасным с различными разрешениями. Однако WKHTMLTOPDF (вернее, wkhtmltoimage) дает мне некоторое нечетное поведение с этим флагом --width.
У меня есть следующий код PHP:
# Converts a .html file to a .jpg file - requires wkhtmltopdf installed:
# http://wkhtmltopdf.org/downloads.html
function html_to_jpg($fileIn, $fileOut) {
echo "\nRendering HTML to image\n";
$command = 'wkhtmltoimage --width 1130 ' . $fileIn . ' ' . $fileOut;
$remove = 'rm -f ' . filter_var($fileOut, FILTER_SANITIZE_STRING);
try {
exec($remove);
exec($command);
return true;
} catch (Exception $e) {
return false;
}
}
Это работает. Он генерирует изображение ширины "1130", как указано. Тем не менее, отчет выглядит немного хитроумным по этой ширине, поэтому я увеличиваю число --width...
$command = 'wkhtmltoimage --width 1140 ' . $fileIn . ' ' . $fileOut;
Теперь это все еще создает изображение, однако изображение теперь имеет ширину 36480 пикселей, с центром в центре и стек черного пространства справа.
Благодаря экспериментам я подтвердил, что ширина <1140 не порождает эту проблему, но каждая ширина выше. Я подтвердил это на Ubuntu 15.10 Wily и CentOS 6.7, оба установлены с разных RPM.
Кто-нибудь еще испытал это? Я делаю что-то глупое (кроме использования exec)?
Я испытал такое же поведение, и я исправил его, изменив ширину элемента html в соответствии с шириной, которую я передаю в команде, и она отлично работает
так что в основном в вашем файле fileIn добавьте это в тег стиля
html, body {
width:1140px !important;
}
конечно, вы можете опустить! важно, если ничто иное не влияет на ширину этих элементов в вашем файле.