diff options
author | Jean-Marc Levecque <jean-marc.levecque@jmlesite.fr> | 2011-10-16 17:11:16 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2011-10-16 17:11:16 +0200 |
commit | a64ab297c65d7936248752f27559951c42aa3063 (patch) | |
tree | 8c5892af4d114fa51557e198239ff83cc3956ca4 | |
parent | 9c0a644df44547bf6dd9cf0a1250084b237eeae4 (diff) | |
download | fpGUI-a64ab297c65d7936248752f27559951c42aa3063.tar.xz |
Various PDF reporting changes.
- Fixed some memory leaks by correctly freeing objects
- Updated the PDF Demo to use a local reporting variable
- Removed the global Imprime variable
- Some various other changes
4 files changed, 145 insertions, 159 deletions
diff --git a/extras/contributed/report_tool/demo/u_demo.pas b/extras/contributed/report_tool/demo/u_demo.pas index 0759bbec..5f8d6cf4 100644 --- a/extras/contributed/report_tool/demo/u_demo.pas +++ b/extras/contributed/report_tool/demo/u_demo.pas @@ -10,11 +10,12 @@ uses ShellApi, {$endif} fpg_main, fpg_base, - fpg_form, fpg_button, fpg_label, fpg_dialogs, fpg_utils; + fpg_form, fpg_button, fpg_label, fpg_dialogs, fpg_utils, U_Imprime; type TF_Demo = class(TfpgForm) private + FImprime: T_Imprime; L_Pdf: TfpgLabel; Bt_PdfEmptyPage: TfpgButton; Bt_PdfSimpleText: TfpgButton; @@ -107,7 +108,7 @@ var implementation uses - U_Imprime, U_Commande, U_Pdf, U_ReportImages; + U_Commande, U_Pdf, U_ReportImages; var ChartValues: array[0..18] of Integer; @@ -121,8 +122,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeEmptyPage(False); @@ -173,8 +174,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeSimpleText(False); @@ -225,8 +226,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeMultiPages(False); @@ -277,8 +278,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeMultiSections(False); @@ -329,8 +330,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeOutlines(False); @@ -381,8 +382,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeCadres(False); @@ -433,8 +434,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeColor(False); @@ -485,8 +486,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeLines(False); @@ -537,8 +538,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeGrid(False); @@ -589,8 +590,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeGraph(False); @@ -641,8 +642,8 @@ var FichierPdf: string; FluxFichier: TFileStream; begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin // Langue:= Version; ImprimeSurf(False); @@ -689,8 +690,8 @@ end; procedure TF_Demo.Bt_VisuEmptyPageClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'EmptyPage.pdf'; @@ -701,8 +702,8 @@ end; procedure TF_Demo.Bt_VisuSimpleTextClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'SimpleText.pdf'; @@ -713,8 +714,8 @@ end; procedure TF_Demo.Bt_VisuMultiPagesClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'MultiPages.pdf'; @@ -725,8 +726,8 @@ end; procedure TF_Demo.Bt_VisuMultiSectionsClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'MultiSections.pdf'; @@ -737,8 +738,8 @@ end; procedure TF_Demo.Bt_VisuOutlinesClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'Outlines.pdf'; @@ -749,8 +750,8 @@ end; procedure TF_Demo.Bt_VisuCadresClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'Cadres.pdf'; @@ -761,8 +762,8 @@ end; procedure TF_Demo.Bt_VisuColorClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'Color.pdf'; @@ -773,8 +774,8 @@ end; procedure TF_Demo.Bt_VisuLinesClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'Lines.pdf'; @@ -785,8 +786,8 @@ end; procedure TF_Demo.Bt_VisuGridClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'Grid.pdf'; @@ -797,8 +798,8 @@ end; procedure TF_Demo.Bt_VisuGraphClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'Graph.pdf'; @@ -809,8 +810,8 @@ end; procedure TF_Demo.Bt_VisuSurfClick(Sender: TObject); begin -Imprime:= T_Imprime.Create; -with Imprime do +FImprime:= T_Imprime.Create; +with FImprime do begin //Langue:= Version; DefaultFile:= 'Surface.pdf'; @@ -881,7 +882,7 @@ end; procedure TF_Demo.ImprimeEmptyPage(Preview: Boolean); begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -898,7 +899,7 @@ procedure TF_Demo.ImprimeSimpleText(Preview: Boolean); var FtTexte1,FtTexte2,FtTexte3: Integer; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -926,7 +927,7 @@ var FtTitre,FtTexte: Integer; Cpt: Integer; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -953,7 +954,7 @@ var ColDefSect2: Integer; Cpt: Integer; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -1019,7 +1020,7 @@ var ColDefSect2: Integer; Cpt: Integer; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -1085,7 +1086,7 @@ var TsFin,TsNorm,TsEpais: Integer; IlTitre,IlTexte: Integer; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -1126,7 +1127,7 @@ var Col1,Col2,Col3: Integer; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -1186,7 +1187,7 @@ var Col1,Col2,Col3: Integer; BdRect,BdColn,BdFinCol: Integer; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -1253,7 +1254,7 @@ const Col5Pos= 165; Col5Wid= 35; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -1362,7 +1363,7 @@ var const Base= 150; begin -with Imprime do +with FImprime do begin // define orientation, page format, measurement unit, language, preview (true) or print (false) Debut(oPortrait,A4,msMM,Langue,Preview); @@ -1413,29 +1414,29 @@ procedure TF_Demo.ImprimeSurf(Preview: Boolean); var FtTitre,FtTexte: Integer; IlTitre,IlTexte: Integer; +begin +with FImprime do begin - with Imprime do - begin - // define orientation, page format, measurement unit, language, preview (true) or print (false) - Debut(oPortrait,A4,msMM,Langue,Preview); - // create a new section and define the margins with an additional one due to frames drawing - Section(10,10,10,10); - // create the fonts to be used (use one of the 14 Adobe PDF standard fonts) - FtTitre:= Fonte('helvetica-15:bold',clBlack); - FtTexte:= Fonte('helvetica-7',clBlack); - // create line spacings to be used - IlTitre:= Interligne(3,0,3); - IlTexte:= Interligne(1,0,0); - EcritEnTete(cnCenter,lnFin,'SHOWING SURFACE',ColDefaut,FtTitre,IlTitre); - // write page number and total of pages on each page - NumPagePied(cnRight,lnFin,'Page','of',True,ColDefaut,FtTexte,IlTexte); - // paint some surfaces - SurfPage([40,40,100],[50,110,80],clGreen); - SurfPage([30,50,150,80,120,130],[120,180,180,160,140,120],clFuchsia); - // preparation is finished, so create PDF objects - Fin; - end; + // define orientation, page format, measurement unit, language, preview (true) or print (false) + Debut(oPortrait,A4,msMM,Langue,Preview); + // create a new section and define the margins with an additional one due to frames drawing + Section(10,10,10,10); + // create the fonts to be used (use one of the 14 Adobe PDF standard fonts) + FtTitre:= Fonte('helvetica-15:bold',clBlack); + FtTexte:= Fonte('helvetica-7',clBlack); + // create line spacings to be used + IlTitre:= Interligne(3,0,3); + IlTexte:= Interligne(1,0,0); + EcritEnTete(cnCenter,lnFin,'SHOWING SURFACE',ColDefaut,FtTitre,IlTitre); + // write page number and total of pages on each page + NumPagePied(cnRight,lnFin,'Page','of',True,ColDefaut,FtTexte,IlTexte); + // paint some surfaces + SurfPage([40,40,100],[50,110,80],clGreen); + SurfPage([30,50,150,80,120,130],[120,180,180,160,140,120],clFuchsia); + // preparation is finished, so create PDF objects + Fin; end; +end; constructor TF_Demo.Create(AOwner: TComponent); var diff --git a/extras/contributed/report_tool/reportengine/u_commande.pas b/extras/contributed/report_tool/reportengine/u_commande.pas index 527b08db..0c35c44b 100644 --- a/extras/contributed/report_tool/reportengine/u_commande.pas +++ b/extras/contributed/report_tool/reportengine/u_commande.pas @@ -402,11 +402,33 @@ FColonnes:= TList.Create; end; destructor T_Section.Destroy; +var + Cpt: Integer; begin +if FPages.Count> 0 +then + for Cpt:= 0 to Pred(FPages.Count) do + T_Page(FPages[Cpt]).Free; FPages.Free; +if FEntete.Count> 0 +then + for Cpt:= 0 to Pred(FEntete.Count) do + T_Commande(FEntete[Cpt]).Free; FEnTete.Free; +if FPied.Count> 0 +then + for Cpt:= 0 to Pred(FPied.Count) do + T_Commande(FPied[Cpt]).Free; FPied.Free; +if FCadres.Count> 0 +then + for Cpt:= 0 to Pred(FCadres.Count) do + T_Commande(FCadres[Cpt]).Free; FCadres.Free; +if FColonnes.Count> 0 +then + for Cpt:= 0 to Pred(FColonnes.Count) do + T_Commande(FColonnes[Cpt]).Free; FColonnes.Free; inherited Destroy; end; @@ -415,7 +437,7 @@ procedure T_Section.LoadPage(APageNum: Integer); begin Inc(FNbPages); APage:= T_Page.Create(FNbPages,APageNum); -Pages.Add(APage); +FPages.Add(APage); end; procedure T_Section.LoadCmdEnTete; @@ -433,7 +455,7 @@ var Cpt: Integer; begin for Cpt:= 0 to Pred(ALigne.Commandes.Count) do - T_Page(Pages[Pred(Pages.Count)]).Commandes.Add(ALigne.Commandes.Items[Cpt]); + T_Page(Pages[Pred(FPages.Count)]).Commandes.Add(ALigne.Commandes.Items[Cpt]); ALigne.FHeight:= 0; ALigne.Commandes.Clear; end; @@ -468,7 +490,7 @@ var Cpt: Integer; begin for Cpt:= 0 to Pred(AGroupe.Commandes.Count) do - T_Page(Pages[Pred(Pages.Count)]).Commandes.Add(AGroupe.Commandes.Items[Cpt]); + T_Page(Pages[Pred(FPages.Count)]).Commandes.Add(AGroupe.Commandes.Items[Cpt]); AGroupe.FGroupeHeight:= 0; AGroupe.Commandes.Clear; end; @@ -482,7 +504,7 @@ end; procedure T_Section.LoadEspacePage(APosY: Single; AColonne: Integer; AHeight: Single; AFond: Integer); begin ACommande:= T_Espace.Create(APosY,AColonne,AHeight,AFond); -T_Page(Pages[Pred(Pages.Count)]).Commandes.Add(ACommande); +T_Page(Pages[Pred(FPages.Count)]).Commandes.Add(ACommande); end; procedure T_Section.LoadEspacePied(APosY: Single; AColonne: Integer; AHeight: Single; AFond: Integer); @@ -505,7 +527,7 @@ end; procedure T_Section.LoadTrait(APosXDeb,APosYDeb: Single; AColonne: Integer; APosXFin,APosYFin: Single; AStyle: Integer); begin ACommande:= T_Trait.Create(APosXDeb,APosYDeb,AColonne,AStyle,APosXFin,APosYFin); -T_Page(Pages[Pred(Pages.Count)]).Commandes.Add(ACommande); +T_Page(Pages[Pred(FPages.Count)]).Commandes.Add(ACommande); end; procedure T_Section.LoadTraitHorizEnTete(APosXDeb,APosYDeb: Single; AColonne: Integer; APosXFin,APosYFin: Single; @@ -518,7 +540,7 @@ end; procedure T_Section.LoadTraitHorizPage(APosXDeb,APosYDeb: Single; AColonne: Integer; APosXFin,APosYFin: Single; AStyle: Integer); begin ACommande:= T_Trait.Create(APosXDeb,APosYDeb,AColonne,AStyle,APosXFin,APosYFin); -T_Page(Pages[Pred(Pages.Count)]).Commandes.Add(ACommande); +T_Page(Pages[Pred(FPages.Count)]).Commandes.Add(ACommande); end; procedure T_Section.LoadTraitHorizPied(APosXDeb,APosYDeb: Single; AColonne: Integer; APosXFin,APosYFin: Single; AStyle: Integer); @@ -535,7 +557,7 @@ end; procedure T_Section.LoadSurf(APos: T_Points; AColor: TfpgColor); begin Acommande:= T_Surface.Create(APos,AColor); -T_Page(Pages[Pred(Pages.Count)]).Commandes.Add(ACommande); +T_Page(Pages[Pred(FPages.Count)]).Commandes.Add(ACommande); end; function T_Section.GetCmdPage(NumPage: Integer): TList; @@ -551,7 +573,13 @@ FCommandes:= TList.Create; end; destructor T_Page.Destroy; +var + Cpt: Integer; begin +if FCommandes.Count> 0 +then + for Cpt:= 0 to Pred(FCommandes.Count) do + T_Commande(FCommandes[Cpt]).Free; FCommandes.Free; inherited Destroy; end; @@ -560,12 +588,18 @@ constructor T_Groupe.Create; begin FLineHeight:= 0; FGroupeHeight:= 0; -Commandes:= TList.Create; +FCommandes:= TList.Create; end; destructor T_Groupe.Destroy; +var + Cpt: Integer; begin -Commandes.Free; +if FCommandes.Count> 0 +then + for Cpt:= 0 to Pred(FCommandes.Count) do + T_Commande(FCommandes[Cpt]).Free; +FCommandes.Free; inherited Destroy; end; @@ -576,7 +610,13 @@ FCommandes:= TList.Create; end; destructor T_Ligne.Destroy; +var + Cpt: Integer; begin +if FCommandes.Count> 0 +then + for Cpt:= 0 to Pred(FCommandes.Count) do + T_Commande(FCommandes[Cpt]).Free; FCommandes.Free; inherited Destroy; end; diff --git a/extras/contributed/report_tool/reportengine/u_imprime.pas b/extras/contributed/report_tool/reportengine/u_imprime.pas index 87b304e1..9f706924 100644 --- a/extras/contributed/report_tool/reportengine/u_imprime.pas +++ b/extras/contributed/report_tool/reportengine/u_imprime.pas @@ -413,8 +413,6 @@ type end; var - Imprime: T_Imprime; - Infos: record Titre: string; Auteur: string; @@ -444,7 +442,6 @@ uses const PPI= 72; InchToMM= 25.4; - Cent= 100; function T_Imprime.Dim2Pixels(Value: Single): Single; begin @@ -712,48 +709,6 @@ with F_Visu do end; end; -procedure LibereCommandesPages(ACommandes: PPage); -var - Cpt: Integer; -begin -with T_Page(ACommandes) do - if Commandes.Count> 0 - then - begin - for Cpt:= 0 to Pred(Commandes.Count) do - T_Commande(Commandes[Cpt]).Free; - Commandes.Free; - end; -end; - -procedure LiberePages(APageSect: PSection); -var - Cpt: Integer; -begin -with T_Section(APageSect) do - if Pages.Count> 0 - then - begin - for Cpt:= 0 to Pred(Pages.Count) do - LibereCommandesPages(Pages[Cpt]); - Pages.Free; - end; -end; - -procedure LibereColonnes(AColSect: PSection); -var - Cpt: Integer; -begin -with T_Section(AColSect) do - if Colonnes.Count> 0 - then - begin - for Cpt:= 0 to Pred(Colonnes.Count) do - T_Colonne(Colonnes[Cpt]).Free; - Colonnes.Free; - end; -end; - procedure T_Imprime.ImprimePage(PageNumero: Integer); var CptSect,CptPage,CptCmd: Integer; @@ -2140,13 +2095,8 @@ var begin if Sections.Count> 0 then - begin for Cpt:= 0 to Pred(Sections.Count) do - begin - LiberePages(Sections[Cpt]); - LibereColonnes(Sections[Cpt]); - end; - end; + T_Section(Sections[Cpt]).Free; Sections.Free; if Fontes.Count> 0 then @@ -2736,8 +2686,6 @@ then end; procedure T_Imprime.FinGroupe(SautPage: Boolean= False); -var - Cpt: Integer; begin T_Section(Sections[Pred(Sections.Count)]).LoadCmdGroupeToPage; FGroupe:= False; diff --git a/extras/contributed/report_tool/reportengine/u_pdf.pas b/extras/contributed/report_tool/reportengine/u_pdf.pas index ebb83603..facfd399 100644 --- a/extras/contributed/report_tool/reportengine/u_pdf.pas +++ b/extras/contributed/report_tool/reportengine/u_pdf.pas @@ -251,7 +251,7 @@ type procedure CreatePreferences; function CreatePages(Parent: Integer): Integer; function CreatePage(Parent,Haut,Larg: Integer): Integer; - function CreateOutlines(Parent: Integer): Integer; + function CreateOutlines: Integer; function CreateOutline(Parent,SectNo,PageNo: Integer; SectTitre: string): Integer; procedure CreateFont(NomFonte: string; NumFonte: Integer); function CreateContents: Integer; @@ -352,16 +352,6 @@ then Result:= FontName+Chaine1; end; -function ColorToString(Couleur: Integer): string; -var - Red,Green,Blue: Integer; -begin -Red:= Couleur div 65535; -Couleur:= Couleur mod 65535; -Green:= Couleur div 255; -Blue:= Couleur mod 255; -end; - // object methods constructor TPdfObjet.Create; @@ -500,7 +490,13 @@ FArray:= TList.Create; end; destructor TPdfArray.Destroy; +var + Cpt: Integer; begin +if FArray.Count> 0 +then + for Cpt:= 0 to Pred(FArray.Count) do + TPdfObjet(FArray[Cpt]).Free; FArray.Free; inherited; end; @@ -514,7 +510,7 @@ for Cpt:= 0 to Pred(FStream.Count) do if TPdfObjet(FStream[Cpt]) is TPdfFonte then TPdfFonte(FStream[Cpt]).WriteFonte(AFlux); - if TPdfColor(FStream[Cpt]) is TPdfColor + if TPdfObjet(FStream[Cpt]) is TPdfColor then TPdfColor(FStream[Cpt]).WriteColor(AFlux); if TPdfObjet(FStream[Cpt]) is TPdfText @@ -547,7 +543,13 @@ FStream:= TList.Create; end; destructor TPdfStream.Destroy; +var + Cpt: Integer; begin +if FStream.Count> 0 +then + for Cpt:= 0 to Pred(FStream.Count) do + TPdfObjet(FStream[Cpt]).Free; FStream.Free; inherited; end; @@ -876,9 +878,7 @@ end; procedure TPdfDocument.WriteObjet(const AObjet: Integer; const AFlux: TStream); var - Dictionaire: TPdfDictionary; Long: TPdfInteger; - Fin: Integer; Flux: TMemoryStream; begin WriteChaine(IntToStr(AObjet)+' 0 obj'+CRLF,AFlux); @@ -1095,10 +1095,9 @@ TPdfArray(TPdfDicElement(Dictionaire.FElement[Dictionaire.ElementParCle('ProcSet Result:= Pred(FXRefObjets.Count); end; -function TPdfDocument.CreateOutlines(Parent: Integer): Integer; +function TPdfDocument.CreateOutlines: Integer; var Outlines: TPdfXRef; - XRefObjets: TPdfReference; Nom: TPdfName; Count: TPdfInteger; begin @@ -1308,12 +1307,11 @@ end; constructor TPdfDocument.CreateDocument; var - Cpt,CptSect,CptPage,CptFont,NumFont,TreeRoot,ParentPage,PageNum,NumPage: Integer; + Cpt,CptSect,CptPage,NumFont,TreeRoot,ParentPage,PageNum,NumPage: Integer; OutlineRoot,ParentOutline,PageOutline,NextOutline,NextSect,NewPage: Integer; Dictionaire: TPdfDictionary; XRefObjets,PrevOutline,PrevSect: TPdfReference; Nom: TPdfName; - Trouve: Boolean; FontName: string; begin inherited Create; @@ -1330,7 +1328,7 @@ then if Outline then begin - OutlineRoot:= CreateOutlines(ParentOutline); + OutlineRoot:= CreateOutlines; // add outline reference to catalog dictionary XRefObjets:= TPdfReference.CreateReference(Pred(FXRefObjets.Count)); TPdfDictionary(TPdfXRef(FXRefObjets[Catalogue]).FObjet).AddElement('Outlines',XRefObjets); @@ -1441,7 +1439,6 @@ then NumFont:= 0; for Cpt:= 0 to Pred(Fontes.Count) do begin - Trouve:= False; FontName:= ExtractBaseFontName(T_Fonte(Fontes[Cpt]).GetFonte.FontDesc); CreateFont(FontName,NumFont); Inc(NumFont); |