Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: Irina от 24 Октября 2002, 12:53:28
-
Подскажите , пожалуйста, можно ли вставить в свою страницу что-то вроде разрыва страницы при печати документа? Можно ли отследить как-то конец страницы при печати? Число строк заранее неизвестно. Формируется таблица. Текст может переходить на следующую строку. Надо вставлять шапку таблицы на каждой странице.
-
Насколько я знаю, форматирование при печати проводится средствами браузера. Если нужно все сделать аккуратно, то дается ссылка на "версию для печати", в которой все красиво :), либо на PDF - файл или другой документ.
...А если есть средства JS, то было бы очень интересно об этом узнать :)
-
Во-первых, мне надо обойти браузер. Не будет же каждый пользователь вставлять шапку таблицы в колонтитулы со всеми графами и т. д. и если можно объясните поподробнее про "версию для печати". Документа как такового нет. Он формируется из базы и вычисляются данные. Если формировать PDF - файл, то задача еще более усложняется. Хотелось бы попроще.
-
если можно объясните поподробнее про "версию для печати"
Можно. Наглядно вот так:
http://www.script.com.ua/boards/thread.php?threadid=277&boardid=28&page=1#5
http://www.script.com.ua/boards/print.php?threadid=277&boardid=28&styleid=1&page=1
А в теории: вырезается все что не относится к текстам-минимальное форматирование. Это, правда, производить лучше серверными скриптами а не JScript.
-
NeoNox!Ты хоть сам понял, что сказал, и на какой вопрос отвечал. Я не понимаю, причем тут ссылка на какую-то иконку, если мне надо отпечатать документ и что я должна вырезать и откуда. Если у кого-то есть конкретные соображения, помогите пожалуйста. Очень нужно.
-
Ты хоть сам понял, что сказал, и на какой вопрос отвечал.
Я то понял. Я его даже отквотил.
Вот только ты обьясняешь на странном языке. Что такое Во-первых, мне надо обойти браузер
?
[OFF]с какой стороны? справа или слева?[/OFF] А.... Возможно тебе нужно контент распечатать на принтере и предварительно подготовить страницу? Тогда можешь смело забросить эту идею. Или провести тестирование дюжины моделей принтера с последующим выбором его из списка и соответствующим форматированием... Вобщем овчинка не стоит выделки. ИМХО.
-
Овчинка стоит выделки. Заказчик требует. И сделать хотя бы криво нужно. Но криво не хочется. Упрощаю вопрос. Может быть можно сосчитать, на сколько строчек браузер разобьет мою строку в графе таблицы.
-
Упрощаю вопрос. Может быть можно сосчитать, на сколько строчек браузер разобьет мою строку в графе таблицы.
Хм... Думаешь, это упрощение? Дело в том, что пользователь может печатать на формат А3 или А5, а не на А4. И "ландшафтом", а не "портретом". У него может стоять другой размер шрифта или стиль текста в браузере. А это сразу влияет на количество строк.
-
Если у кого-то есть конкретные соображения, помогите пожалуйста
Есть конкретное соображение! ТЫ ЭТОГО СДЕЛАТЬ НЕ МОЖЕШЬ. Ты не можешь из инета копаться в настройках принтера (и можешь об этом прямо сказать своему шефу). Ты не можешь определить, на каком принтере все это будет печататься (я, блин, может, сайт на ленте хочу распечатать, или на плоттере нарисовать. На слайд на худой конец вывести). JS НЕ ДАЕТ СРЕДСТВ ДЛЯ РАБОТЫ С ЖЕЛЕЗОМ! Потому что он - язык сетевой.
-
Все возможно, но кое что черезчур сложно чтобы этим заниматься.
Тот же JS через Java (nn4), ActiveX(IE) ..etc позволяет на много больше делать
Та же опера понимает CSS media=paged , где постранично все выводится (работает для FullScreen)
-
Oak! Расскажи, если можешь про media=paged поподробнее. Это уже что-то конкретное.
Mike! Еще раз упрощаю задачу. Мой пользователь будет печатать только в формате А4 и портретом. Так лучше?
Maniac! Я могу сказать шефу все что угодно, но возможность должна быть реализована, без этого не обойтись, шефу плевать, какой язык что может.
Все! Помогите, пожалуйста.
-
Еще раз упрощаю задачу.
Не думаю, что это поможет. Большой точности вычислений не приходится ожидать.
Овчинка стоит выделки.
Тогда все-таки почему нельзя использовать серверный скрипт для динамического формирования сложного документа с колонтитулами и прочая? Почему так важен именно JS?
И сделано будет прямо, т.е. пойдет на всех браузерах (точнее, "в обход", как и хотелось). Если задача позволяет уточнить спецификации, то реализация может упроститься.
-
Irina
[off] пусть заказчик покажет где он такое видел, а ты посмотришь и сделаешь так же или нам покажешь а мы поможем с идеями[/off]
-
Тогда все-таки почему нельзя использовать серверный скрипт для динамического формирования сложного документа с колонтитулами и прочая?
Mike! Мне все равно, какими средствами это сделать, JS или что-то другое. Но прости за ламерский вопрос: серверный скрипт - это какой язык? Где я могу создать колонтитулы? Я именно это и пытаюсь понять с самого начала. Наконец-то ответ по существу вопроса.
Макс! Мой заказчик видел это во всех старых программах, не связанных с WEB-программированием. И везде были средства типа on endpage() или new page; Я только хочу понять, есть ли что-нибудь подобное под WEB и все. В JS подобного события почему-то нет. Или я не нашла?
-
Irina
События такого нет (насколько я знаю).
Серверные языки - php, perl, asp (javascript, vbscript)
В общем-то споси у хостера, какой язык у них поддерживается.
-
В общем-то споси у хостера, какой язык у них поддерживается.
Поддерживается PHP. Думаешь, в PHP создаются колонтитулы? Или это уже вопрос к форуму PHP? Если просто подстраиваться по какую то страницу, сделать потом искуственный кусок пустой и поставить условия, можно выкрутиться, но тогда на всех страницах будет разный отступ сверху и снизу. Может знаешь, где поискать все-таки функцию "новая страница"? В документации я ничего не нашла. Я думаю, это будет многим интересно, вот сколько уже человек посмотрели вопрос, все они ищут ответ.
-
Irina
по-моему наименее геморойный вариант - генерация pdf с помощью php на стороне сервера. Вероятно подойдет любой другой формат в котором есть разбивка на страницы (например rtf), но для pdf есть расширение под PHP (вот можешь статью почитать - http://www.rushelp.com/articles.php?article=3 )
Тут открыл один свой справочник :rolleyes: - так вот в CSS есть такие свойства как
page-break-after
и
page-break-before
насколько я понял они управляют местом начала и конца страницы.
Поддерживаются всеми элементами, могут иметь значения
auto (оно по умолчанию)
always
left
right
Как они работают - не знаю, не пробовал но может поможет
-
Макс! За PDF даже не представляешь, какое спасибо. Что касается CSS, то весьма туманно, но можно попробовать покрутить. Если что-то получится, обязательно сообщу.
-
Есть такие события как onbeforeprint и onafterprint.
Геморройно манипулируя ими, можно для печати временно изменять размеры шрифта и, подсчитывая поинты, в определенные элементы вставлять разрывы страницы page-break-... .
Однажды я это спрашивал: http://www.xpoint.ru/archive/topic10/43/8617.html
А здесь еще что-то про это: http://www.xpoint.ru/search.html?words=%CF%E5%F7%E0%F2%FC&restrict=%2Farchive%2F&method=and&format=builtin-long&sort=score&config=xpoint.ru&exclude=
-
Есть такие события как onbeforeprint и onafterprint.
Как и описано в ссылках, все это работает только в MSIE, т.е. годится только для Intranet- или унифицированной под продукты Microsoft системы. Т.е. для Сети в целом не годится.
По ссылкам aleandrа:
Есть неплохое решение вот тут (через CSS - @media):
http://www.xpoint.ru/archive/threads/27/5574.html
Но (опять-таки...:() не все браузеры это понимают...
-
aleandr! Спасибо за ссылочку. Благодаря ей я выяснила, что пока мы тут искали страшные варианты, фирма Microsoft не спала и сделала дивный продукт ScriptX 5.5, который работает с Explorer выше 5 и создает колонтитулы, страницы, начинает их, заканчивает, esw. Почитала описание на English на сайте Microsoft. Очень интересно.Может кто-то видел в интернете сам продукт? Спасибо всем.
-
Всем интересующися даю ссылочку на документацию http://www.meadroid.com/scriptx/docs/printdoc.htm?static#intro (http://)
-
Прошу прощения у всех за ошибку. Это не Microsoft а Kaledia. Все остальное верно. Советы насчет onbeforeprint, onafterprint и page_break_after обязательно попробую, они, по-моему заслуживают внимания при отсуствии ScriptX
-
Гм... Это же элемент ActiveX... Они вымирают, к сожалению.
-
Гм... Это же элемент ActiveX... Они вымирают, к сожалению.
Что "Это"? ScriptX,у которого недавно появилась новая версия, onbeforeprint или что-то еще? Скажи, какими вечно живыми средствами можно решить столь элементарную задачу? Или опять обругать шефа и говорить, что это невозможно, если на самом деле все возможно? Если брюки завтра выйдут из моды, все в тот же день не перейдут на юбки.
-
Что "Это"?
ActiveX элементы.
столь элементарную задачу
[OFF]Когда речь идет о кроссплатформенности и безопасности, задача не становится проще. Как видишь, даже (:))с помощью ScriptX "элементарную задачу" решили только для MSIE (и то 5+, т.е. и MSIE 4 не будет с ним работать).[/OFF]
-
Всем, кто проникся и помог, огромное спасибо. Если дельных предложений больше нет, предлагаю тему закрыть. Слово "элементарная" относилось только к Maniac\'у. Забыла поставить кавычки.
-
Про paged - Google спроси "media=paged"
http://www.opera.com/support/tutorials/operashow/index.dml
Это про Opera
Но PDF конечно лучше - вроде PHP умеет его создавать
-
Спасибо Oak! Остановилась на PDF. Он мне идеально подходит. onafterbreak немного не то. Он просто определяет, что делать в конце печати: прогонять страницу, нет, передать управление системе. Разбивка на страницы тут не при чем.