Forum > Componenti Aggiuntivi

[Risolto] lazReport - primi passi - 2.a parte

(1/6) > >>

petrusic:
Non metto mani ad un report in Lazarus da quasi un anno, anche se, dopo quanto appreso e messo in pratica lo scorso anno, ho potuto incontrare alcune tipicità che vorrei affrontare in questa occasione per  migliorarmi.
Nel nuovo report in costruzione vorrei impostare un modello di stampa con il Formato A5 e vorrei produrre un file in formato PDF da stampare, eventualmente, successivamente alla sua produzione.

Quindi le domande sono:
- come impostare il formato A5;
- come produrre  una stampa sul file

L'ultima domanda nasce dal fatto che oggi, riesco a stampare soltanto se comando la stampa agendo sull'icona "Print Report" che compare nella finestra video del Report creato con LazReport. Non ho perciò la possibilità in quel momento  di optare per destinare l'output ad un file PDF, piuttosto  che alla stampante.

xinyiman:
Per stampare in pdf da lazreport devi usare trascinare sulla form il componente TfrTNPDFExport (ad esempio con il nome frTNPDFExport1), per farlo devi avere installato il pacchetto che trovi nella directory directory_dove_è_installato_lazarus\components\lazreport\source\addons\pdfexport\lazreportpdfexport.lpk


Detto questo poi ipotizzando che il tuo oggetto TfrReport si chiami MyReport ed hai già provveduto a disegnarlo, devi fare quanto segue


--- Codice: ---
               if MyReport.PrepareReport then
               begin
                    SaveDialog1.Filter:='PDF files (*.pdf)|*.pdf';
                    SaveDialog1.FileName:='NomeDelFile_' + StringReplace(DateToStr(Now()),'/','', [rfReplaceAll]) + '_' + StringReplace(TimeToStr(Now()) ,':','.', [rfReplaceAll]);
                    if SaveDialog1.Execute then
                    begin
                         if uppercase(ExtractFileExt(SaveDialog1.FileName))='.PDF' then
                         begin
                              //non faccio niente, il nome è già corretto
                              NomePDF:=SaveDialog1.FileName;
                         end
                         else
                         begin
                              //il nome non è corretto, quindi ci aggiungo il .pdf alla fine
                              NomePDF:=SaveDialog1.FileName + '.pdf';
                         end;
                         Screen.Cursor := crHourglass;
                         MyReport.ExportTo(TFrTNPDFExportFilter, NomePDF);
                         Screen.Cursor := crDefault;
                         ShowMessage('Creazione del file PDF terminata.');
                    end;
               end;

--- Termina codice ---

Detto questo poi rispondo anche alla tua domanda di come mandare in stampa senza passare dalla preview, io ipotizzo che tu usi il comando

MyReport.ShowReport

che apre la preview, se vuoi mandare direttamente in stampa usa il seguente codice


--- Codice: ---

               if GedDefaultPrinter(NomeStampante)=FALSE then
               begin
                    ShowMessage('Nessuna stampante predefinita.');
               end
               else
               begin
                    MyReport.ChangePrinter(printer.PrinterIndex, -1);
                    if MyReport.PrepareReport then
                    begin
                         MyReport.PrintPreparedReport('',1) {Primo parametro è il numero di pagina, se è vuoto le fa tutte, il secondo è il numero di copie}
                    end
                    else
                    begin
                         ShowMessage('Stampante non raggiungibile.');
                    end;
               end;


--- Termina codice ---

Ti ricordo poi che quando l'eseguibile è in esecuzione puoi sempre lanciare il desiger report con il comando

MyReport.DesignReport;

Spero di essere stato esaustivo. Ciao e buon lavoro

xinyiman:
Per il formato A5 devi dal design report andare su File -> Opzioni pagina -> nella tab Carta cambiare la dimensione dal menù a tendina. Ovviamente meglio se lo fai prima di disegnare il tuo report.

Ciao

petrusic:

--- Citazione da: xinyiman - Febbraio 23, 2023, 09:12:10 am ---Per stampare in pdf da lazreport devi usare trascinare sulla form il componente TfrTNPDFExport (ad esempio con il nome frTNPDFExport1), per farlo devi avere installato il pacchetto che trovi nella directory directory_dove_è_installato_lazarus\components\lazreport\source\addons\pdfexport\lazreportpdfexport.lpk

--- Termina citazione ---

Grazie per tutte le tue preziose indicazioni. e comincio da quella che sta alla base della produzione srtampe in PDF.

Ho trovato il file lazreportpdfexport.lpk, ho trovato anche il file tfrtnpdfexport.png, contenente l'icona corrispondente,  però non trovo l'icona nella finestra di Lazarus-IDE -> LazReport, come puoi riscontrare nell'allegato.

Ho cercato il pacchetto fra quelli installati/installabili, ma non l'ho trovato, perciò sono sempre in difficoltà, perchè nonostante che abbia trovato i file corrispondente, sembrerebbe che il pacchetto non è installato.

Devo installarlo manualmente? Come?          S.O. attuale: Linux Ubuntu 22.04.2 LTS)

xinyiman:
Se non lo trovi devi installarlo. Devi andare su Pacchetto -> Apri il file del pacchetto (.lpk) -> Selezionare il file lpk che ti ho detto nel post sopra -> Premi sul pulsante Compila. Quando ha finito premi sul pulsante Use->Installa

Questa è la procedura d'installazione. Ricorda che questo pacchetto ha una dipendenza da pack_powerpdf. Quindi prima devi installare lui. Pack_powerpdf non lo trovi già sul tuo sistema quindi devi andare su Pacchetto -> Online package Manager cercare nella lista la voce PowerPDF e dopo averla selezionata premere sul pulsante Install.

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa