html распечатать очень широкую страницу на нескольких листах формата А4

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

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

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

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

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

Буду признателен за указания / идеи

Спасибо.

12.10.2009 22:22:15
Спасибо, я был убежден в течение некоторого времени, что никого не волнует, как печатает html
John La Rooy 12.10.2009 23:00:15
Является ли что-то вроде PDF вариант?
John La Rooy 12.10.2009 23:01:00
Я не предполагаю, что в FF3 есть автоматическая реализация screen-to-pdf ... Я мог бы нарисовать pdf на стороне сервера, что само по себе ужасно.
gnosis 12.10.2009 23:21:24
Это зависит от вашей платформы. Если у вас есть библиотека PDF, это хорошее решение. Помните, что html предназначен для адаптации к окнам различной формы. PDF очень хорош, если вы знаете размер страницы заранее. Я бы сделал PDF с нуля, не пытайтесь конвертировать html-> PDF
John La Rooy 12.10.2009 23:58:19
4 ОТВЕТА

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

Возможно, вы захотите разбить график на куски по размеру страницы (например, div для каждой страницы), чтобы, когда они располагаются рядом друг с другом, график выглядел так, как требуется. Затем используйте CSS page-break-before или page-break-after, чтобы убедиться, что напечатанные страницы разбиты правильно, и вы не потеряете контент со стороны страницы.

Также убедитесь, что у вас указан тип носителя для печати css, который вы используете для версии для печати.

0
12.10.2009 22:47:33

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

0
16.01.2010 05:59:23

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

.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>
3
12.08.2011 18:09:54

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

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

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

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

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

1
15.02.2015 10:37:26