fcl-pdf
From Free Pascal wiki
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;