Convert PostScript to PNG using C++
Contents
[
Hide
]
You can check the quality of Aspose.Page PS to PNG conversion and view the results via free online PostScipt to PNG Converter
or PostScript Viewer
Aspose.Page for C++ PS to PNG converter allows to convert PostScript (PS) file to PNG image on Windows and Linux.
It is necessary to do several steps in order to perform PS to PNG conversion:
- Initialize an input stream for input PS file.
- Create an instance of PsDocument from created earlier input stream.
- Use ImageSaveOptions to specify AdditionalFontsFolder and SuppressError boolean value.
- Create an instance of ImageDevice specifying image type and size if it is necessary.
- Save PostScript document as image with image save options to an array of arrays of bytes. One array of bytes for one page of input document.
- Save resulting 2-dimensional arrays of bytes to PNG files creating for every bytes array a new file output stream.
- If SuppressErrors value was true, as it is by default, It is possible to see what errors were thrown during conversion of PS to PNG.
Following code snippet shows how to convert PS to PNG files in C++:
For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-C
// Specify image format
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();
// Initialize PostScript input stream
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(dataDir() + u"inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);
// If you want to convert Postscript file despite of minor errors set this flag
bool suppressErrors = true;
//Initialize options object with necessary parameters.
System::SharedPtr<ImageSaveOptions> options = System::MakeObject<ImageSaveOptions>(suppressErrors);
// If you want to add special folder where fonts are stored. Default fonts folder in OS is always included.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));
// Default image size is 595x842 and it is not mandatory to set it in ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// But if you need to specify size use constructor with two parameters
//System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(System::MakeObject<System::Drawing::Size>(595,842), imageFormat);
{
auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream]()
{
psStream->Close();
});
try
{
document->Save(device, options);
}
catch (...)
{
throw;
}
}
System::ArrayPtr<System::ArrayPtr<uint8_t>> imagesBytes = device->get_ImagesBytes();
int32_t i = 0;
{
for (System::ArrayPtr<uint8_t> imageBytes : imagesBytes)
{
System::String imagePath = System::IO::Path::GetFullPath(outDir() + System::String(u"out_image") + System::Convert::ToString(i) + u"." + System::ObjectExt::ToString(imageFormat).ToLower());
{
System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Clearing resources under 'using' statement
System::Details::DisposeGuard<1> __dispose_guard_1({ fs });
// ------------------------------------------
try
{
fs->Write(imageBytes, 0, imageBytes->get_Length());
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
i++;
}
}
Let’s consider ImageSaveOptions. Using this class we can assign different conversion parameters while converting PS to PNG.
- AdditionalFontsFolder specifies locations where to find fonts. System fonts folders are always included by default.
- SuppressError controls behaviour of PS to PNG converter when non-critical errors are appeared. If value is true than it is possible to view a list of such errors after conversion in Exceptions field. Default value is true.
- Debug allows outputting debug information to console. Default value is false.
Evaluate PS to PNG conversion online on our PS to PNG Converter. You can convert several PS files to PNG at once and dowload results in a few seconds.
You can download examples and data files from GitHub.
You can download examples and data files from GitHub.