Jak wyeksportować z FastReport4 do pdf

Jak wyeksportować z FastReport4 do pdf
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Dzień dobry

Mam raport który podbiera dane z mySQL-a i normalnie go drukuję poprzez okno drukowania do pdf.

Jak zrobić aby eksportować go bez tego okna na dysk do określonej lokalizacji?
np. D\DANE_FAKTURA

W razie potrzeby mogę wkleić kod- to żadna tajemnica

UglyMan
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Postów:2206
0

Pokaż jak to robisz

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0
Kopiuj
var
partia:string;
datanaglowek:string;
d1r,d2r,d3r:string;
order1:string;
textinput:string;
SprawdzenieRaportu:integer;
ILEznakow:integer;                        

  
  procedure Button1OnClick(Sender: TfrxComponent);   
  begin                      
 
   begin               
   ILEznakow:=length(Edit1.Text);
   end;
              
   begin             
   if ILEznakow <> 5 then
   showmessage ('Za mało lub za dużo cyfr w numerze zlecenia !');     
          
   if ILEznakow = 5 then
   Button1.ModalResult:=mrOK;      
   // Numer zamówienia
   textinput:=ComboBox1.Text+Edit1.Text;      
   replaceparam('pyt1:order1', 'ftstring', (textinput));
   replaceparam('pyt2:order2', 'ftstring', (textinput));
   replaceparam('pyt3:order3', 'ftstring', (textinput));
   replaceparam('pyt4:order4', 'ftstring', (textinput));
   replaceparam('pyt5:order5', 'ftstring', (textinput));
   replaceparam('pyt6:order6', 'ftstring', (textinput));
   replaceparam('pyt7:order7', 'ftstring', (textinput));
   replaceparam('pyt8:order8', 'ftstring', (textinput));
   replaceparam('pyt9:order9', 'ftstring', (textinput));
   replaceparam('pyt10:order10', 'ftstring', (textinput));
   replaceparam('pyt11:order11', 'ftstring', (textinput));       
    
   // Zmiana formatu daty                                                   
   datanaglowek:=DateToStr(<pyt1."DATA_ZLEC">);    
   d1r:=Copy(datanaglowek,1,4);
   d2r:=Copy(datanaglowek,6,2);
   d3r:=Copy(datanaglowek,9,2);      
               
   // Wypełnienie pola z nr zlecenia                                                                      
   Memo10.Text:='PCV/' + d2r + '/' + d1r + '/' + Edit1.Text + '/' + <pyt1."KLIENT">;                         
 
   Report.ReportOptions.Name :='DANE_FAKTURA_' + ComboBox1.Text + Edit1.Text  
  
   end;
  end;                  
      
begin
  
  // Button1.ModalResult:=mrNone;    
  
end.
edytowany 2x, ostatnio: flowCRANE
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
0

frPDF: TfrxPDFExport; - takie coś rzucac na formatkę lub tworzysz dynamicznie w aplikacji konsolowej

frPDF.FileName - tu podajesz nazwę pliku ze ścieżką

frRap.Export(frPDF); -- to zapisuje ci jako pdf

edytowany 3x, ostatnio: woolfik
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Nawet nie wiem gdzie to dokładnie wrzucić.
Jestem samoukiem internetowo-forumowym, wiec wybaczcie moje braki w podstawach.

I pytanie czy ten eksport to przerobienie na zdjęcie czy też będzie można tam kopiować bloki tekstowe?

wymyśliłem sobie ze przycisk generuj nie będzie aktywny dopóki ilość wpisanych znaków nie będzie równa 5 - tylko to jest //

edytowany 1x, ostatnio: m4s
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
2

Odpowiem tak. Nie znam lepszego i bardziej rozbudowanego mechanizmu do raportowania dla delphi niż FastReport. Pracuję na nim od lat i jeszcze nigdy, w żadnej firmie nie zdarzyło mi się, że czegoś się w tym narzędziu nie udało zrobić. Cokolwiek byś sobie nie wymyślił to w FR się da to zrobić jednak faktycznie używanie go wymaga pewnego doświadczenia i wprawy. Jeśli nie masz żadnych podstaw to faktycznie może to być nieco problematyczne. Spróbuję Ci pomóc ale gotowca za Ciebie nie zrobię
screenshot-20210202131214.png

Miang
coś tam takiego było że kolega który był specjalistą od raportów miał problem ale narzędzie dobre
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Nie oczekuję od nikogo gotowca, podpowiedzi , nakierowania
screenshot-20210202133004.png
mój IDE jest dużo biedniejszy, poza tym nie widzę tam takich opcji.
screenshot-20210202133108.png

Można za to z podglądu eksportować do PDF i prawidłowo robi PDF z blokami tekstowymi.

edytowany 2x, ostatnio: m4s
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
2

Otwierasz okno z tzw designera i jest to narzędzie wizualne do edycji raportu również wyprodukowane przez FR

screenshot-20210202134307.png

Natomiast w delphi powinieneś utworzyć aplikację z formą jak na załączonym obrazku.
Zamknij to okno raportu dorzuć na formę (w delphi nie w designerze fastreport) komponent, który ci podałem i wtedy w designerze raportu pojawi Ci się dodatkowa ikonka:
screenshot-20210202134539.png

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Mi raport wychodzi od razu programu produkcyjnego, on jest jakby dodany jako podprogram.
i ja to już mam w preview

screenshot-20210202140107.png
ale export z ikonki nie działa z zielonej strzałki już tak

edytowany 2x, ostatnio: m4s
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
3

No widzisz i trzeba było tak od razu. Niestety programiści twojej aplikacji uznali, że nie można definiować nazwy / lokalizacji na sztywno dla tego raportu. Natomiast oczywiście dla konkretnego raportu takie parametry można zdefiniować ale nie z designera:

screenshot-20210203092647.png
screenshot-20210203092757.png

edytowany 1x, ostatnio: woolfik
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

No dobra wiemy gdzie jest ograniczenie.

natomiast co do zapisz jako, tam jest eksport do pdf, da rade to wykorzystać z kodu raportu?

woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
1

Z kodu aplikacji: TAK
Z kodu raportu: Raczej nie choć pewności nie mam

Musisz zrozumieć mniej więcej jak to działa.
Na formatce w delphi definiujesz dwa obiekty.

  1. Obiekt raportu: TFrxReport
  2. Obiekt eksportu do PDF: TFrxPDFExport
    ponadto programiści dodali jeszcze TFrxDesigner abyś mógł sobie otworzyć okno, na którym pracujesz - ale to jest tylko opcjonalne

Teraz designer, którego używasz ma dostęp tylko do obiektu TFrxReport. Oznacza to ni mniej ni więcej tyle, że każdy obiekt, który zamieścisz w raporcie (Memo, Picture ...) to są obiekty wewnątrz raportu i do nich dostęp masz natomiast do komponentu TfrxPDFExport już nie

screenshot-20210203130352.png

Można co prawda pisać skrypty np w pascalu
screenshot-20210203130435.png
jednak do obiektów z poza raportu dostępu mieć nie będziesz.

Dodam jeszcze, że do raportu można przekazać z aplikacji całego dataseta z danymi lub zdefiniować mu poszczególne zmienne (variables), które przekazywane są do raportu natomiast w drugą stronę czyli z poziomu raportu do aplikacji w zasadzie takiej komunikacji nie ma. A nie ma z tego względu, że to jest raport czyli ma Ci on wygenerować coś z aplikacji, a nie ma służyć do sterowania nią :)

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Ale masz ze mną urwanie głowy...

dlatego się pytam bo ta opcja jest podczas preview Print - to jest szansa ze wystarczy użyć kodu raportu?

screenshot-20210203132505.png

abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
2

żeby się dało eksportować od razu do pdfa bez dodatkowego klikania (otwarcie podglądu, kliknięcia eksportuj do PDFa, wybrania gdzie się ma zapisać itd) to zmiany musi wprowadzić AUTOR APLIKACJI. Z poziomu raportu tego nie zrobisz


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
1

Raport sam z siebie w designerze możesz zmienić i zapisać jako plik z rozszerzeniem np fr3 (lub frx jeśli to VS) i to jest taki fastreportowy xml. Na jego podstawie przy "wydruku" otwiera się okno tzw Preview czyli podglądu z już wypełnionymi danymi np z dataseta. Różnica jest taka, że w designerze na pliku fr3 operujesz na szablonie jak ma wyglądać raport natomiast preview pokazuje Ci jak faktycznie raport będzie wyglądał z danymi. Teraz opcja eksportu jak pokazałeś ma różne formy eksportu, które przewidzieli developerzy. Mało tego plik podglądu również możesz zapisać ale już jako fp3. Nie zmienia to jednak zasadniczo faktu, że dalej operujesz w ramach TFrxReport i do TFrxPDFExport dostępu nie masz. To tak w gestii wyjaśnienia byś zrozumiał natomiast @abrakadaber napisał najjaśniej jak się tylko da co można z tym zrobić :)

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Kolejny pomysł to drukarka pdf ustawiona na sztywno do zapisu pliku pdf na dysku w określonej lokalizacji (można zrobić w trybie cichym)
Show dialog odchacze
screenshot-20210203135548.png

edytowany 1x, ostatnio: m4s
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
0

Drukarka PDF ... no to jest jakiś pomysł :) aczkolwiek przynajmniej z mojego doświadczenia wynika, że te drukarki czasami nieco zmieniają PDF względem tego co widzisz na faktycznym podglądzie. Jednak warto spróbować ;)

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

W tej chwili korzystam z takiej drukarki - dokładnie DORO PDF.
Działa bezbłędnie - dogram drugą taką do systemu- zmienię nazwę ustalę ścieżkę na właściwy katalog i zmienię jej zachowanie aby nie pokazywało się okno pdf po wydruku (bo można)

woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
0

Ogólnie jako, że napisałeś w dziale delphi to podpowiem Ci jak możnaby spróbować to ugryźć inaczej :) Nie będzie to proste (dla kogoś kto nie zna delphi) ale jeśli Ci bardzo zależy i pomysł z drukarką się nie powiedzie to jest to do wykonania.

Komponent TfrxPDFExport odpowiedzialny za eksport do PDF do którego nie masz dostępu, a który odpowiada za fiename i defaultpath przy eksporcie do PDF finalnie po wielu poziomach dziedziczy z TComponent, który dziedziczy z TObject oznacza to, że komponent ten ma swój uchwyt (THandle). Istnieją gotowe narzędzia, które umożliwiając znalezienie tego uchwytu w aplikacji, która generuje twój raport. Znając już uchwyt możesz napisać kawałek aplikacji, który podmieni na tym obiekcie właśnie filename i defaultpath. Co prawda z FR tego nie robiłem ale np wyłączanie enabla na buttonie czy jakieś modyfikacje formy robiłem jakiś czas temu. Myślę, że przy odrobinie "wytrwałości" udałoby się to zrobić. Jedyny minus, przed uruchomieniem raportu konieczne byłoby uruchamianie tej dodatkowej aplikacji (ewentualnie wydziergać z tego jakąś usługę) :)

Zrobić się da, pytanie czy faktycznie jest Ci to na tyle potrzebne aby się tak bawić :)

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Dobrzy ludzie podpowiedzcie jeszcze jak wyciągnąć wartość klucza rejestru i zapisać jako zmienną.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName]
ComputerName

AK
w zmiennej się nie zapisuje. Jak sama nazwa wskazuje, zmienna jest zmienna
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:13 dni
  • Postów:3561
0
m4s napisał(a):

Dobrzy ludzie podpowiedzcie jeszcze jak wyciągnąć wartość klucza rejestru i zapisać jako zmienną.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName]
ComputerName

https://www.google.com/search?client=firefox-b-d&q=read+registry+wstawjęzykjakichcesz


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

No to może inaczej.
Potrzebuję użyć nazwy komputera w skrypcie - konkretnie użyć odpowiedniego folderu w zależności na którym komputerze skrypt został uruchomiony.
Jak wspomniałem wyżej mam Fast report okrojony o pewne klasy

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

A czy dobrzy ludzie podpowiedzą czy można i jak kodem zmienić wartości ComboBox?
Mam 24 pola combo od 1 do 24 i chce użyć ich w pętli do generowania raportu.
w jednym bloku odpytywać po kolei ComboBox1 itd do ComboBox24

Kopiuj
for k := 1 to 24 do                       
begin
 ComboBoxSKRYPT:='ComboBox' + IntToStr(k);    
 EditSKRYPT:='Edit'+ IntToStr(k);                                   
 Showmessage(ComboBoxSKRYPT.Name); // tu jest błąd ze ciągi nie posiadają właściwości lub metod
 Showmessage(EditSKRYPT);
end;
edytowany 3x, ostatnio: flowCRANE
cerrato
nie rób offtopu, jeśli masz nowe pytanie to zadaj je w nowym wątku
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
4

Pomogę ale nie w tym temacie. Zasada jest taka, że 1 temat = 1 wątek na forum

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

To dotyczy tego samego raportu, dlatego nie chciałem rozbijać go na milion tematów.

Raport ewoluuje z dnia na dzień, w tej chwili mam główny blok zapytań powtórzony 24 razy - nieładne to i nie eleganckie. Poza tym sam edycja w w zapytaniu oznacza poprawianie 24 razy w skopiowanych blokach.

Czy mam napisać osobny temat w tym przypadku? @cerrato ???

edytowany 3x, ostatnio: m4s
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Poznań
  • Postów:8775
2

Dotyczy tego samego raportu, ale zupełnie innej sprawy. Moim zdaniem lepiej to by było dać do osobnego wątku.


woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 10 godzin
  • Postów:1595
2

Zasada jest taka, że jak ktoś inny będzie miał podobny problem to po temacie odnajdzie twój wpis i może skorzysta z informacji w nim zawartych bez potrzeby pytania na forum drugi raz o to samo. W przypadku gdy do jednego tematu wrzucamy inne wątki to robi się z tego śmietnik, który nikomu już do niczego się nie przyda. Dlatego trzymamy się zasady 1 problem = 1 temat

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)