LINUX.ORG.RU

Грамотно сгенерировать отчеты

 , ,


1

2

А вот что посоветуют мне благородные доны?
Нужно кроссплатформенно генерировать и сохранять/печатать отчеты по данным из БД. Также нужен предпросмотр результата.
Что грамотнее использовать: pdf или html? Какие библиотеки и классы понадобятся?

Почитал доки, там есть пример записи текста в pdf с помощью QPainter и QPrinter. Но мне нужно будет делать таблицы, не вручную же все линии рисовать.

// Qt 4.8.1

Ответ на: комментарий от nanoolinux

Я пока тоже к pdf склоняюсь, но пока не очень ясно представляю как вообще с этим всем работать.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от false

Странно, не получается тестовый пример скомпилять:

% gcc -L/usr/lib -lps einstein.c
/tmp/ccRIVHmM.o: In function `main':
einstein.c:(.text+0xa1): undefined reference to `PS_boot'
...
einstein.c:(.text+0x922): undefined reference to `PS_shutdown'
collect2: выполнение ld завершилось с кодом возврата 1

libps.so в /usr/lib есть. pslib-dev поставил, конечно.
Версия pslib - 0.4.5-2.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

Возьми перл, быстрее будет заценить возможности.

libpostscript-file-perl - module for creating Adobe PostScript files
libpostscript-perl - Perl module to generate PostScript code
libpostscript-simple-perl - Perl library for generating postscript files
libpostscriptbarcode - A barcode generator written entirely in PostScript

Мне кажется надо создавать xml, а из него каким-нибудь xsltproc генерировать любой нужный формат (html, TEX, "ascii-art" ...)

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 2)

Что грамотнее использовать: pdf или html?

С pdf очень долго мудохаться - там всё низкоуровневое, а высокоуровневое надо искать (есть но платное).

Я бы поступил на твоём месте проще - делай в html и используй экспорт в pdf который есть в webkit. Там только с делением на страницы нужно повыкручиваться.

no-such-file ★★★★★
()

законченный вариант идеи:

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

umren ★★★★★
()

В качестве предпросмотра - html, в качестве отчёта - pdf.

ИМХО, лучше через latex.

ziemin ★★
()

Амигос, я писал либу которая юзает для рендера tex. вполне успешно. Если интересно - стучись на почту.

MikeDM ★★★★★
()
Ответ на: комментарий от exception13

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

exception13 ★★★★★
()
Ответ на: комментарий от exception13

вот тут вроде готовые репонт-генераторы

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

MikeDM ★★★★★
()
Ответ на: комментарий от mos

jasper reports?

Java, так что мимо. Мне нужно, чтобы из плюсов можно было дернуть.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

но мне не нужно, чтобы приложение тащило их за собой.

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

MikeDM ★★★★★
()
Ответ на: комментарий от exception13

QtRPT - pretty experimental and unmature. Many magics, comments in Russian in code.

Позабавило. Потыкаю обязательно.

Если не прокатит - попробую html/css.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от umren

Да ничего интересного, очередная АСОИ, сделанная на курсач еще осенью 12 года, но к которой мне нравится возвращаться. Управление библиотекой.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

Если не прокатит - попробую html/css.

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

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

За обозримое будущее ты в одну каску генератор отчетов не сваяешь.

Ну я это понимаю, потому и спрашиваю, что заюзать. Пока, похоже, либо QtRPT, либо html + webkit.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от MikeDM

Но если вдруг захочешь чего то более серьезного, например точный размер строк на странице - с html ты точно приплывешь.

куда приплывешь? высота строки в ксс выставляется по желанию, высчитать нужное количество строк на странице - не проблема

umren ★★★★★
()
Ответ на: комментарий от umren

высота строки в ксс выставляется по желанию

степень поддержки CSS в WebKIT оставляет желать лучшего. Плавали - знаем.

MikeDM ★★★★★
()
Ответ на: комментарий от HerrWeigel

вот в этом и кроется подлость =)

Попробуй какой нибудь серьезный текст так сделать в тестовом приложении. Потом отпишись и кастани меня. любопытно =)

MikeDM ★★★★★
()
Ответ на: комментарий от HerrWeigel

21 век. Люди в космос летают. Иногда даже возвращаются, а ты не можешь собрать сервер отчётов, который по запросу твоего приложения будет генерить отчёт.

Я так понимаю с отчётами, которые строятся часами, ты ещё не сталкивался? Что планируешь делать? Песочные часы показывать?

ziemin ★★
()

Хз как в 4.8.1, но в 5ой версии можно QTextDocument в PDF сохранить. Типа так:

QTextDocument document;
auto _cursor = new QTextCursor(document);

auto table = _cursor->insertTable(bla bla);

QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("fileName");
document.print(&printer);

Rubbiroid
()
Ответ на: комментарий от ziemin

Я так понимаю с отчётами, которые строятся часами, ты ещё не сталкивался? Что планируешь делать? Песочные часы показывать?

люто плюсую.

MikeDM ★★★★★
()
Ответ на: комментарий от Rubbiroid

Вроде можно, спасибо, тоже попробую.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от ziemin

Я так понимаю с отчётами, которые строятся часами, ты ещё не сталкивался? Что планируешь делать? Песочные часы показывать?

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

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

17:59. Давай говорить реально. Все отчёты запускаются с 17:59:00 до 17:59:59.

В 18:00 ПК пользователя должен быть не просто выключен, а ещё и обесточен (по требованиям пожарной безопасности).

ziemin ★★
()
Ответ на: комментарий от PreciousProtection

Почему ты его употребляешь почти в каждом своём комменте?

Сударь вы изучали список моих постов? Похвально. Что вы еще заметили в моих постах? Какой процент иронии и сарказма?

MikeDM ★★★★★
()
Ответ на: комментарий от HerrWeigel

Ты предпочитаешь возится с кучей мутных либ, вместо того чтобы на скриптах написать генератор отчётов и разместить его на виртуалке?

Здесь даже данных передавать никаких (почти) не надо. Тупо: пользователю нужен один из 256 отчётов = байт. Триггер события.

Заодно куча пользователей не будут строить один и тот же отчёт, насилуя БД.

Мне оно не надо пока.

Это как раз означает, что пока можно обойтись скромненькой виртуалочкой.

ziemin ★★
()
Ответ на: комментарий от HerrWeigel

и дать возможность окошечко куда-нибудь убрать?

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

MikeDM ★★★★★
()

А вот что посоветуют мне благородные доны?

Грамотно сгенерировать отчеты

Если хочешь толковый совет - давай ТЗ.

MikeDM ★★★★★
()
Ответ на: комментарий от PreciousProtection

только подтвердил мои опасения.

Есть смысл обратиться к специалисту? =)

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

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

Ну это понятно же. Я просто примерно описал, как я это вижу. Хотя вот ziemin показал, что это надо через дополнительный сервер делать.

HerrWeigel ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.