Difference between revisions of "fcl-pdf"
From Lazarus wiki
Jump to navigationJump to searchLine 61: | Line 61: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | === Enumerate available fonts === | ||
+ | Example by forum member '''paweld'''. | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | uses | ||
+ | fppdf, fpttf; | ||
+ | |||
+ | procedure TForm1.FormCreate(Sender: TObject); | ||
+ | var | ||
+ | g: TFPFontCacheList; | ||
+ | i: Integer; | ||
+ | begin | ||
+ | g := TFPFontCacheList.Create; | ||
+ | g.SearchPath.Add('C:\Windows\Fonts'); | ||
+ | g.BuildFontCache; | ||
+ | for i := 0 to g.Count - 1 do | ||
+ | memo1.Lines.Add(Format('File name: %s > Font name: %s > Family: %s', [g.Items[i].FileName, g.Items[i].HumanFriendlyName, g.Items[i].FamilyName])); | ||
+ | g.Free; | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | |||
== See also == | == See also == | ||
* [[Package List]] | * [[Package List]] |
Revision as of 12:32, 16 August 2023
About
fcl-pdf is PDF implementation.
The PDF generator has the following features:
- Support for basic shapes.
- Support for basic line styles.
- Dictionary support.
- Multi-page PDF.
- Image support.
- TTF Font support.
- Font embedding.
- Unicode font support.
- Stream Compression.
- Image embedding.
- Several paper types.
- Portrait/Landscape.
- Support for multiple units.
- Rotation matrix system.
- PDF creator information.
- Output validates by several PDF validators.
Contains units:
- fppdf
- fpparsettf
- fpttf
- fpttfencodings
Examples
Writing few lines, without embedded fonts
Example by forum member Moritz, fixed by member paweld. Code disables embedding of fonts into PDF.
procedure TMainForm.TestButtonClick(Sender: TObject);
var
FontID, FontBoldID: Integer;
Document: TPDFDocument;
Section: TPDFSection;
Page: TPDFPage;
begin
Document := TPDFDocument.Create(nil);
Document.FontDirectory := 'C:\Windows\Fonts';
Document.StartDocument;
FontID := Document.AddFont('arial.ttf', 'Arial');
FontBoldID := Document.AddFont('arialbd.ttf', 'Arial Bold');
Document.Options := Document.Options + [poPageOriginAtTop, poNoEmbeddedFonts];
Section := Document.Sections.AddSection;
Page := Document.Pages.AddPage;
Section.AddPage(Page);
Page.SetFont(FontID, 11);
Page.WriteText(20, 20, 'This is normal text');
Page.SetFont(FontBoldID, 11);
Page.WriteText(20, 30, 'This is bold text');
Document.SaveToFile('output.pdf');
end;
Enumerate available fonts
Example by forum member paweld.
uses
fppdf, fpttf;
procedure TForm1.FormCreate(Sender: TObject);
var
g: TFPFontCacheList;
i: Integer;
begin
g := TFPFontCacheList.Create;
g.SearchPath.Add('C:\Windows\Fonts');
g.BuildFontCache;
for i := 0 to g.Count - 1 do
memo1.Lines.Add(Format('File name: %s > Font name: %s > Family: %s', [g.Items[i].FileName, g.Items[i].HumanFriendlyName, g.Items[i].FamilyName]));
g.Free;
end;