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 .

  1. Inicializálja a dataDir változót a dokumentumokat tartalmazó könyvtár elérési útjával.
  2. Állítsa be a FONTS_FOLDER változót a szükséges betűtípusokat tartalmazó mappa elérési útjára.
  3. Hozzon létre egy kimeneti adatfolyamot a PostScript dokumentumhoz a FileStream osztály használatával.
  4. Adja meg a PostScript dokumentum mentési beállításait a PsSaveOptions objektum használatával.
  5. 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.
  6. Adja meg a szöveget és annak méretét.
  7. 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.
  8. Hívja meg a ClosePage() metódust a dokumentumobjektumban, jelezve, hogy az aktuális oldal elkészült.
  9. 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.