iText 7 pdfCalligraph

pdfCalligraph is an iText 7 add-on that allows you to unlock advanced typographic features in PDF. It also allows you to expand your document workflow with global languages and writing systems, that include proper rendering and are suitable for data processing.

Features & Benefits

Click the arrow to expand features and benefits.


Core capabilities

Leverage advanced font features

 

Such as OpenType features, kerning, ligatures and glyph substitutes.

Automatic detection of language / writing system

Required font features are enabled and applied automatically. Manual configuration is possible. pdfCalligraph integrates seamlessly with iText Core and pdfHTML

Transparent support for many languages

Including languages that use Brahmic, Arabic and Hebrew scripts.

Typographic alignment for all writing systems

Flush left, flush right, centered and justified alignment.


An example of pdfCalligraph

How does it work?

pdfCalligraph is an iText 7 add-on for advanced typography, supporting the typographic features that are required for writing systems used for such as Arabic, Hindi, Sanskrit and others. It automatically detects which writing system needs to be used in the creation of the PDF document and makes glyph substitutions and reordering based on writing system and font specific information. If necessary, it also adds information about the reading order - for instance, Arabic is read from right to left rather than left to right.

pdfCalligraph can also be used to include optional typographic features, e.g. to beautify or stylize text using the Latin alphabet.

A basic example of the use of pdfCallligraph for an Arabic document:

public void writeArabicDocument() throws IOException {
    Document arabicPdf = new Document(new PdfDocument(new PdfWriter("/path/to/arabic.pdf")));
 
    // Arabic text starts near the top right corner of the page
    arabicPdf.setTextAlignment(TextAlignment.RIGHT);
 
    // create a font, and make it the default for the document
    PdfFont f = PdfFontFactory.createFont("/path/to/DroidKufi-Regular.ttf", PdfEncodings.IDENTITY_H, true);
    arabicPdf.setFont(f);
 
    // add content: السلام عليكم (as-salaamu 'aleykum - peace be upon you)
    arabicPdf.add(new Paragraph("\u0627\u0644\u0633\u0644\u0627\u0645 \u0639\u0644\u064A\u0643\u0645"));
 
    arabicPdf.close();
}

The output looks like this:

pdfCalligraph output Arabic example

Another basic example of pdfCalligraph for a mixed document with automatic recognition & automatically applying the right font:

public void writeMixedDocument() throws IOException {
    Document mixedDoc = new Document(new PdfDocument(new PdfWriter("/path/to/mixed.pdf")));
 
    // create a repository of fonts and let the document use it
    // optional if entire document is monolingual
    FontSet set = new FontSet();
    set.addFont("/path/to/NotoSansArabic-Regular.ttf");
    set.addFont("/path/to/arial.ttf");
    set.addFont("/path/to/NotoSansGurmukhi-Regular.ttf");
    mixedDoc.setFontProvider(new FontProvider(set));
 
    // set the default document font to the family name of one of the entries in the FontSet
    mixedDoc.setProperty(Property.FONT, "Noto");
 
    // "Punjabi, پنجابی, ਪੰਜਾਬੀ"
    // The word Punjabi, written in the Latin, Arabic (Shahmukhi), and Gurmukhi alphabets
    String content = "Punjabi, \u067E\u0646\u062C\u0627\u0628\u06CC, \u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40";
    mixedDoc.add(new Paragraph(content));
    mixedDoc.close();
}

The output looks like this:

pdfCalligraph output Mixed document example

Some examples of rendering with and without pdfCalligraph:

pdfCalligraph comparison

Discover our resources

Video

Video

 

Presentation

Technical presentation

White paper

White paper

Blog

Blog

Download free trial

Free trial

Documentation

Other


Our commercial licensing models


Unit-based license
server
Unit-based license
end-user device
Volume-based
license
OEM license
server
OEM license
end-user device
Description

Licensed perpetually.

Installed on your own server, virtual machine or node installation.

Licensed perpetually.

Installed on your own end-user device.

Annual license.

Installed on a hosted server platform.

Licensed perpetually.

Embedded into your server application distributed to your customers.

Installed on a server, virtual machine or node installation.

Licensed perpetually.

Embedded into your end-user application distributed to your customers.

Installed on a end-user device (desktop, laptop, tablet, etc.).

Available for
Java and .NET platform
Conditions

1 per server, virtual machine or node.

Based on number of servers.




Unlimited number of PDFs.

1 per end-user device.


Based on number of end-user devices.




Unlimited number of PDFs.

Per application.


Counted as amount of PDFs produced.




Specified number of PDFs per year.

Always per application.


Based on number of servers deployed, min. volume is 10 servers.



Unlimited number of PDFs, unlimited distribution time.

Always per application.


Based on number of end-user devices deployed, min. volume is 100 end-user devices (desktops).

Unlimited number of PDFs, unlimited distribution time.

Professional support
and maintenance

Annually renewable at 20 % of prevailing list price (mandatory first year).

Annually renewable at 20 % of prevailing list price (mandatory first year).

Included in standard subscription.

Annually renewable at 20 % of prevailing list price (mandatory first year).

Annually renewable at 20 % of prevailing list price (mandatory first year).

Pricing

Perpetual license

Non-Production discounted, mandatory with purchase

Perpetual license

Non-Production discounted, mandatory with purchase

Annual license

Perpetual license

Non-Production discounted, mandatory with purchase

Perpetual license

Non-Production discounted, mandatory with purchase

Read more
Read more
Read more
Read more
Read more

Request your free quote now

Thank you for your interest in our iText Software Products.

Our sales team will contact you within one business day to discuss your project and create your personalized quotation.