powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по генерации документов.
25 сообщений из 66, страница 1 из 3
Вопрос по генерации документов.
    #39217088
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем, тема такая я уж не знаю как лучше сделать. всё думку думаю. заказчик хочет при отпуске товара чтоб генерировалось три документа: счет-фактура, спецификация, акт-сверки. и типа чтоб нажал кнопку принт и оно опс улетало на принтер одной кнопкой. так же в добавок четвертый документ - сертификаты к товару. (ранее отсканированные и загруженные в базу с привязкой к наименованию, так же склеенные в один большой пдфник)

приложение веб.

сейчас сделал тупо так: формируется хтмлка-жсп-жстл (во вьюшку отправляются объекты инвойс и акт сверки, а там уже разбирается жстлом) с тремя документами, разрывами страниц и т.п. потом джейскрипт просто вызывает окно принт в хроме и всё улетает на принтер - работает отлично, работает шикарно воще без вопросов. 1 клик и документ на бумаге.

проблемы начинаются позже: контора фарм и по их заверениям может быть и 200 позиций в инвойсе. а это означает, что инвойс может быть и на 2 страницы и на 3 страницы. т.е. надо разрыв втыкать посреди траблицы, далее втыкать заголовок и опять в какой то момент разрыв и снова заголовок и потом "нижняя" шапка (принял отпустил директор и т.п.). но тут вылезает новая проблема. название позиции это может быть и 3 слова а может быть и 15 слов (нормально да?) т.е. "презервативы дюрекс ребристые синего цвета пр-ва словения номер 3" )) и вылезает вот что: что одна позиция может быть на 2 строки (в инвойсе) может быть на 3 строки и даже на пять! чтоб подсчитать когда втыкать разрыв мне надо пересчитвать количество строк в каждой позиции и потом их суммировать (зная сколько их всего влезает). и здесь опять проблема! они видите ли хотят "как в 1с" чтоб был шрифт ариал (который не моноширинный ) )) и посчитать точно количество строк в некоторых случаях возникает ошибка на 1 строку, т.к. символов в строку влезает разное количество. и следом лезет еще одна проблема ))) перенос слов (гипенация). т.е. три длинных слова два слова в одну строку третье на новую и снова ошибка в расчете строк на страницу )) короче, великий геморрой. я сделал расчет всего этого гвона чисто на жстл тегах. вроде работает. но в теории может так выйти что разрыв будет вставлен не верно и получится порнуха при распечатке. шанс очень малый но он есть. вариант выхода вижу один: сделать просто запасик снизу на 1-2 позиции (будет пустое место, но зато шанс вставить разрыв страницы не туда сводится практически к нулю).

либо другой вариант: хаергу всю эту вообще выкинуть нафиг и использовать старый добрый ексель. но у екселя проблемы. заголовок на страницу он вставляет только один вариант. в итоге мне придется генерировать документ с тремя вкладками внутри. и надо будет опять думать как это всё напечатать одним нажатием. что тоже навряд ли выйдет т.к. надо будет процентовкой подгонять размер чтоб в размер страницы попало. - для оператора геморрой.

собссно вопрос - я вообще стратегию верно выбрал? -- генерировать хтмл а потом из него в пдф перегонять. или есть что-то более простое?

я смотрел айтекст, которрый сразу пдф генерит. но это жпоа полнейшая и вообще отдельная дисциплина чтоб разобраться с его псевдоязыком разметки.. в общем, не вариант.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217098
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2в общем, тема такая я уж не знаю как лучше сделать. всё думку думаю. заказчик хочет при отпуске товара чтоб генерировалось три документа: счет-фактура, спецификация, акт-сверки. и типа чтоб нажал кнопку принт и оно опс улетало на принтер одной кнопкой. так же в добавок четвертый документ - сертификаты к товару. (ранее отсканированные и загруженные в базу с привязкой к наименованию, так же склеенные в один большой пдфник)

приложение веб.

сейчас сделал тупо так: формируется хтмлка-жсп-жстл (во вьюшку отправляются объекты инвойс и акт сверки, а там уже разбирается жстлом) с тремя документами, разрывами страниц и т.п. потом джейскрипт просто вызывает окно принт в хроме и всё улетает на принтер - работает отлично, работает шикарно воще без вопросов. 1 клик и документ на бумаге.

проблемы начинаются позже: контора фарм и по их заверениям может быть и 200 позиций в инвойсе. а это означает, что инвойс может быть и на 2 страницы и на 3 страницы. т.е. надо разрыв втыкать посреди траблицы, далее втыкать заголовок и опять в какой то момент разрыв и снова заголовок и потом "нижняя" шапка (принял отпустил директор и т.п.). но тут вылезает новая проблема. название позиции это может быть и 3 слова а может быть и 15 слов (нормально да?) т.е. "презервативы дюрекс ребристые синего цвета пр-ва словения номер 3" )) и вылезает вот что: что одна позиция может быть на 2 строки (в инвойсе) может быть на 3 строки и даже на пять! чтоб подсчитать когда втыкать разрыв мне надо пересчитвать количество строк в каждой позиции и потом их суммировать (зная сколько их всего влезает). и здесь опять проблема! они видите ли хотят "как в 1с" чтоб был шрифт ариал (который не моноширинный ) )) и посчитать точно количество строк в некоторых случаях возникает ошибка на 1 строку, т.к. символов в строку влезает разное количество. и следом лезет еще одна проблема ))) перенос слов (гипенация). т.е. три длинных слова два слова в одну строку третье на новую и снова ошибка в расчете строк на страницу )) короче, великий геморрой. я сделал расчет всего этого гвона чисто на жстл тегах. вроде работает. но в теории может так выйти что разрыв будет вставлен не верно и получится порнуха при распечатке. шанс очень малый но он есть. вариант выхода вижу один: сделать просто запасик снизу на 1-2 позиции (будет пустое место, но зато шанс вставить разрыв страницы не туда сводится практически к нулю).

либо другой вариант: хаергу всю эту вообще выкинуть нафиг и использовать старый добрый ексель. но у екселя проблемы. заголовок на страницу он вставляет только один вариант. в итоге мне придется генерировать документ с тремя вкладками внутри. и надо будет опять думать как это всё напечатать одним нажатием. что тоже навряд ли выйдет т.к. надо будет процентовкой подгонять размер чтоб в размер страницы попало. - для оператора геморрой.

собссно вопрос - я вообще стратегию верно выбрал? -- генерировать хтмл а потом из него в пдф перегонять. или есть что-то более простое?

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

Около 5 лет назад всё это делал через iText так что как-то так
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217475
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в айтексте сверстать адекватной сложности документ это застрелиться проще. ..что больше никто не сталкивался с таким или все в айтексте пишут? )
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217476
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2,

для рэпорта и JasperReports тоже подойдет, пробовал вещь хорошая :)
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217481
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпроблемы начинаются позже: контора фарм и по их заверениям может быть и 200 позиций в инвойсе. а это означает, что инвойс может быть и на 2 страницы и на 3 страницы. т.е. надо разрыв втыкать посреди траблицы, далее втыкать заголовок и опять в какой то момент разрыв и снова заголовок и потом "нижняя" шапка (принял отпустил директор и т.п.). но тут вылезает новая проблема. название позиции это может быть и 3 слова а может быть и 15 слов (нормально да?) т.е. "презервативы дюрекс ребристые синего цвета пр-ва словения номер 3" )) и вылезает вот что: что одна позиция может быть на 2 строки (в инвойсе) может быть на 3 строки и даже на пять! чтоб подсчитать когда втыкать разрыв мне надо пересчитвать количество строк в каждой позиции и потом их суммировать (зная сколько их всего влезает). и здесь опять проблема! они видите ли хотят "как в 1с" чтоб был шрифт ариал (который не моноширинный ) )) и посчитать точно количество строк в некоторых случаях возникает ошибка на 1 строку, т.к. символов в строку влезает разное количество. и следом лезет еще одна проблема ))) перенос слов (гипенация). т.е. три длинных слова два слова в одну строку третье на новую и снова ошибка в расчете строк на страницу )) короче, великий геморрой. я сделал расчет всего этого гвона чисто на жстл тегах. вроде работает. но в теории может так выйти что разрыв будет вставлен не верно и получится порнуха при распечатке. шанс очень малый но он есть. вариант выхода вижу один: сделать просто запасик снизу на 1-2 позиции (будет пустое место, но зато шанс вставить разрыв страницы не туда сводится практически к нулю).
делал для excell и calc муторно, но реализуемо
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217497
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я для екселя тоже делал кое-какие документы там же. там где один заголовок на все страницы. а когда заголовки разные - появляются вариации да и пдф как то удобнее для печати. нажал принт и все настройки.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217521
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в экселе есть удобство - можно внести правки, что бывает необходимо :)
в пдф это несколько проблематично.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217548
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага. например, каждый раз )) выставлять границы печати да )) да и делать правки в инвойсе как то не комильфо
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217554
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2ага. например, каждый раз )) выставлять границы печати да )) да и делать правки в инвойсе как то не комильфо
границы это не проблема и их править можно и нужно программно
а вот правки в счете или накладной - это довольно часто приходилось....
по мелочам,к счастью, но из-за этих мелочей придурошные бухгалтерши клиентов не хотели принимать документы
и как уговаривать их ссылками на доки и прочими аргументами - что со стеной бодаться
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217755
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2,

XTHM->PDF нормально генерится через Flying Saucer . Вам надо только разобраться с разметкой и правильно её применять - хэдеры, футеры, колонтитулы и пр. Если всё правильно сделать, то принудительные разрывы страниц надо ставить только между разными документами в пакете. Можно сдкелать заготовку (шаблон) и заполнять его данными через какой-нибудь шаблонизатор, например, Apache Velocity или Freemaker . Очень удобно.

iText никакго псевдоязыка разметки не имеет, там голый API - создать параграф, создать блок текста, создать таблицу и т.п. Единственное неудобство, что всё кодом, если шаблон документа изменится, то надо править код.

Если вас Flying Saucer чем-то не устраивает, посмотрите Apache FOP . Возможностей по разметки текста больше, но "нарисовать" XSL-FO шаблон сложнее, чем XHTML, но это дело привычки. Заполнять данными можно также FO-шаблон через шаблонизатор или через XSL-XML трансформацию (как это правильно называется?)

Есть ещё DITA , DocBook и др.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217772
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jasper report всем хорош.
Только не нашел
- не отрывать абзац от следующего
- повтор заголовков на страницах.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217827
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickВам надо только разобраться с разметкой
не уверен что для очётов правильнее будет рабираться с разметками.
Если конечно, заказчик вменяемый. Не требует заголовки под 45 гард. и т.д.))
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217830
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2там где один заголовок на все страницы. а когда заголовки разные
это как понять?
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217839
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick посмотрите Apache FOP . Возможностей по разметки текста больше, но "нарисовать" XSL-FO шаблон сложнее, чем XHTML, но это дело привычки.
+
хотя вымогает такой подход "хочу как в 1С", если хотите как в 1С используйте 1С.

В том же уз, медикаменты на 1С прекрасно крутятся, дохрена контор. Там все эти хотелки и плюшки есть уже из коробки.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217846
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometrхотя вымогает такой подход "хочу как в 1С", если хотите как в 1С используйте 1С.
смотря что хотят.
- если шрифт, то это вполне разумно. Т.к. никто не поймёт проблемы "с моноширинным".
- если в отчёте ячейки редактируются, то это конечно мегасложно и дороже
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39217892
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через poi сделать можно, только муторно,но зато как в 1с будет
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218628
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
golovonometrGarrick посмотрите Apache FOP . Возможностей по разметки текста больше, но "нарисовать" XSL-FO шаблон сложнее, чем XHTML, но это дело привычки.
+
хотя вымогает такой подход "хочу как в 1С", если хотите как в 1С используйте 1С.

В том же уз, медикаменты на 1С прекрасно крутятся, дохрена контор. Там все эти хотелки и плюшки есть уже из коробки.
крутятся (если речь про уз) но вот с кастомизацией некоторые проблемы. а то что я запилил на заказ это по-сути копия какой то древней проги написанной на дельфях, которую я просто тупо с нуля переписал на основе скриншотов и показаний тех, кто на ней работал (по собссно их же заказу), перепилил полностью на веб и на яве, с авторизацией через ад, добавил их хотелки-желалки вот и всё. ну платят и ладно зато она в отличие от 1с может вести и черную и белую кассы )) и кнопочки в тех местах где заказчик хочет и окошечки там где им надо и прочие прикольные фишки. я не соревнуюсь с 1с конечно же, но вот в плане кастомизации я могу сделать свой софт каким угодно, а типовой 1сник - нет.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218630
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадячерез poi сделать можно, только муторно,но зато как в 1с будет
ну вот я и склоняюсь к пои. часть документов я уже на нем сделал чтоб генерилось но там одностраничные и достаточно простые документы, которые они хотели редактировать после генерации.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218634
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123lor2там где один заголовок на все страницы. а когда заголовки разные
это как понять?
пример: прайс надо сделать. там идет какая то "заглавная" страница со всякой инфой. далее идет собссно перечень товаров. таблица с каким то там заголовком навроде "название, срок годности, цена, цена " и т.п. так вот, если у меня скажем, 500 наименований, то на 1 страницу не влезает и переваливается на вторую (речь об экселе). в екселе есть такая опция как "закрепить заголовок" ну или типа того. ты помечаешь часть клеток и в случае если у тебя инфа переползает на следующую страницу - то этот заголовок к таблице переползает туда автоматом. это окей.

а теперь вопрос: они хотят чтоб вылезал целый пакет документов: инвойс (там ской заголовок), следом еще какой то табличный документ (спецификация) и третий - акт сверки (снова таблица). в екселе ты не можешь больше одного заголовка на страницу закрепить. всё . приехали. либо вариант номер 2 : делаем внутри одного документа ексель несколько листов и там уже закрепляем заголовки. но мне не хочется с этим связываться потому что оне хотят "одной кнопкой". а если ты начнешь пилить ексель документ на несколько листов, то ты перед печатью вынужден будешь в любом случае каждый лист подгонять под принтер.

с шаблонизаторами это круто. но.. по сути я сейчас это и делаю пользуя жсп и конвертируя его в пдф средствами браузера. )способ делать это на сервере легкий я не нашел со стандартным жсп шаблонизатором - надо устраивать костыли с интерцепторами и фильтрами, перехватывать вывод и отправлять его в айтекст. или же подключать велосити и начать изучать уже его. т.к. мои жсп-жстлки на эти документы прям как по мвс получились монстроидальными с кучей вычислений (которые относятся ко вьюшке разумеется) и осваивать всё заново в велосити чот меня пугает.
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218643
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lor2,
тут есть ещё одна тонкость по применению «одной кнопкой»
все доки нужно печатать одним «файлом» дабы избежать паузы между печатью .
как вариант делать это двойным преобразованием: по отдельности каждый документ в эксель, а потом все загнать в пдф и отправить на печать пдфку
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218644
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

я даже боюсь предположить, как в пои ексель в пдф конвертить чтоб там еще и поля выставлялись правильно. даже в екселе удобная функция выравнивания по краям появилась только в десятке )) и тут снова вылезает проблема с заголовками )
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218645
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяlor2,
тут есть ещё одна тонкость по применению «одной кнопкой»
все доки нужно печатать одним «файлом» дабы избежать паузы между печатью .
как вариант делать это двойным преобразованием: по отдельности каждый документ в эксель, а потом все загнать в пдф и отправить на печать пдфку

Если можно то пусть это делают через 1с

А можно прииер кода на html js для корректной печати без подтвержения диалогово окна и работы с заголовками и переносами в html странице ? Какие стили?
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218646
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант есть решение в книги спринг рецепты Глава

Creating Excel and PDF Views 4-11.

Но код нужно писать
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218647
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<dependency>
  <groupId>com.lowagie</groupId>
  <artifactId>itext</artifactId>
  <version>4.2.1</version>
</dependency


package com.apress.springrecipes.court.web.view;
...
import org.springframework.web.servlet.view.document.AbstractPdfView;
import com.lowagie.text.Document;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;
public class PdfReservationSummary extends AbstractPdfView {
    protected void buildPdfDocument(Map model, Document document,
            PdfWriter writer, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        List<Reservation> reservations = (List) model.get("reservations");
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Table table = new Table(5);
        table.addCell("Court Name");
        table.addCell("Date");
        table.addCell("Hour");
        table.addCell("Player Name");
        table.addCell("Player Phone");
        for (Reservation reservation : reservations) {
            table.addCell(reservation.getCourtName());
            table.addCell(dateFormat.format(reservation.getDate()));
            table.addCell(Integer.toString(reservation.getHour()));
            table.addCell(reservation.getPlayer().getName());
            table.addCell(reservation.getPlayer().getPhone());
}
        document.add(table);
    }
}
...
Рейтинг: 0 / 0
Вопрос по генерации документов.
    #39218650
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Atum1,

не, ну нажать принт и выбрать принтер тебе в любом случае придется из окна браузера (хром в моем случае) - либо на принтер либо в пдф.

а разрыв страницы в цссе:

Код: html
1.
2.
3.
4.
5.
6.
7.
    <style>
        @media print {
            .more {
                page-break-after: always;
            }
        }
    </style>



втыкай его в странице куда хочешь и на принтере или пдфе будет пейджбрейк
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по генерации документов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]