Szöveg hozzáadása a PS-fájlokhoz
C++ API-megoldás PS-fájlok szövegeinek kezelésére
A PostScript, egy hatékony oldalleíró nyelv, amely részletesen szabályozza a szöveg elhelyezését és formázását. Íme néhány kulcsfontosságú árnyalat, amelyet figyelembe kell venni a PostScript szöveggel való munka során:
- A PostScript lehetővé teszi a betűtípusok kiválasztását a PostScript nevük alapján. Az általános betűtípusok, például a Times Roman, a Helvetica és a Courier, alapértelmezés szerint gyakran elérhetők. A különböző rendszerek közötti egységes megjelenítés érdekében a betűtípusokat közvetlenül a PostScript-fájlba ágyazhatja be. Ez különösen fontos egyéni betűtípusok vagy kevésbé gyakori betűtípuscsaládok esetén.
- Betűméret és -stílus - A “betűméret” operátor pontokban állítja be a betűméretet. A betűstílusok módosításához használjon olyan operátorokat, mint a “setfont”, amely félkövér, dőlt vagy más változatokat határoz meg.
- Szöveg pozicionálása - A “moveto” operátor a szöveg kurzort az oldal egy adott pontjára helyezi. Míg a PostScript nem rendelkezik közvetlen igazítási operátorokkal, gondosan elvégezheti az igazítást.
- Szövegforgatás és méretezés - A “forgatás” operátor használható a szöveg adott szögben történő elforgatására, a “skálázás” operátor pedig a szöveg felfelé vagy lefelé skálázására használható.
- Szövegmegjelenítés – A PostScript támogatja az élsimítást, amely kisimítja a szöveg széleit a jobb olvashatóság érdekében. A szöveg megjelenésének finomhangolásához szabályozhatja a karakterek (bevágás) és a sorok közötti távolságot (bevezető) is.
Ezen szempontok megértése elősegítheti a megfelelő betűkészlet-használatot és a következetes megjelenítést a PostScript-alapú munkafolyamatokban. De nem számít, mi történik, - Az Aspose.Page biztosítja a PS-fájlok betűtípusainak egyszerű kezelését. Ezzel az API-val különböző színű és ecsetek szövegeket adhat hozzá egyéni vagy rendszer betűtípusok használatával. További információ hogyan kell kezelni a PS-fájlokat és hogyan kell dolgozni a PS-fájlok szövegeivel különösen kövesse a dokumentációt.
Szöveg beszúrásához a PS dokumentumokba a következőkre van szükségünk:
Aspose.Page for C++ API, amely egy funkciókban gazdag, hatékony és könnyen használható dokumentumkezelési és -konverziós C++ API.
Nyissa meg a NuGet csomagkezelőt, keresse meg az Aspose.Page.Cpp fájlt, és telepítse. A következő parancsot is használhatja a Package Manager konzolból.
Package Manager Console Command
PM> Install-Package Aspose.Page.Cpp
Szöveg PS-fájlhoz való hozzáadásának lépései.
Az alábbi kódrészlet bemutatja, hogyan lehet szöveget Unicode-karakterlánc segítségével hozzáadni egy PostScript (PS) dokumentumhoz az Aspose.Page könyvtár használatával C# nyelven. A példa teljesebb változatának és további példák megtekintéséhez keresse fel az Aspose.Page-for-C++ GitHub project .
- Inicializálja a dataDir változót a dokumentumokat tartalmazó könyvtár elérési útjával.
- Állítsa be a FONTS_FOLDER változót a szükséges betűtípusokat tartalmazó mappa elérési útjára.
- Hozzon létre egy kimeneti adatfolyamot a PostScript dokumentumhoz a FileStream osztály használatával.
- Adja meg a PostScript dokumentum mentési beállításait a PsSaveOptions objektum használatával.
- Az Options objektum AdditionalFontsFolders tulajdonsága a FONTS_FOLDER elérési útját tartalmazó tömbre van beállítva. Ez lehetővé teszi a rendszer számára, hogy megtalálja a szükséges betűtípusokat a mappában.
- Adja meg a szöveget és annak méretét.
- Hozzon létre egy új PsDocument példányt a kimeneti adatfolyammal, az opciókkal és a false paraméterekkel. Ez inicializál egy új PostScript dokumentumot a megadott beállításokkal.
- Hívja meg a ClosePage() metódust a dokumentumobjektumban, jelezve, hogy az aktuális oldal elkészült.
- Használja a Save() metódust a PS-dokumentum módosításainak mentéséhez.
Képek hozzáadása a PS-hez
// 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 Mi a PS fájlformátum
A PS formátum az oldalleíró nyelv (PDL) egyik formátuma. Képes grafikus és szöveges információkat is tartalmazni az oldalon. Ezért a formátumot a legtöbb képszerkesztő program támogatta. Maga a postscript fájl egyfajta utasítás a nyomtatóknak. Információkat tartalmaz arról, hogy mit és hogyan kell nyomtatni az oldaláról.