eDocEngine VCL
Create documents and reports in 18 formats
Compatibility
Delphi C++Builder

How To Selectively Embed Fonts When Creating PDF Files

Are embedded TrueType fonts consuming too much file size in the PDF files you create? How about embedding fonts selectively - only the ones you need to. Here is the trick to do just that!
By S. Vikram & S. Bhamini

To ensure that a PDF file is truly portable, fonts used in the document need to be embedded in the file.

In case of certain TrueType fonts, such as Arial and Courier New, every Windows system is already bundled with them. Hence, embedding these fonts can only serve to increase size of the PDF file.

A good solution would be to embed only those TrueType fonts that are not always likely to be found on all systems, while excluding those that can reasonably be expected to be present everywhere.

This article deals with such a solution. We will walk you through the steps:

  1. Use gtPDFEngine component for creating the document
    1. Drop the gtPDFEngine component on the form from the eDocEngine tab on the Delphi component palette.
    2. Drop a button component on the form.
    3. Handle the OnClick event of the button and use the gtPDFEngine component to start creating the PDF
  2. Specify properties to selectively embed fonts
    1. Set the property gtPDFEngine1.Preferences.EmbedTrueTypeFonts to indicate that you want to embed fonts used in the PDF document.
    2. Add the names of the fonts you DO NOT want to embed to gtPDFEngine1.FontEmbedExcludeList. (This is the trick!).
    NOTE: Font names are case-sensitive.
      with gtPDFEngine1 do
      begin
        ...
        Preferences.EmbedTrueTypeFonts := etfFull;
        FontEmbedExcludeList.Add('Arial');
        FontEmbedExcludeList.Add('Courier New');
        FontEmbedExcludeList.Add('Verdana');
        ...
    
  3. Render text in the PDF using different fonts
    1. Set gtPDFEngine1.Font for the text to be rendered.
    2. Render the text using the method gtPDFEngine1.TextOut(...)
    3. Repeat these steps for more text with different fonts.
    4. Complete the rest of the code and run the project to generate the PDF.
        ...
        Font.Name := 'Arial';
        TextOut(1, 1,
            'This sentence is in Arial font.');
        Font.Name := 'Times New Roman';
        TextOut(1, 2,
            'This sentence is in Times New Roman font.');
        Font.Name := 'Courier New';
        TextOut(1, 3,
            'This sentence is in Courier New font.');
        ...
    
  4. Verify which of the fonts have been embedded in the generated PDF file
    1. Open the generated PDF file in Adobe® Reader®.
    2. Choose File » Document Properties ... option from the menu or press the Ctrl+D keyboard shortcut.
    3. Switch to Fonts tab.
    4. You should now be able to confirm that select fonts have not been embedded. See screenshot.
---o0O0o---

Downloads:

---o0O0o---

Our .NET Developer Tools
Gnostice Document Studio .NET

Multi-format document-processing component suite for .NET developers.

PDFOne .NET

A .NET PDF component suite to create, edit, view, print, reorganize, encrypt, annotate, and bookmark PDF documents in .NET applications.

Our Delphi/C++Builder developer tools
Gnostice Document Studio Delphi

Multi-format document-processing component suite for Delphi/C++Builder developers, covering both VCL and FireMonkey platforms.

eDocEngine VCL

A Delphi/C++Builder component suite for creating documents in over 20 formats and also export reports from popular Delphi reporting tools.

PDFtoolkit VCL

A Delphi/C++Builder component suite to edit, enhance, view, print, merge, split, encrypt, annotate, and bookmark PDF documents.

Our Java developer tools
Gnostice Document Studio Java

Multi-format document-processing component suite for Java developers.

PDFOne (for Java)

A Java PDF component suite to create, edit, view, print, reorganize, encrypt, annotate, bookmark PDF documents in Java applications.

Our Platform-Agnostic Cloud and On-Premises APIs
StarDocs

Cloud-hosted and On-Premises REST-based document-processing and document-viewing APIs

Privacy | Legal | Feedback | Newsletter | Blog | Resellers © 2002-2024 Gnostice Information Technologies Private Limited. All rights reserved.