Генерация документа с неотрывной подписью

sverel

Новичок
Генерация документа с неотрывной подписью

Задача: сгенерить документ (например счет или акт). Сгенерить можно в Екселе или ПДФ-нике. В документе есть таблица со списком позиций и их может быть довольно много (на 100 страниц). Внизу под таблицей должно быть поле "руководитель _______ (подпись) + М.П.". Согласно каким-то ГОСТам по оформлению документации подпись не должна быть оторвана от контента - т.е. от таблицы. Но периодически возникают ситауации, когда таблица влезает на 78 страниц, а поле для подписи переносится на следующую страницу т.е. в конце документа есть одна страница на которой должна стоять только подпись. За это могут вынести мозги и вообще документ является не действительным.

Требуется как-то генерить документ так, что бы на последней странице всегда была хотя бы одна крайняя строка из таблицы. Проблема усугубляется всякими настройками печати у разных клиентов. Например, можно задавать разные поля и разные масштабы для печати. Строки таблицы тоже могут имеет разную высоту. Вообщем жесть какая-то. Когда я сказал, что с учётом всех проблем, сделать этого невозможно, начальство сказало: "А вот 1С умеет генерить доки, что бы на печать всё правильно уходило.".

Вот я теперь никак не могу додуматься, как же так сделать? Excel? PDF? Есть идеи?
 

Single

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

sverel

Новичок
так в этом и проблема: клиенсткая прога (MS Excel или Adobe Reader) сами по страницам разбивают и я как бы на это не влияю.
 

mity

Новичок
Странно, у меня в PDF документах страницы всегда идут чётко и ни адобе, ни фоксик реадер никуда ничего не переносит.

Создавайте корректные pdf, с разрывами страниц. Ну и сделайте отступ сверху и и с низу хотя-бы 10 мм.
 

Single

пилот капсулы
sverel
в MS Excel что то вроде строим новый лист, высоту строк в ручную устанавливаем согласно требованиям, считаем сколько строк реально помещается на странице при печати.
Заполняем лист своими данными и смотрим сколько остается свободных строк и соответственно уместится ли в это количество блок для подписи.
PS. в Гугле совсем ничего нет по этому вопросу?

-~{}~ 02.06.10 18:14:

mity
вопрос несколько усложняется с учетом
так, что бы на последней странице всегда была хотя бы одна крайняя строка из таблицы.
т.е. просто добавить в конец лист с блоком для подписи будет типо не формат. нужно высчитывать размер свободной части листа.

-~{}~ 02.06.10 18:20:

sverel
Попробуй погуглить на тему css свойств page-break-before и page-break-after.
 

mity

Новичок
В я бы сделал такую цепочку.
Документ формируется в excel, ему всегда нужен принтер, пусть и виртуальный.
В excel пишется макрос, который проверяет положение подписи и если она оказывается одна на новом листе, то выше вставляются лишние строки. Можно попробовать двигать границы областей печати.

Дальше производится печать в pdf, там уже страницы должны идти чётко. Ну и этот pdf уже отправлять пользователю.

Я так понимаю что это будет находится на windows сервере. Нужно создать пользователя. Поставить ему pdf принтер по умолчанию и уже запускать "апач" с правами этого пользователя.
 

440hz

php.ru
если генерить ПДФ руками, то можно контролировать положение всего на всем.

я в свое время генерил доки на много страниц и ниче.
 

sverel

Новичок
нет. это не локальное приложение. Сервер на юниксах, клиенты по всему миру на разных системах со своими принтерами. Клиентов может быть тысачи.

-~{}~ 02.06.10 19:15:

Попробуй погуглить на тему css свойств page-break-before и page-break-after.

ХТМЛ тоже не подходит. Браузеры при печати проставляют свои колонтитулы, которые никак невозможно убрать. Только сам юзер сможет убрать в настройках браузера, но это не прокатит.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
из PHP ты не можешь повлиять на формат страниц при печати,
только на формат pdf-документа и разбивку данных по страницам
написать алгоритм для выставления разрыва страницы там, где надо - вопрос времени

>"А вот 1С умеет генерить доки, что бы на печать всё правильно уходило."
по этой логике надо писать не только генерацию документа на сервере, а так же и своего клиента для печати, как в 1С!
 
Сверху