Travailler avec un document dans PostScript | C++
Créer un document PS
Aspose.Page pour C++ propose deux constructeurs afin de créer la classe PsDocument. L’extrait de code suivant crée un document PS d’une page :
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 le document PS prévoit d’être multipage, définissez la variable multiPaged sur true.
Un autre constructeur permet de créer un objet PsDocument avec un nombre défini de pages :
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 }
Voir travailler avec un document PS dans Java.
Regardons la classe PsSaveOptions qui encapsule les options possibles aidant à créer le bon document PostScript.
SaveFormat spécifie un format de sortie des documents. Peut être PS ou EPS. Dans la bibliothèque Aspose.Page, les différences entre ces deux formats se reflètent uniquement dans les commentaires PostScript et une extension de fichier. Conformément aux spécifications des fichiers EPS, les fichiers EPS doivent également comporter une seule page. Le format PS est utilisé par défaut.
PageSize spécifie la taille des pages du document PS. Cependant, nous pouvons attribuer des tailles de page différentes pour chaque page si cela est nécessaire. La taille de la page peut être obtenue à partir de la classe PageConstants comme dans l’exemple suivant :
1 options->set_PageSize(PageConstants::GetSize(PageConstants::SIZE_International(), PageConstants::ORIENTATION_PORTRAIT()));
Le format de page par défaut est « A4 » en orientation « Portrait ».
- Marges spécifie les champs vides entre les limites de la page et les bords gauche, haut, droit et inférieur du contenu de la page. Il peut être obtenu à partir de la classe PageConstants .
1 options->set_Margins(PageConstants::GetMargins(PageConstants::MARGINS_SMALL())); // 20 points for each margin
Les marges par défaut sont “ZÉRO” (0, 0, 0, 0).
- BackGroundColor spécifie une couleur d’arrière-plan de la page. Peut être attribué comme :
1 options->set_BackgroundColor(Color::FromArgb(211, 8, 48));
ou:
1 options->set_BackgroundColor(System::Drawing::Color::get_Yellow());
La valeur par défaut est “null”, ce qui signifie aucun arrière-plan.
EmbedFonts contrôle le comportement de PsDocument lors de son enregistrement dans le fichier. Si “false”, les polices utilisées ne seront pas écrites dans le fichier PS. Dans ce cas, l’interpréteur PostScript générera une erreur si la police utilisée est introuvable dans les dossiers système sur l’hôte cible.
EmbedFontsAs contrôle la manière dont les polices seront intégrées dans le fichier PS. À l’heure actuelle, les formats de police TrueType et Type3 fonctionnent de deux manières. La valeur peut être définie à l’aide de la classe FontConstants comme suit :
1 options->set_EmbedFontsAs(FontsConstants::EMBED_FONTS_TYPE3);
La valeur par défaut est « TrueType ».
JpegQualityLevel spécifie un niveau de compression/qualité des images dans le document PS résultant. Plus la qualité est requise, moins la compression sera importante et vice versa. La qualité minimale est de 0 et la qualité maximale de 100. La valeur par défaut est de 75.
AdditionalFontsFolder spécifie les emplacements où trouver les polices. Les dossiers de polices système sont toujours inclus par défaut.
Debug permet de générer des informations de débogage sur la console. La valeur par défaut est fausse.
Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.