PS dosyalarına metin ekleme
PS dosyalarının metinleriyle çalışmak için C++ API çözümü
Güçlü bir sayfa tanımlama dili olan PostScript, metin yerleştirme ve biçimlendirme üzerinde ayrıntılı kontrol sunar. PostScript'te metinle çalışırken göz önünde bulundurulması gereken bazı önemli nüanslar şunlardır:
- PostScript, PostScript adlarını kullanarak yazı tiplerini seçmenize olanak tanır. Times Roman, Helvetica ve Courier gibi yaygın kullanılan yazı tipleri genellikle varsayılan olarak mevcuttur. Farklı sistemlerde tutarlı görüntü oluşturmayı sağlamak için yazı tiplerini doğrudan PostScript dosyanıza gömebilirsiniz. Bu, özellikle özel yazı tipleri veya daha az yaygın olan yazı tipi aileleri için önemlidir.
- Yazı Tipi Boyutu ve Stili - “Yazı tipi boyutu” operatörü, yazı tipi boyutunu nokta cinsinden ayarlar. Yazı tipi stillerini değiştirmek için kalın, italik veya diğer varyasyonları belirten ‘setfont’ gibi operatörleri kullanın.
- Metin Konumlandırma - ‘Moveto’ operatörü, metin imlecini sayfada belirli bir noktaya konumlandırır. PostScript’te doğrudan hizalama operatörleri bulunmamakla birlikte, hizalamayı dikkatli bir şekilde gerçekleştirebilirsiniz.
- Metin Döndürme ve Ölçekleme - Metni belirli bir açıya döndürmek için “döndürme” operatörü kullanılabilir ve metni yukarı veya aşağı ölçeklendirmek için “ölçek” operatörü kullanılabilir.
- Metin İşleme - PostScript, daha iyi okunabilirlik için metnin kenarlarını yumuşatan kenar yumuşatmayı destekler. Metnin görünümüne ince ayar yapmak için karakterler (aralık aralığı) ve satırlar (satır aralığı) arasındaki boşluğu da kontrol edebilirsiniz.
Bu hususları anlamak, PostScript tabanlı iş akışlarında doğru yazı tipi kullanımının ve tutarlı işlemenin sağlanmasına yardımcı olabilir. Ama ne olursa olsun, - Aspose.Page size PS dosyalarının yazı tiplerini kolayca yönetme işlevselliğini sağlar. Bu API ile özel veya sistem yazı tiplerini kullanarak farklı renk ve fırçalardaki metinleri ekleyebilirsiniz. PS dosyalarıyla nasıl çalışılacağı ve PS dosyalarının metinleriyle nasıl çalışılacağı hakkında daha fazla bilgi edinmek için docs.aspose.com/page/cpp/ps/working-with-text/) özellikle belgelere uyun.
PS belgelerine metin eklemek için ihtiyacımız var:
Zengin özelliklere sahip, güçlü ve kullanımı kolay bir belge işleme ve dönüştürme C++ API'si olan Aspose.Page for C++ API.
NuGet paket yöneticisini açın ve Aspose.Page.Cpp'yi arayın ve yükleyin. Aşağıdaki komutu Paket Yönetici Konsolundan da kullanabilirsiniz.
Package Manager Console Command
PM> Install-Package Aspose.Page.Cpp
PS dosyasına metin ekleme adımları.
Aşağıdaki kod parçacığı, C#’taki Aspose.Page kitaplığını kullanarak bir PostScript (PS) belgesine Unicode dizesi kullanarak nasıl metin ekleneceğini gösterir. Örneğin daha kapsamlı bir versiyonunu ve daha fazla örneği görmek için Aspose.Page-for-C++ GitHub projesine gidin /source/WorkingWithText/AddTextUsingUnicodeStringPS.cpp).
- dataDir değişkenini, belgeleri içeren dizinin yoluyla başlatın.
- Gerekli yazı tiplerini içeren klasörün yolunu ayarlamak için FONTS_FOLDER değişkenini ayarlayın.
- FileStream sınıfını kullanarak PostScript belgesi için bir çıktı akışı oluşturun.
- PsSaveOptions nesnesini kullanarak PostScript belgesi için kaydetme seçeneklerini belirtin.
- Seçenekler nesnesinin AddFontsFolders özelliği, FONTS_FOLDER yolunu içeren bir diziye ayarlanır. Bu, sistemin söz konusu klasördeki gerekli yazı tiplerini bulmasını sağlar.
- Metni ve boyutunu belirtin.
- Çıkış akışı, seçenekler ve parametre olarak false ile yeni bir PsDocument örneği oluşturun. Bu, belirtilen seçeneklerle yeni bir PostScript belgesini başlatır.
- Geçerli sayfanın tamamlandığını belirterek belge nesnesinde ClosePage() yöntemini çağırın.
- PS belgesinde yapılan değişiklikleri kaydetmek için Save() yöntemini kullanın.
PS'ye resim ekleme
// 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 PS Dosya Biçimi nedir
PS formatı, sayfa açıklama dili (PDL) formatlarından biridir. Sayfada metin bilgilerinin yanı sıra grafik içerebilir. Bu nedenle format, görüntü düzenleme programlarının çoğu tarafından desteklendi. Postscript dosyasının kendisi, yazıcılar için bir tür talimattır. Sayfasından neyin ve nasıl yazdırılacağı hakkında bilgi içerir.