pdfCalligraph

Introducción

iText 7 pdfCalligraph

pdfCalligraph le permite desbloquear características avanzadas de flujo de trabajo en tipografía PDF. Expande su flujo de trabajo de documentos con lenguajes globales y sistemas de escritura apropiados para el procesamiento de datos, como bibliotecas de procesamiento de PDF adecuadas, opciones de ocultamiento, y más.

Supported Scripts

Language Script Module
Arabic, Persian, Kurdish, Azerbaijani, Sindhi, Pashto, Lurish, Urdu, Mandinka, Punjabi and others ARABIC pdfCalligraph
Hebrew, Yiddish, Judaeo-Spanish, and Judeo-Arabic HEBREW pdfCalligraph
Bengali BENGALI pdfCalligraph
Hindi, Sanskrit, Pali, Awadhi, Bhojpuri, Braj Bhasha, Chhattisgarhi, Haryanvi, Magahi, Nagpuri, Rajasthani, Bhili, Dogri, Marathi, Nepali, Maithili, Kashmiri, Konkani, Sindhi, Bodo, Nepalbhasa, Mundari and Santali DEVANAGARI, NAGARI pdfCalligraph
Gujarati and Kutchi GUJARATI pdfCalligraph
Punjabi GURMUKHI pdfCalligraph
Kannada, Konkani and others KANNADA pdfCalligraph
Khmer (Cambodia) KHMER pdfCalligraph
Malayalam MALAYALAM pdfCalligraph
Odia ORIYA pdfCalligraph
Tamil TAMIL pdfCalligraph
Telugu (Dravidian language) TELUGU pdfCalligraph
Thai THAI pdfCalligraph
Chinese Core
Japanese Core
Korean Core
WESTERN Core
Russian, Ukrainian, Belarussian, Bulgarian and others CYRILLIC Core
Greek GREEK Core
Armenian ARMENIAN Core
Georgian GEORGIAN Core
Show more Show less

How it works

For this example, we'll demonstrate using pdfCalligraph to correctly render text in different languages. First, let’s start with a simple English sentence, which we've translated into three different languages using Google Translate.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
final String[] sources = {"english.xml", "arabic.xml", "hindi.xml", "tamil.xml"};
        final PdfWriter writer = new PdfWriter(DEST);
        final PdfDocument pdfDocument = new PdfDocument(writer);
        final Document document = new Document(pdfDocument);
        final FontSet set = new FontSet();
        set.addFont("fonts/NotoNaskhArabic-Regular.ttf");
        set.addFont("fonts/NotoSansTamil-Regular.ttf");
        set.addFont("fonts/FreeSans.ttf");
        document.setFontProvider(new FontProvider(set));
        document.setProperty(Property.FONT, new String[]{"MyFontFamilyName"});
        for (final String source : sources) {
            final File xmlFile = new File(source);
            final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            final DocumentBuilder builder = factory.newDocumentBuilder();
            final org.w3c.dom.Document doc = builder.parse(xmlFile);
            final Node element = doc.getElementsByTagName("text").item(0);
            final Paragraph paragraph = new Paragraph();
            final Node textDirectionElement = element.getAttributes().getNamedItem("direction");
            boolean rtl = textDirectionElement != null && textDirectionElement.getTextContent()
                    .equalsIgnoreCase("rtl");
            if (rtl) {
                paragraph.setTextAlignment(TextAlignment.RIGHT);
            }
            paragraph.add(element.getTextContent());
            document.add(paragraph);
        }
        document.close();
        pdfDocument.close();
        writer.close();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
string[] sources = new string[] { "english.xml", "arabic.xml", "hindi.xml", "tamil.xml" };
            PdfWriter writer = new PdfWriter(DEST);
            PdfDocument pdfDocument = new PdfDocument(writer);
            Document document = new Document(pdfDocument);
            FontSet set = new FontSet();
            set.AddFont("NotoNaskhArabic-Regular.ttf");
            set.AddFont("NotoSansTamil-Regular.ttf");
            set.AddFont("FreeSans.ttf");
            document.SetFontProvider(new FontProvider(set));
            document.SetProperty(Property.FONT, new String[] { "MyFontFamilyName" });
            foreach (string source in sources)
            {
                XmlDocument doc = new XmlDocument();
                var stream = new FileStream(source, FileMode.Open);
                doc.Load(stream);
                XmlNode element = doc.GetElementsByTagName("text").Item(0);
                Paragraph paragraph = new Paragraph();
                XmlNode textDirectionElement = element.Attributes.GetNamedItem("direction");
                Boolean rtl = textDirectionElement != null && textDirectionElement.InnerText.Equals("rtl");
                if (rtl)
                {
                    paragraph.SetTextAlignment(TextAlignment.RIGHT);
                }
                paragraph.Add(element.InnerText);
                document.Add(paragraph);
            }
            document.Close();

Input

An image displaying four different languages in a single PDF

 

 

 

 

Resource files

Output

 

Características clave

Capacidades esenciales de iText 7 pdfCalligraph

Los creadores de PDF existentes a menudo tienen problemas con las interacciones de los caracteres o los sistemas de escritura como la familia Indic Devanagari, y con los caracteres compuestos que son difíciles de separar en el texto, lo que dificulta su extracción. pdfCalligraph puede ayudar.

Core capabilities development icon
Aproveche las características avanzadas de fuente

Tales como características de OpenType, interletraje, ligaduras y sustitutos de glifos.

Core capabilities development icon
Soporte transparente para una gran variedad idiomas

Incluidos los idiomas que utilizan scripts en bráhmico, árabe y hebreo.

Core capabilities development icon
Detección automática de idioma/sistema de escritura

Las características de fuente requeridas se habilitan y aplican automáticamente. Posibilidad de configuración manual. pdfCalligraph se integra perfectamente con iText 7 Core y pdfHTML.

Core capabilities development icon
Alineación tipográfica para todos los sistemas de escritura

Alineación a la izquierda, a la derecha, centrada y justificada.

Beneficios

¿Por qué usar iText 7 pdfCalligraph?

Los documentos PDF normalmente se han basado en fuentes básicas para procesos por lotes automatizados. Esto significaba que no podía usar características de tipografía avanzadas, como características de fuente, sistemas de escritura complejos con texto superpuesto, funciones de script, o idiomas que requieren un reordenamiento del texto, como el árabe, el tamil, el canarés y más. Hoy en día, pdfCalligraph abre un mundo de posibilidades que le permiten brindar sus servicios a todas las regiones, en todo el mundo. 

pdfCalligraph icon svg
Apoyo para su negocio internacional

Use sus procesos de documentos para varios idiomas sin necesidad de ajustar su programación de PDF. Intercambie formatos de datos sin derecho de propiedad entre usuarios de varias culturas. Cree grandes lotes de documentos PDF en distintos sistemas de escritura. 

pdfCalligraph icon svg
Conversión correcta de archivos PDF en idiomas especiales

Use fuentes y caracteres especiales en varias lenguas, tales como el canarés, árabe, tamil y muchos otros en su PDF. 

pdfCalligraph icon svg
Detección automática de sistemas de escritura en PDF

Detecta qué sistema de escritura se está usando en la creación del PDF. Reemplace  glifos según la información específica de la fuente y texto. Agregue información sobre el orden de lectura, como el árabe que se lee de derecha a izquierda.