Робота з текстом у PostScript | .NET

Додати текст у документ PS

У цій статті ми розглянемо способи додавання тексту в документ PS.

Вочевидь, що текст має бути написаний у документі певним шрифтом. Шрифти можуть зберігатися в системних папках, і в цьому випадку ми називаємо їх системними шрифтами і можуть зберігатися в спеціальних папках, які є папками, в які хтось розміщує шрифти для певного використання. Зазвичай ці шрифти відсутні в системних папках. Ми називаємо такі шрифти спеціальними шрифтами. Бібліотека Aspose.Page для .NET пропонує методи використання як системних, так і спеціальних шрифтів.

Для використання системних шрифтів ми просто заповнюємо або обводимо текст рідним System.Drawing.Font .NET. Числа у виклику методу є координатами x і y верхнього лівого кута тексту.

1document.FillText(str, new System.Drawing.Font("Times New Roman", fontSize, FontStyle.Bold), 50, 100);

Для використання спеціальних шрифтів спочатку додайте папку спеціальні шрифти в PsSaveOptions, а потім виберіть Aspose.Page.Font.DrFont. І, нарешті, заповніть або обведіть текст цим об’єктом DrFont.

1options.AdditionalFontsFolders = new string[] { FONTS_FOLDER };
2Aspose.Page.Font.DrFont drFont = ExternalFontCache.FetchDrFont("Palatino Linotype", fontSize, FontStyle.Regular);
3document.FillText(str, drFont, 50, 100);

Інший варіант — робота з текстом, який також належить до шрифту. Шрифт, який використовується для друку тексту в документі PostScript, може бути вбудованим у цей файл або не вбудованим. У першому випадку текст завжди відображатиметься в будь-якому засобі перегляду або редакторі PostScript, оскільки він завжди лежить разом із текстом. У другому випадку слід очікувати, що використаний шрифт існує в системних папках на цільовому хості. Якщо використовуваний шрифт не існує, інтерпретатор PostScript може видати помилку.

Третій варіант також стосується шрифту, тому що шрифт є основним у додаванні тексту. Шрифт, який використовується для заповнення або малювання (або вирізання) тексту, може бути вбудований у файл PS у різних формах. Тепер підтримуються типи шрифтів TrueType і Type3 у вбудовуванні.

Четверта опція - це можливість писати гліфи тексту з призначеними випередженнями (шириною). Це дозволяє додати тексту артистизм.

У наведеному нижче прикладі ми демонструємо використання різних методів додавання тексту в документ PS за допомогою бібліотеки Aspose.Page для .NET.

Алгоритм додавання тексту в новий документ PS включає наступні кроки:

  1. Створіть вихідний потік для отриманого файлу PS.
  2. Створіть PsSaveOptions. Якщо ми використовуємо спеціальний шрифт, ми додаємо папку(и) спеціальних шрифтів у параметрах збереження.
  3. Створіть PsDocument із уже створеним вихідним потоком і параметрами збереження.
  4. Створіть необхідний шрифт, системний або спеціальний.
  5. Заповніть або обведіть текст створеним шрифтом. Тут ми можемо призначити System.Drawing.Brush або System.Drawing.Pen залежно від того, заповнюємо чи малюємо текст. Або ми можемо заповнити та обвести текст одним способом. Якщо ми використовуємо метод без System.Drawing.Brush або System.Drawing.Pen, текст буде заповнено або обведено поточною фарбою/обведенням у поточному стані графіки.
  6. Закрийте сторінку.
  7. Збережіть документ.

Ми розділили приклад коду на маленькі фрагменти коду, щоб розділити початкову підготовку документа PS, використання кожного методу для додавання тексту та завершення документа.

У цьому фрагменті коду ми створюємо вихідний потік і PsSaveOptions, додаємо папку спеціальних шрифтів для використання спеціального шрифту в коді, створюємо об’єкт PsDocument, встановлюємо загальний для всіх методів текст як рядкову змінну та створюємо змінну fontSize, яка також використовується в кожному використаному методі.

 1//Create an output stream for the PostScript document
 2using (Stream outPsStream = new FileStream(dataDir + "AddText_outPS.ps", FileMode.Create))
 3{
 4    //Create save options with the A4 size
 5    PsSaveOptions options = new PsSaveOptions();
 6    // Set the custom fonts folder. It will be added to system fonts folders for finding the needed font.
 7    options.AdditionalFontsFolders = new string[] { FONTS_FOLDER };
 8    //A text to write to the PS file
 9    string str = "ABCDEFGHIJKLMNO";
10    int fontSize = 48;
11
12    // Create a new 1-paged PS Document
13    PsDocument document = new PsDocument(outPsStream, options, false);

Тут ми демонструємо використання системного шрифту для заповнення тексту поточним кольором стану графіки (тобто чорним) і новим SolidBrush.

1////////////////////////////////////// Using the sysem font (located in system fonts folders) for filling the text //////////////////
2    Font font = new Font("Times New Roman", fontSize, FontStyle.Bold);
3    //Fill the text with the default or already defined color. In given case it is black.
4    document.FillText(str, font, 50, 100);
5    //Fill the text with Blue color.
6    document.FillText(str, font, 50, 150, new SolidBrush(Color.Blue));
7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Для Linux, MacOS та інших операційних систем, відмінних від Windows, ми пропонуємо використовувати наш пакет Nuget Aspose.Page.Drawing. Він використовує бекенд Aspose.Drawing замість системної бібліотеки System.Drawing.

Тому імпортуйте простір імен Aspose.Page.Drawing замість System.Drawing. У наведеному вище та наступному фрагментах коду Aspose.Page.Drawing.Font використовуватиметься замість System.Drawing.Font, Aspose.Page.Drawing.SolidBrush використовуватиметься замість System.Drawing.SolidBrush тощо. Наші приклади коду на GitHub містять усі необхідні заміни.

Результат

Додати текстове зображення1

Додати текстове зображення2

Тепер ми заповнюємо текст власним шрифтом.

1////////////////////////////////////// Using the custom font (located in custom fonts folders) for filling the text /////////////////
2	  DrFont drFont = ExternalFontCache.FetchDrFont("Palatino Linotype", fontSize, FontStyle.Regular);
3	  //Fill the text with default or already defined color. In the given case it is black.
4	  document.FillText(str, drFont, 50, 200);
5	  //Fill the text with the Blue color.
6	  document.FillText(str, drFont, 50, 250, new SolidBrush(Color.Blue));
7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Результат

Додати текстове зображення3

Додати текстове зображення4

Тут ми демонструємо використання системного шрифту для виділення тексту поточним штрихом стану графіки (тобто чорним) і новим Пером.

1////////////////////////////////////// Using the sysem font (located in system fonts folders) for outlining the text ////////////////
2	  //Outline the text with default or already defined pen. In the given case it is a black colored 1-points width pen.
3	  document.OutlineText(str, font, 50, 300);
4	  //Outline the text with the blue-violet colored 2-points width pen.
5	  document.OutlineText(str, font, 50, 350, new Pen(new SolidBrush(Color.BlueViolet), 2));
6/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Результат

Додати текстове зображення5

Додати текстове зображення6

Тепер ми обводимо текст спеціальним шрифтом.

1////////////////////////////////////// Using the custom font (located in custom fonts folders) for outlining the text /////////////////
2		//Outline the text with the default or already defined pen. In given case it is a black colored 1-points width pen.
3		document.OutlineText(str, drFont, 50, 450);
4		//Outline the text with the blue-violet colored 2-points width pen.
5		document.OutlineText(str, drFont, 50, 500, new Pen(new SolidBrush(Color.BlueViolet), 2));		
6///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Результат

Додати текстове зображення8

Додати текстове зображення9

Тут ми демонструємо використання системного шрифту для заповнення та контуру тексту за допомогою нових SolidBrush і Pen.

1    //Fill the text with the orange color і stroke with the blue colored 2-points width pen.
2    document.FillAndStrokeText(str, font, 50, 400, new SolidBrush(Color.Yellow), new Pen(new SolidBrush(Color.BlueViolet), 2));

Результат

Додати текстове зображення7

Тепер ми заповнюємо та обводимо текст спеціальним шрифтом.

1		//Fill the text with the orange color і stroke with the blue colored 2-points width pen.
2		document.FillAndStrokeText(str, drFont, 50, 550, new SolidBrush(Color.Orange), new Pen(new SolidBrush(Color.Blue), 2));

Результат

Додати текстове зображення10

І, нарешті, ми заповнюємо текст, призначаючи ширину гліфів. Кількість ширин має дорівнювати кількості гліфів.

1	//Glyphs widths
2    float[] widths = new float[] { 87, 87, 87, 87, 34, 87, 87 };    
3    //Fill ASCII text using with assigning glyphs widths.
4    document.FillText("BAMBOOK", widths, drFont, 50, 600, new SolidBrush(Color.Blue));
5    
6    //Glyphs widths
7    widths = new float[] { 87, 34, 87, 87, 87, 87, 87 };
8    //Fill Unicode text using with assigning glyphs widths.
9    document.FillText("ЗООПАРК", widths, drFont, 50, 650, new SolidBrush(Color.Orange));

Результат

Додати текстове зображення11

Закрити поточну сторінку, зберегти документ.

1    //Close the current page
2    document.ClosePage();
3    
4    //Save the document
5    document.Save();

Дивіться роботу з текстом у документах PS у Java.


У наведеному вище прикладі використані шрифти, вбудовані у файл PostScript як шрифти TrueType, оскільки це типова поведінка збереження шрифтів у класі PsDocument. Якщо вам потрібно змінити таку поведінку, скористайтеся PsSaveOptions так:

1		//Do not embed used fonts.
2		options.EmbedFonts = false;
1		//Embed used fonts as Type3 fonts.
2		options.EmbedFontsAs = FontConstants.EMBED_FONTS_TYPE3;

Ви можете завантажити приклади і файли даних з GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.