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 |
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
Output
Resources
Here you will find the needed resources to install and use pdfCalligraph.
Other resources
Основные возможности iText 7 pdfCalligraph
При использовании стандартных инструментов создания PDF часто возникают проблемы с символами или системами письменности, такими как система письменности деванагари в Индии, а также с составными символами, которые трудно разделить в тексте, затрудняя извлечение текста. pdfCalligraph может помочь в этом.
Использование расширенных функций шрифтов
Таких как функции OpenType, кернинг, лигатуры и замена глифов.
Поддержка множества языков
Включая языки, использующие индийское письмо брахми, арабскую вязь и древнееврейский алфавит.
Автоматическое определение языка / системы письменности
Необходимые функции шрифтов по умолчанию включены и применяются автоматически. Возможность настройки вручную. pdfCalligraph эффективно интегрируется в iText 7 Core и pdfHTML.
Выравнивание оформления для всех систем письменности
Сдвиг влево, сдвиг вправо, выравнивание по центру и по ширине.
Преимущества использования iText 7 pdfCalligraph
Обычно для автоматизированной пакетной обработки в документах PDF используются стандартные шрифты. Это означает, что нельзя использовать расширенные функции оформления, такие как функции шрифтов, сложные системы письменности и перекрывающийся текст, функции шрифтов или языков, для которых требуется изменение направления текста, например языка каннада, арабского, тамильского и других языков. Сегодня pdfCalligraph открывает мир возможностей, позволяя обслуживать все регионы во всем мире.
Поддержка международной коммерческой деятельности
Используйте процессы обработки документов для работы с несколькими языками без необходимости вносить изменения в программирование для PDF. Носители различных языков могут обмениваться данными в незапатентованных форматах. Создавайте большие пакеты документов PDF с различными системами письма.
Точная конвертация сложных текстов в PDF
В PDF можно использовать специальные символы и шрифты на разнообразных языках, таких как каннада, арабский, тамильский и многие другие.
Автоматическое определение систем письменности в PDF-файлах
Определение системы письменности, используемой при создании PDF-файла. Замена глифов на основании информации о конкретном письме или шрифте. Добавление информации о направлении чтения, например для арабского языка, в котором читают справа налево.