Program na linux do zarządzania QuickReport

0

Cześć,

Pracuje nad webową aplikacją internetowego biura obsługi klienta. Piszę w PHP, mam dostęp do bazy danych MySQL. W bazie mam wszystko co potrzebuje pokazać klientowi w jego panelu. Aplikacja która korzysta z bazy jest napisana w Delphi. Aplikacja ta wstawia do bazy w pole typu BLOB umowę w postaci raportu QuickReport. Nie mogę tej umowy wyciągnąć i wyświetlić.

Aplikacja w Delphi wyciąga ją z bazy i wysyła na drukarkę "Microsoft print to PDF". Mamy podgląd i można to wydrukować. W PHP tego nie zrobię. Szukałem ale nie znalazłem rozwiązania.

Znalazłem coś takiego jak Lazarus. Działa to pod Linux. Zastanawiam się czy można napisać aplikację w Lazarus uruchamianą z linii komend. Do aplikacji przekażę dane z pola BLOB. Aplikacja rozszyfruje mi dane i zwróci np. tekst w RTF, z którego zrobię PDF po stronie PHP. Szablony umów w aplikacji w Delphi zapisywane są w RTF.

Nie znam się na Delphi. Powiedzcie czy takie coś jest możliwe? Znalazłem, że QuickReport nie jest obsługiwane w Łazarzu, ale może nowe LazReport lub FastRepost da sobie z tym radę?

--- edit

Wpadło mi jeszcze coś innego do głowy. Może zrobić program który połączy się z tą bazą. Wskaże mu w parametrze ID, program pobierze dane z pola typu BLOB i wygeneruje na serwerze w katalogu plik z tekstem. Ja sobie potem to odczytam, przetworzę na PDF dla użytkownika i usunę to co program wygenerował. Ogólnie wszystko ma dziać się w locie. Nie zapychamy serwera plikami.

0

Bedzie ciężko !
Najprościej to by było wygenerować (po stronie windows) jeszcze jedną wersje raportu ale w jakimś ludzkim formacie bez kombinowania z "plikiem tekstowym", ewentualnie jeszcze skompresować ten dodatkowy raport dla oszczednosci miejsca

Wszystkie inne scenariusze wydaja się jeszcze ciekawsze:
np. można użyć WINE i pod Linux uruchomić specjalne EXE ktore odczyta QuickRaport i wygeneruje inny format

1

@apkdedykowane:

Masz maksymalnie pokręcone założenia, to cierpisz.
Szczerze, to zmysłu architektonicznego po delphi-klikaczach ja osobiście bym sie nie spodziewał. Moze to robili w poniedziałek po imieninach cioci?

ps. spotkałem się raz czy drugi, że wiodący program w PHP wykorzystywał javowskie silniki raportowe, w javie to jest dojrzały rynek.
Wspominam tak na marginesie, bo nie sądzę, aby coś QuickReporta ugryzło.

0

Ten program w Delphi jest nadal rozwijany i wychodzą aktualizacje. Ja muszę się tylko podpiąć pod bazę i pokazać to co potrzeba. Niestety te umowy mnie zatrzymały.

Inna opcja, która przyszła mi do głowy to napisanie programu pod Windows łączącego się z bazą i wstawiającego bo innej tabeli wersję umowy w czytelnej formie. Taka konwersja uruchamiana z harmonogramu zadać. Potem mogę sobie tą umowę pobrać PHPem i pokazać jako PDF.

Zapytam zleceniodawcę co z tym robimy :/

2

chcesz powiedzieć że w bazie nie ma tabeli w której ta umowa została zapisana tylko od razu gotowy formularz umowy? Trochę to dziwne? Jak taką umowę znaleźć? Trochę bez sensu.
Ja gdybym robił taką aplikację to jednak utworzył bym tabelę z umowami a później oczywiście zapisał bym gotową umowę w jakimś niemodyfikowalnym formacie, np. pdf aby mieć tzw. oryginał.
Gdyby taka tabela jednak istniała to spokojnie można utworzyć umowę w czymkolwiek pobierając z niej dane na stronę.

1
robertz68 napisał(a):

chcesz powiedzieć że w bazie nie ma tabeli w której ta umowa została zapisana tylko od razu gotowy formularz umowy? Trochę to dziwne? Jak taką umowę znaleźć? Trochę bez sensu.

+1
Pewnie jakiś podsystem drzewiastoo-dokumentowy by docelowo się przydał, co oczywiście da sie zmieścić w relacyjne bazie.

Ale (przypominam że oryginał to Delhi) twórcy pewnie pękli przez tak "abstrakcyjną" strukturą danych. Dla nich istnieją tylko dotykalne rekordy w datasetach. To specyficzny ekosystem.

edit: założymy się? Ja obstawiam, że apka ma jedną jedyną warstwę: spaghetti kod rozszyty na eventach

0

Użytkownikowi przypisujemy do konta umowę. Pobieramy szablon umowy, szablon uzupełniamy o dane <#NUMER_UMOWY>, itd., dokładamy nagłówek i stopkę. Całość jest zapisywana w niezmienialnej formie w tym polu typy BLOB w MySQL i to jako QuickReport (pytałem autora jak to jest kodowane to podesłał informację o pliku .qrp). To jest kompletna umowa użytkownika do wglądu. Szablon umowy może się zmienić a użytkownik ma umowę tak jak miał.

@robertz68
W bazie jest tabela z umowami, mamy tam ID użytkownika. Do tego jest kolejna tabela, taki magazyn z gotowymi umowami.
Powiedz mi, można z poziomu Delphi przekonwertować ten QuickReport do PDF tak, aby źródło PDF wstawić do bazy danych?
Potem bym sobie tylko wyrzucił nagłówek application/pdf w php + żródło PDF z bazy i gotowe :)

1

Można założyć, że *.qrp jest jakimś wewnętrznym formatem danych. Ani to jakiś standard, ani nie wiadomo co to jest.
Kilka lat programowałem w Delphi ( nadal to czasami robię), ale ten brak wsparcia dla nowych technologii jest po prostu wkurzający.
Rozumiem, że w Delphi robi się to szybko i fajnie. Tylko co z tego, jak nie można tego w żaden sposób integrować z innymi systemami.

Niestety jedyne rozwiązanie to zapis tych danych do pdf, który jest standardem. Mam nadzieję, że developerzy mają tego świadomość i pomogą w tym temacie.

1

jak pisałem, dla developera Delphi zapis w bazie umowy w formacie pdf to chwila https://www.quickreport.co.uk/how-to-export-reports-in-quickreport/ zresztą uważam że właśnie tak powinno być to zapisane ze względu na niezmienialność pliku.
plik *.qrp jest to plik danych Quickreport.

1 użytkowników online, w tym zalogowanych: 0, gości: 1