Ajouter du texte aux fichiers PS

Solution API C++ pour travailler avec les textes des fichiers PS

 

PostScript, un puissant langage de description de page, offre un contrôle granulaire sur le placement et le formatage du texte. Voici quelques nuances clés à prendre en compte lorsque vous travaillez avec du texte en PostScript :

  • PostScript vous permet de sélectionner des polices en utilisant leurs noms PostScript. Les polices courantes telles que Times Roman, Helvetica et Courier sont souvent disponibles par défaut. Pour garantir un rendu cohérent sur différents systèmes, vous pouvez intégrer des polices directement dans votre fichier PostScript. Ceci est particulièrement important pour les polices personnalisées ou les familles de polices moins courantes.
  • Taille et style de police - L’opérateur fontsize définit la taille de la police en points. Pour modifier les styles de police, utilisez des opérateurs comme « setfont » qui spécifient les variantes grasses, italiques ou autres.
  • Positionnement du texte - L’opérateur moveto positionne le curseur de texte à un point spécifique de la page. Bien que PostScript ne dispose pas d’opérateurs d’alignement direct, vous pouvez réaliser l’alignement avec précaution.
  • Rotation et mise à l’échelle du texte - L’opérateur « rotation » peut être utilisé pour faire pivoter le texte selon un angle spécifique, et l’opérateur « échelle » peut être utilisé pour redimensionner le texte vers le haut ou vers le bas.
  • Rendu du texte - PostScript prend en charge l’anticrénelage, qui lisse les bords du texte pour une meilleure lisibilité. Vous pouvez également contrôler l’espacement entre les caractères (crénage) et les lignes (interlignage) pour affiner l’apparence du texte.

Comprendre ces aspects peut contribuer à garantir une utilisation appropriée des polices et un rendu cohérent dans les flux de travail basés sur PostScript. Mais quoi qu’il en soit, Aspose.Page vous offre la fonctionnalité nécessaire pour gérer facilement les polices des fichiers PS. Avec cette API, vous pouvez ajouter des textes de différentes couleurs et pinceaux à l’aide de polices personnalisées ou système. Pour en savoir plus sur comment gérer les fichiers PS et comment travailler avec les textes des fichiers PS suivez en particulier la documentation.

Pour insérer des textes dans des documents PS, nous avons besoin de :

  • Aspose.Page pour l'API C++ qui est une API C++ de manipulation et de conversion de documents riche en fonctionnalités, puissante et facile à utiliser.

  • Ouvrez le gestionnaire de packages NuGet, recherchez Aspose.Page.Cpp et installez. Vous pouvez également utiliser la commande suivante à partir de la console Package Manager.

Package Manager Console Command

    PM> Install-Package Aspose.Page.Cpp

Étapes pour ajouter du texte à un fichier PS.

L’extrait de code ci-dessous montre comment ajouter du texte à l’aide d’une chaîne Unicode à un document PostScript (PS) à l’aide de la bibliothèque Aspose.Page en C#. Pour voir une version plus complète de l’exemple et d’autres exemples, accédez au Projet Aspose.Page-for-C++ GitHub .

  1. Initialisez la variable dataDir avec le chemin d’accès au répertoire contenant les documents.
  2. Définissez la variable FONTS_FOLDER pour définir le chemin du dossier contenant les polices nécessaires.
  3. Créez un flux de sortie pour le document PostScript à l’aide de la classe FileStream.
  4. Spécifiez les options d’enregistrement du document PostScript à l’aide de l’objet PsSaveOptions .
  5. La propriété AdditionalFontsFolders de l’objet options est définie sur un tableau contenant le chemin d’accès au FONTS_FOLDER. Cela permet au système de localiser toutes les polices requises dans ce dossier.
  6. Précisez le texte et sa taille.
  7. Créez une nouvelle instance de PsDocument avec le flux de sortie, les options et false comme paramètres. Cela initialise un nouveau document PostScript avec les options spécifiées.
  8. Appelez la méthode ClosePage() sur l’objet document, indiquant que la page actuelle est terminée.
  9. Utilisez la méthode Save() pour enregistrer les modifications apportées au document PS.
Ajouter des images à PS
// The path to the documents directory.
System::String dataDir = RunExamples::GetDataDir_WorkingWithText();
System::String FONTS_FOLDER = RunExamples::GetDataDir_Data() + u"necessary_fonts/";
//Create output stream for PostScript document
{
System::SharedPtr<System::IO::Stream> outPsStream = System::MakeObject<System::IO::FileStream>(dataDir + u"AddText_outPS.ps", System::IO::FileMode::Create);
// Clearing resources under 'using' statement
System::Details::DisposeGuard<1> __dispose_guard_0({ outPsStream});
// ------------------------------------------
try
{
//Create save options with A4 size
System::SharedPtr<PsSaveOptions> options = System::MakeObject<PsSaveOptions>();
// Set custom fonts folder. It will be added to system fonts folders for finding needed font.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({FONTS_FOLDER}));
//A text to write to PS file
System::String str = u"ABCDEFGHIJKLMNO";
int32_t fontSize = 48;
// Create new 1-paged PS Document
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(outPsStream, options, false);
////////////////////////////////////// Using sysem font (located in system fonts folders) for filling text //////////////////
System::SharedPtr<System::Drawing::Font> font = System::MakeObject<System::Drawing::Font>(u"Times New Roman", static_cast<float>(fontSize), System::Drawing::FontStyle::Bold);
//Fill text with default or already defined color. In given case it is black.
document->FillText(str, font, 50.0f, 100.0f);
//Fill text with Blue color.
document->FillText(str, font, 50.0f, 150.0f, System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Blue()));
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////// Using custom font (located in custom fonts folders) for filling text /////////////////
System::SharedPtr<DrFont> drFont = ExternalFontCache::FetchDrFont(u"Palatino Linotype", static_cast<float>(fontSize), System::Drawing::FontStyle::Regular);
//Fill text with default or already defined color. In given case it is black.
document->FillText(str, drFont, 50.0f, 200.0f);
//Fill text with Blue color.
document->FillText(str, drFont, 50.0f, 250.0f, System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Blue()));
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////// Using sysem font (located in system fonts folders) for outlining text ////////////////
//Outline text with default or already defined pen. In given case it is black colored 1-points width pen.
document->OutlineText(str, font, 50.0f, 300.0f);
//Outline text with blue-violet colored 2-points width pen.
document->OutlineText(str, font, 50.0f, 350.0f, System::MakeObject<System::Drawing::Pen>(System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_BlueViolet()), 2.0f));
//Fill text with orange color and stroke with blue colored 2-points width pen.
document->FillAndStrokeText(str, font, 50.0f, 400.0f, System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Yellow()), System::MakeObject<System::Drawing::Pen>(System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_BlueViolet()), 2.0f));
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////// Using custom font (located in custom fonts folders) for outlining text /////////////////
//Outline text with default or already defined pen. In given case it is black colored 1-points width pen.
document->OutlineText(str, drFont, 50.0f, 450.0f);
//Outline text with blue-violet colored 2-points width pen.
document->OutlineText(str, drFont, 50.0f, 500.0f, System::MakeObject<System::Drawing::Pen>(System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_BlueViolet()), 2.0f));
//Fill text with orange color and stroke with blue colored 2-points width pen.
document->FillAndStrokeText(str, drFont, 50.0f, 550.0f, System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Orange()), System::MakeObject<System::Drawing::Pen>(System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Blue()), 2.0f));
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// Using custom font (located in custom fonts folders) ang glyphs widths for filling text ////////
drFont = ExternalFontCache::FetchDrFont(u"Palatino Linotype", static_cast<float>(fontSize), System::Drawing::FontStyle::Regular);
//Glyphs widths
System::ArrayPtr<float> widths = System::MakeArray<float>({87, 87, 87, 87, 34, 87, 87});
//Fill ASCII text using with assigning glyphs widths.
document->FillText(u"BAMBOOK", widths, drFont, 50.0f, 600.0f, System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Blue()));
///////////////////////////// Using custom font (located in custom fonts folders) ang glyphs widths for filling unicode text //
//Glyphs widths
widths = System::MakeArray<float>({87, 34, 87, 87, 87, 87, 87});
//Fill Unicode text using with assigning glyphs widths.
document->FillText(u"ЗООПАРК", widths, drFont, 50.0f, 650.0f, System::MakeObject<System::Drawing::SolidBrush>(System::Drawing::Color::get_Orange()));
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Close current page
document->ClosePage();
//Save the document
document->Save();
}
catch(...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}

PS Qu'est-ce que le format de fichier PS

Le format PS est l'un des formats de langage de description de page (PDL). Il est capable de contenir des informations graphiques et textuelles sur la page. C'est pourquoi le format était pris en charge par la plupart des programmes de retouche d'image. Le fichier postscript lui-même est une sorte d'instruction pour les imprimeurs. Il contient des informations sur quoi et comment imprimer à partir de sa page.