html распечатать очень широкую страницу на нескольких листах формата А4 - PullRequest
9 голосов
/ 13 октября 2009

У меня есть страница с широким (скажем, около 3000 пикселей) горизонтальным графиком, который обычно прокручивается.

В печатной версии я визуализирую весь график (на самом деле у меня есть отдельный код JAvascript / HTML для печатной версии), поэтому требуется, скажем, три ширины A4 (альбомная) на экране.

В этой ситуации я вижу, что браузер (в данном случае FF3) не позволяет мне печатать широкую страницу на нескольких листах бумаги (в зависимости от предварительного просмотра).

Кажется, что единственный способ напечатать весь документ - это установить для пользователя уровень масштабирования 30%, а затем весь график уместится на одном A4.

Я, должно быть, пропустил какую-то директиву CSS, но не смог нигде ее найти.

Будет ценить указатели / идеи.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 12 августа 2011

Вы можете добавить преобразование вращения в таблицу стилей печати. Частичное решение в виде длинной таблицы теперь будет слишком широким ...

.rotated-when-printed {
    -moz-transform:rotate(90deg);
    -webkit-transform:rotate(90deg);
    -o-transform:rotate(90deg);
    filter:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand',M11=6.123233995736766e-17,M12=-1,M21=1,M22=6.123233995736766e-17)
}

<!-- some very wide table -->
<table class="rotated-when-printed">
    ...
</table>
1 голос
/ 15 февраля 2015

(предыдущий мой ответ на этот вопрос был удален, не знаю почему: я пытаюсь снова)

Долгое время я искал решение на основе CSS для этой проблемы, и я думаю, что невозможно иметь вертикальные разрывы страниц таблиц HTML через CSS (по крайней мере, не разрывы страниц в табличных данных в теге HTML TABLE, но это должно возможно с табличными данными, организованными в DIVs).

Я думаю, что единственное решение состоит в том, чтобы позволить javascript выполнить разбиение. Когда страница загружена, javascript может проверить, шире ли таблица, чем желаемая ширина страницы: в этом случае можно динамически создать новую таблицу и дублировать в ней только столбцы, которые находятся за пределами допустимой ширины, и удалить их из исходной таблицы. , Весь процесс немного сложен, но результаты удовлетворительные.

Также возможно разрешить запуск кода javascript только для печати, а не для таблицы, показанной на экране: кнопка печати на странице может быть организована для запуска кода на стороне сервера, например php, который может генерировать PDF-файл библиотека wkhtmltopdf, передавая ей html-страницу, где находится таблица, , включая код javascript . Фактически, wkhtmltopdf генерирует pdf, имитирующий браузер, и код javasript будет выполняться правильно.

Теперь эта библиотека javascrpt уже существует, я написал ее и очень хорошо работает (по крайней мере, для моих нужд), и она свободно доступна в Интернете: я не хочу связывать ее, потому что предыдущий ответ уже был удален, и Я не знаю, было ли это по этой причине. Но если кому-то будет интересно, можете спросить в комментариях, а я его дам.

0 голосов
/ 16 января 2010

Вы не можете управлять тем, как HTML печатается любым реальным способом - HTML / CSS / JS не имеет доступа к драйверу принтера или настройкам печати браузера. Единственный вариант - преобразовать выводимый на печать вывод в PDF (или другой формат, ориентированный на печать) и использовать его вместо этого.

0 голосов
/ 13 октября 2009

Печать html на нескольких страницах, как это нехорошо делать

Возможно, вы захотите разбить график на куски по размеру страницы (например, div для каждой страницы), чтобы, когда они располагаются рядом друг с другом, график выглядел так, как требуется. Затем используйте CSS page-break-before or page-break-after to ensure that the printed pages are broken up correctly and you don't lose any content off the side of the page.

Also ensure that you have the media type, укажите print для css, который вы используете для версии для печати. ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...