Trabajar con documentos en PostScript | C++
Crear documento PS
Aspose.Page para C++ ofrece dos constructores para crear la clase PsDocument. El siguiente fragmento de código crea un documento PS de 1 página:
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 }
Si el documento PS planea tener varias páginas, establezca la variable multiPagged en true.
Otro constructor permite crear un objeto PsDocument con un número definido de páginas:
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 }
Ver cómo trabajar con el documento PS en Java.
Veamos la clase PsSaveOptions que encapsula posibles opciones que ayudan a crear el documento PostScript correcto.
SaveFormat especifica un formato de salida de los documentos. Puede ser PS o EPS. En la biblioteca Aspose.Page, las diferencias entre estos dos formatos se reflejan sólo en los comentarios PostScript y en una extensión de archivo. Además, de acuerdo con la especificación de archivos EPS, los archivos EPS deben tener una sola página. El formato PS se utiliza de forma predeterminada.
PageSize especifica el tamaño de las páginas del documento PS. Sin embargo, podemos asignar diferentes tamaños de página para cada página si es necesario. El tamaño de la página se puede obtener de la clase PageConstants como en el siguiente ejemplo:
1 options->set_PageSize(PageConstants::GetSize(PageConstants::SIZE_International(), PageConstants::ORIENTATION_PORTRAIT()));
El tamaño de página predeterminado es “A4” en orientación “Retrato”.
- Márgenes especifica campos en blanco entre los límites de la página y los bordes izquierdo, superior, derecho e inferior del contenido de la página. Se puede obtener de la clase PageConstants.
1 options->set_Margins(PageConstants::GetMargins(PageConstants::MARGINS_SMALL())); // 20 points for each margin
Los márgenes predeterminados son “CERO” (0, 0, 0, 0).
- BackGroundColor especifica un color de fondo de la página. Se puede asignar como:
1 options->set_BackgroundColor(Color::FromArgb(211, 8, 48));
o:
1 options->set_BackgroundColor(System::Drawing::Color::get_Yellow());
El valor predeterminado es “nulo”, lo que significa que no hay fondo.
EmbedFonts controla el comportamiento de PsDocument mientras lo guarda en el archivo. Si es “falso”, las fuentes utilizadas no se escribirán en el archivo PS. En este caso, el intérprete PostScript generará un error si la fuente utilizada no se puede encontrar en las carpetas del sistema en el host de destino.
EmbedFontsAs controla la forma en que se incrustarán las fuentes en el archivo PS. En este momento funcionan dos formas de formatos de fuente TrueType y Type3. El valor se puede establecer con la ayuda de la clase FontConstants como la siguiente:
1 options->set_EmbedFontsAs(FontsConstants::EMBED_FONTS_TYPE3);
El valor predeterminado es “TrueType”.
JpegQualityLevel especifica un nivel de compresión/calidad de las imágenes en el documento PS resultante. Cuanta más calidad se requiera, menor será la compresión y viceversa. La calidad mínima es 0 y la máxima, 100. El valor predeterminado es 75.
AdditionalFontsFolder especifica ubicaciones donde encontrar fuentes. Las carpetas de fuentes del sistema siempre se incluyen de forma predeterminada.
Depurar permite enviar información de depuración a la consola. El valor predeterminado es falso.
Puede descargar ejemplos y archivos de datos desde GitHub.