Что-то вроде Crystal Reports для PHP? - PullRequest
31 голосов
/ 14 апреля 2009

Я ищу что-то, что работает в PHP и похоже на отчеты Crystal. Мне в основном нужна настройка макета, которая означает, что я могу выводить счета-фактуры, просто вставляя данные, а затем отправлять их на принтер.

Самым близким, что я нашел, является PDFB, но это немного сложно, так как нужно точное позиционирование.

Мне бы хотелось иметь что-то, что могло бы сгенерировать счет на основе шаблона (предпочтительно на основе XML) и затем вывести его в форму, удобную для печати (PostScript был бы хорош!)

Он также должен иметь поддержку штрих-кодов (хотя они могут быть сгенерированы как изображение GD)

Другое требование - это FLOSS

Ответы [ 12 ]

12 голосов
/ 14 апреля 2009

Использование XML + XSL: FO с Apache FOP через PHP-JavaBridge .

Вот как: http://wiki.apache.org/xmlgraphics-fop/HowTo/PHPJavaBridge

Было бы неплохо PostScript!

Многие принтеры PostScript также понимают PDF.

7 голосов
/ 04 июня 2009

Я использовал Spreadsheet_Excel_Writer в PHP, и это достаточно хорошо. Не WYSIWYG, но он генерирует XSL-файлы, и я доволен этим. После этого вы можете использовать макрос OpenOffice для преобразования документа в PDF. Он работает из командной строки, поэтому он работает и из PHP-скриптов.

Или вот еще лучший способ.

Используйте OpenOffice для конвертации шаблона Smarty. Smarty - классный движок шаблонов для PHP, я рекомендую его для этой цели. Затем сгенерируйте чистый HTML с помощью PHP с помощью Smarty. Наконец, просто преобразуйте сгенерированный HTML в PDF, используя вышеупомянутый метод.

Отчетность революционизированная (тм).

РЕДАКТИРОВАТЬ 6 июня 2009 Модедировано вниз? Ах, неважно.

В любом случае, этот метод работает на автономном сервере без запуска X11. Я взял сценарий из упомянутой ссылки (за исключением того, что я поместил его в ранее существовавшую коллекцию "Standard" вместо "DannysLibrary"), а затем я выполнил эту команду с компьютера Windows, используя PuTTY, и X был завершение работы на удаленном компьютере, и переменная DISPLAY не была установлена, и ... ну, в любом случае, OOo не может найти X11 для подключения.

$ openoffice.org -invisible -headless "macro:///Standard.Conversion.ConvertWordToPDF(`pwd`/logaritamska.doc)"

Это работает, и я уверен, что это будет отлично работать для всех, кому потребуется преобразование из другого формата в PDF, включая создание печатных отчетов из HTML. Редактируя макрос, вы, возможно, даже можете заставить OOo читать напрямую из stdin или из вашего временного URL-адреса службы и выводить в предопределенный файл. Сценарий по ссылке довольно прост, если у вас есть элементарный код для расширения.

Резюме:

  • создавать отчеты в формате XLS или HTML
  • конвертировать их
  • , хотя это OOo, он работает на безголовых машинах

РЕДАКТИРОВАТЬ 9 июня 2009 Я пытался реализовать онлайн-конвертер таким образом. Вы должны заставить PHP работать под тем же пользователем, под которым вы создали макросы. Этот пользователь, видимо, не может быть www-data. Я пытался использовать suphp, но по какой-то причине он не изменил пользователя должным образом (posix_getuid() продолжал возвращать 33, что является www-данными). Я отредактирую это, как только исправлю.

РЕДАКТИРОВАТЬ 26 июня 2009 Думаю, мне понадобилось время, чтобы доложить. Да, это работает с suphp. Однако я не в состоянии показать его вживую, поскольку на моем единственном сервере запущено относительно критическое веб-приложение, в котором не было профессионального аудита безопасности. Это означает, что одна из вещей, от которых мы зависим для защиты бэкэнда, заключается в том, что пользователь, под которым работает веб-интерфейс, является очень и очень непривилегированным пользователем (например, www-data). Не спрашивай: -)

Надеюсь, это кому-нибудь поможет: да, преобразование в PDF с помощью OO.o вполне реально. В OO есть даже поддержка удаленного вызова, но я не изучал это только для написания этого.

6 голосов
/ 07 июня 2009

Я использовал eclpse в php: "BIRT Project"

http://www.eclipse.org/birt/phoenix/

Вы создаете свой отчет в Eclipse. Затем загрузить его на свой сервер (он должен быть запущен Tomcat), я знаю. Затем вы можете вызвать этот отчет из вашего приложения PHP Вы можете отправить параметры в отчет через строку запроса:

/ myreport.birt? Пары = вар & param2 = var2

До сих пор у нас было 4-летнее приложение. Около 100 отчетов, и это работает очень хорошо.

Конечно, это с открытым исходным кодом.

Удачи

5 голосов
/ 14 апреля 2009

Если у вас есть доступ к серверу, вы также можете выбрать Объекты форматирования XSL - Apache FOP . XSL-FO основан на XML и поддерживает множество форматов вывода , включая PostScript и PDF

4 голосов
/ 31 марта 2013

Reportico

На мой взгляд, это один из лучших, подробных и многофункциональных PHP Report Designer.

4 голосов
/ 09 мая 2009

Если вам удастся вызвать приложение Java в вашей php-среде (что в общем должно быть возможно) JasperReports возможно, то, что вы ищете:

1 голос
/ 31 октября 2012

Правильный инструмент для этой цели - XSL-FO, так как он идеально подходит для печатных носителей. XSL-FO также является Рекомендацией W3C с XSLT. Я создал инструмент php, который использует XSL-FO в качестве промежуточного языка для отчетов. Этот XLS-FO является результатом слияния (обработки) шаблона XSLT отчета с вашими данными XML.

Шаблон создается автоматически с использованием MS Word и выполняется экспорт, как показано в руководстве пользователя. Затем вы подаете в механизм отчетов шаблон, а во время выполнения - данные XML.

Также во время выполнения результирующий отчет XSL-FO отображается в:

a) тот же XSL-FO (если вы хотите отладить или просто хотите XSL-FO)

b) Идеальный PDF, (ApacheFOP отображает XSL-FO)

в) HTML с преобразованием XSLFO2HTML.

Здесь у вас есть проект, это плагин Symfony 1.4: https://github.com/juanmf/sfPlugins/tree/master/reportPlugin

Я планирую отделить его от СФ. Не стесняйтесь спрашивать. Вот как это сделать: https://github.com/juanmf/sfPlugins/blob/master/reportPlugin/doc/HowToReport.pdf?raw=true

Этот пост также может помочь вам: https://stackoverflow.com/questions/5519024/report-engine-solution-for-lamp-application/13042656

Привет!

1 голос
/ 08 мая 2009

Я столкнулся с той же проблемой около года назад. После полного поиска существующего решения я не нашел его, поэтому я написал уменьшенные отчеты по кристаллам, используя библиотеку генерации PDF Zend Framework. Мне пришлось сильно адаптировать их библиотеку для поддержки сгруппированных объектов, повторяющихся разделов и шаблонов. Это работало, но это было действительно неуклюже, и если бы мне пришлось делать это снова, я бы нашел способ связать php с отчетами Crystal, либо через веб-сервис, как сказал Гушикен, либо вызвав приложение из командной строки. CPAN имеет Perl-интерфейс к C.R .: Win32 :: OLE :: CrystalRuntime :: Application .

Если в прошлом году было выпущено PHP-решение, я сомневаюсь, что оно достаточно зрелое, чтобы сравнивать его с C.R. Не тратьте время на то, чтобы вырывать голову - иди с тем, что работает. Время дорого. Программное обеспечение не.

1 голос
/ 14 апреля 2009

хм .. у меня была та же проблема в моем текущем проекте, и я закончил тем, что использовал Crystal Reports и вызывал отчет с помощью веб-службы asp.net, написанной на c #. В веб-сервисе нет ничего сложного, и вы все еще можете использовать все функции Crystal Reports. Я не думаю, что вы найдете какой-либо механизм отчетов, полностью основанный на php, который можно сравнить с отчетами Crystal ... Я пока не смог найти его ...

0 голосов
/ 01 мая 2011

Я использовал phpreports , и я должен признать, что это неплохо для веб-отчетов, поскольку он поддерживает заголовки, нижние колонтитулы, группы, промежуточные итоги и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...