fcl-pdf

From Free Pascal wiki
Jump to navigationJump to search

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;

See also