pdfCalligraph

Описание

iText 7 pdfCalligraph

pdfCalligraph позволяет использовать расширенные рабочие функции оформления PDF. Это дополнение добавляет к документообороту поддержку международных языков и систем письменности с правильными библиотеками рендеринга PDF, вариантами обезличивания и другими возможностями для обработки данных.

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

 

Ключевые функции

Основные возможности iText 7 pdfCalligraph

При использовании стандартных инструментов создания PDF часто возникают проблемы с символами или системами письменности, такими как система письменности деванагари в Индии, а также с составными символами, которые трудно разделить в тексте, затрудняя извлечение текста. pdfCalligraph может помочь в этом.

Core capabilities development icon
Использование расширенных функций шрифтов

Таких как функции OpenType, кернинг, лигатуры и замена глифов.

Core capabilities development icon
Поддержка множества языков

Включая языки, использующие индийское письмо брахми, арабскую вязь и древнееврейский алфавит.

Core capabilities development icon
Автоматическое определение языка / системы письменности

Необходимые функции шрифтов по умолчанию включены и применяются автоматически. Возможность настройки вручную. pdfCalligraph эффективно интегрируется в iText 7 Core и pdfHTML.

Core capabilities development icon
Выравнивание оформления для всех систем письменности

Сдвиг влево, сдвиг вправо, выравнивание по центру и по ширине.

Преимущества

Преимущества использования iText 7 pdfCalligraph

Обычно для автоматизированной пакетной обработки в документах PDF используются стандартные шрифты. Это означает, что нельзя использовать расширенные функции оформления, такие как функции шрифтов, сложные системы письменности и перекрывающийся текст, функции шрифтов или языков, для которых требуется изменение направления текста, например языка каннада, арабского, тамильского и других языков. Сегодня pdfCalligraph открывает мир возможностей, позволяя обслуживать все регионы во всем мире. 

pdfCalligraph icon svg
Поддержка международной коммерческой деятельности

Используйте процессы обработки документов для работы с несколькими языками без необходимости вносить изменения в программирование для PDF. Носители различных языков могут обмениваться данными в незапатентованных форматах. Создавайте большие пакеты документов PDF с различными системами письма. 

pdfCalligraph icon svg
Точная конвертация сложных текстов в PDF

В PDF можно использовать специальные символы и шрифты на разнообразных языках, таких как каннада, арабский, тамильский и многие другие. 

pdfCalligraph icon svg
Автоматическое определение систем письменности в PDF-файлах

Определение системы письменности, используемой при создании PDF-файла. Замена глифов на основании информации о конкретном письме или шрифте. Добавление информации о направлении чтения, например для арабского языка, в котором читают справа налево.

Контактная информация

Остались вопросы? 

Мы готовы вам помочь. Обратитесь к нам, и мы ответим, как только сможем.

Связаться с нами
Оставаться в курсе

Присоединяйтесь к более чем 11 000 подписчиков и станьте экспертом iText PDF, следя за нашими новыми продуктами, обновлениями, советами, техническими решениями и событиями.

Подпишись сейчас