Работа с документом в PostScript | С++
Создать документ 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 }
See working with PS document in Java.
Давайте посмотрим на класс PsSaveOptions, который инкапсулирует возможные параметры, помогающие создать правильный документ PostScript.
SaveFormat определяет выходной формат документов. Может быть ПС или ЭПС. В библиотеке Aspose.Page различия между этими двумя форматами отражаются только в комментариях PostScript и расширении файла. Также в соответствии со спецификацией файла EPS файлы EPS должны быть одностраничными. По умолчанию используется формат PS.
PageSize определяет размер страниц в документе PS. Однако, если необходимо, мы можем назначить разные размеры для каждой страницы. Размер страницы можно получить из класса PageConstants, как показано в следующем примере:
1 options->set_PageSize(PageConstants::GetSize(PageConstants::SIZE_International(), PageConstants::ORIENTATION_PORTRAIT()));
Размер страницы по умолчанию — «А4» в «Портретной» ориентации.
- Поля – указывают пустые поля между границами страницы и левым, верхним, правым и нижним краями содержимого страницы. Его можно получить из класса 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());
Значение по умолчанию — «ноль», что означает отсутствие фона.
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 позволяет выводить отладочную информацию на консоль. Значение по умолчанию — ложь.
Вы можете загрузить примеры и файлы данных с сайта GitHub.