Робота з документом у PostScript | C++
Створіть документ PS
Aspose.Page для C++ пропонує два конструктори для створення класу PsDocument. Наступний фрагмент коду створює односторінковий документ PS:
1 // The path to the documents directory.
2 System::String dir = RunExamples::GetDataDir_WorkingWithDocument();
3
4 //Create output stream for PostScript document
5 {
6 System::SharedPtr<System::IO::Stream> outPsStream = System::MakeObject<System::IO::FileStream>(dir + u"document.ps", System::IO::FileMode::Create);
7 // Clearing resources under 'using' statement
8 System::Details::DisposeGuard<1> __dispose_guard_0({ outPsStream});
9 // ------------------------------------------
10
11 try
12 {
13 //Create save options
14 System::SharedPtr<PsSaveOptions> options = System::MakeObject<PsSaveOptions>();
15 //If you want to aassign page size other than A4, set page size in options
16 options->set_PageSize(PageConstants::GetSize(PageConstants::SIZE_A4(), PageConstants::ORIENTATION_PORTRAIT()));
17 //If you want to aassign page margins other empty, set page margins in options
18 options->set_Margins(PageConstants::GetMargins(PageConstants::MARGINS_ZERO()));
19 //If you plan to use fonts that located in non system folders, set additional fonts folders in options
20 options->set_AdditionalFontsFolders(System::MakeArray<System::String>({dir}));
21
22 //Set variable that indicates if resulting PostScript document will be multipaged
23 bool multiPaged = false;
24
25 // Create new multipaged PS Document with one page opened
26 System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(outPsStream, options, multiPaged);
27
28 //Close current page
29 document->ClosePage();
30 //Save the document
31 document->Save();
32 }
33 catch(...)
34 {
35 __dispose_guard_0.SetCurrentException(std::current_exception());
36 }
37 }
Якщо документ PS планується зробити багатосторінковим, установіть для змінної multiPaged значення true.
Інший конструктор дозволяє створити об’єкт PsDocument із заданою кількістю сторінок:
1//Create output stream for PostScript document
2using (Stream outPsStream = new FileStream(dir + "document.ps", FileMode.Create))
3{
4 //Create save options
5 PsSaveOptions options = new PsSaveOptions();
6
7 // Create new multipaged PS Document with 2 pages. These two pages are not created. It must be added by AddPage() method.
8 PsDocument document = new PsDocument(outPsStream, options, 2);
9
10 //Adding pages and it's content
11
12 //Save the document
13 document.Save();
14}
15 // The path to the documents directory.
16 System::String dir = RunExamples::GetDataDir_WorkingWithDocument();
17
18 //Create output stream for PostScript document
19 {
20 System::SharedPtr<System::IO::Stream> outPsStream = System::MakeObject<System::IO::FileStream>(dir + u"document.ps", System::IO::FileMode::Create);
21 // Clearing resources under 'using' statement
22 System::Details::DisposeGuard<1> __dispose_guard_0({ outPsStream});
23 // ------------------------------------------
24
25 try
26 {
27 //Create save options
28 System::SharedPtr<PsSaveOptions> options = System::MakeObject<PsSaveOptions>();
29
30 // Create new multipaged PS Document with 2 pages. These two pages are not created. It must be added by AddPage() method.
31 System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(outPsStream, options, 2);
32
33 //Adding pages and it's content
34
35 //Save the document
36 document->Save();
37 }
38 catch(...)
39 {
40 __dispose_guard_0.SetCurrentException(std::current_exception());
41 }
42 }
Дивіться роботу з документом PS у Java.
Давайте розглянемо клас PsSaveOptions, який інкапсулює можливі параметри, які допомагають створити правильний документ PostScript.
SaveFormat визначає вихідний формат документів. Може бути PS або EPS. У бібліотеці Aspose.Page відмінності між цими двома форматами відображаються лише в коментарях PostScript і розширенні файлу. Також відповідно до специфікації файлів EPS файли EPS мають бути односторінковими. Формат PS використовується за замовчуванням.
PageSize визначає розмір сторінок у документі PS. Однак ми можемо призначити різні розміри для кожної сторінки, якщо це потрібно. Розмір сторінки можна отримати з класу PageConstants, як у наступному прикладі:
1 options->set_PageSize(PageConstants::GetSize(PageConstants::SIZE_International(), PageConstants::ORIENTATION_PORTRAIT()));
Розмір сторінки за замовчуванням – «A4» у «Книжковій» орієнтації.
- Поля визначає порожні поля між межами сторінки та лівим, верхнім, правим і нижнім краями вмісту сторінки. Його можна отримати з класу PageConstants.
1 options->set_Margins(PageConstants::GetMargins(PageConstants::MARGINS_SMALL())); // 20 points for each margin
Поля за замовчуванням — «НУЛЬ» (0, 0, 0, 0).
- BackGroundColor визначає колір фону сторінки. Може бути призначений як:
1 options->set_BackgroundColor(Color::FromArgb(211, 8, 48));
або:
1 options->set_BackgroundColor(System::Drawing::Color::get_Yellow());
Значення за замовчуванням — «null», що означає відсутність фону.
EmbedFonts контролює поведінку PsDocument під час збереження його у файл. Якщо значення «false», використані шрифти не будуть записані у файл PS. У цьому випадку інтерпретатор PostScript видасть помилку, якщо використаний шрифт не знайдено в системних папках на цільовому хості.
EmbedFontsAs контролює спосіб вбудовування шрифтів у файл PS. На даний момент два способи роботи форматів шрифтів TrueType і Type3. Значення можна встановити за допомогою класу FontConstants, як показано нижче:
1 options->set_EmbedFontsAs(FontsConstants::EMBED_FONTS_TYPE3);
Значення за замовчуванням - “TrueType”.
JpegQualityLevel визначає рівень стиснення/якості зображень у кінцевому документі PS. Чим більша якість потрібна, тим менше буде стиснення, і навпаки. Мінімальна якість 0, максимальна 100. За замовчуванням 75.
AdditionalFontsFolder визначає розташування, де шукати шрифти. Системні папки шрифтів завжди включені за замовчуванням.
Debug дозволяє виводити інформацію про налагодження на консоль. Значення за замовчуванням - false.
Ви можете завантажити приклади та файли даних із GitHub.