Файлы Microsoft Publisher (PUB) используются для печати или публикации информации. Могут быть сценарии, когда вам нужно поделиться этими файлами, а принимающая сторона не имеет доступа к Microsoft Publisher. В таких случаях преобразование этих файлов в изображения перед отправкой может оказаться полезным. С этой целью эта статья научит вас конвертировать файлы PUB в различные форматы изображений с помощью C++.
- API-интерфейсы C++ для преобразования файлов PUB в формат изображения
- Преобразование файлов PUB в изображения JPG с помощью C++
- Преобразование файлов PUB в изображения PNG с помощью C++
- Преобразование файлов PUB в изображения TIFF с использованием C++
API-интерфейсы C++ для преобразования файлов PUB в формат изображения
Мы будем использовать API Aspose.PUB для C++ и Aspose.PDF для C++ для выполнения этого преобразования. Первая — это библиотека для работы с файлами Microsoft Publisher (PUB), а вторая — библиотека для создания, чтения и изменения файлов PDF. Мы будем использовать Aspose.PUB для API C++ для преобразования файлов PUB в формат PDF и Aspose.PDF для API C++ для преобразования сгенерированных PDF-файлов в формат изображения. Вы можете либо установить API через NuGet, либо загрузить их напрямую из раздела Загрузки.
PM> Install-Package Aspose.PUB.Cpp
PM> Install-Package Aspose.PDF.Cpp
Преобразование файлов PUB в изображения JPG с помощью C++
Ниже приведены шаги для преобразования файлов PUB в изображения JPG.
- Загрузите файл PUB с помощью метода PubFactory::CreateParser(System::String fileName).
- Преобразуйте файл PUB в формат PDF с помощью ConvertToPdf(System::SharedPtr doc, метод System::String fileName).
- Загрузите сгенерированный файл PDF с помощью класса Document.
- Пролистайте страницы PDF-файла.
- Получите размеры страницы PDF.
- Создайте экземпляр класса Resolution.
- Создайте экземпляр класса JpegDevice, указав ширину, высоту и разрешение.
- Создайте экземпляр FileStream для выходного изображения.
- Преобразуйте страницу PDF в изображение JPG с помощью JpegDevice->Process(System::SharedPtr страница, метод System::SharedPtr< System::IO::Stream > output).
- Закройте поток.
В следующем примере кода показано, как преобразовать файлы PUB в изображения JPG с помощью C++.
// Пути исходного PUB и выходного PDF-файла
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";
// Загрузите PUB-файл
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();
// Преобразование файла PUB в PDF
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);
// Загрузите сгенерированный файл PDF
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);
// Итерация по страницам PDF
for (auto page : pdfDocument->get_Pages())
{
// Получить размеры страницы PDF
int width = info->GetPageWidth(page->get_Number());
int height = info->GetPageHeight(page->get_Number());
// Создайте экземпляр класса Resolution
auto resolution = MakeObject<Devices::Resolution>(300);
// Создайте устройство JPEG с указанными шириной, высотой и разрешением
auto device = MakeObject<Devices::JpegDevice>(width, height, resolution);
// Создайте файловый поток для выходного изображения
System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(String::Format(u"OutputDirectory\\page_{0}.jpg", page->get_Number()));
// Преобразование страницы PDF в изображение JPG
device->Process(page, imageStream);
// Закрыть поток
imageStream->Close();
}
Преобразование файлов PUB в изображения PNG с помощью C++
Чтобы преобразовать файлы PUB в изображения PNG, выполните следующие действия.
- Загрузите файл PUB с помощью метода PubFactory::CreateParser(System::String fileName).
- Преобразуйте файл PUB в формат PDF с помощью ConvertToPdf(System::SharedPtr doc, метод System::String fileName).
- Загрузите сгенерированный файл PDF с помощью класса Document.
- Пролистайте страницы PDF-файла.
- Получите размеры страницы PDF.
- Создайте экземпляр класса Resolution.
- Создайте экземпляр класса PngDevice, указав ширину, высоту и разрешение.
- Создайте экземпляр FileStream для выходного изображения.
- Преобразуйте страницу PDF в изображение PNG, используя PngDevice->Process(System::SharedPtr страница, System::SharedPtrSystem::IO::Stream вывод) метод.
- Закройте поток.
В следующем примере кода показано, как преобразовать файлы PUB в изображения PNG с помощью C++.
// Пути исходного PUB и выходного PDF-файла
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";
// Загрузите PUB-файл
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();
// Преобразование файла PUB в PDF
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);
// Загрузите сгенерированный файл PDF
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);
// Итерация по страницам PDF
for (auto page : pdfDocument->get_Pages())
{
// Получить размеры страницы PDF
int width = info->GetPageWidth(page->get_Number());
int height = info->GetPageHeight(page->get_Number());
// Создайте экземпляр класса Resolution
auto resolution = MakeObject<Devices::Resolution>(300);
// Создайте устройство PNG с указанными шириной, высотой и разрешением
auto device = MakeObject<Devices::PngDevice>(width, height, resolution);
// Создайте файловый поток для выходного изображения
System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(String::Format(u"OutputDirectory\\page_{0}.png", page->get_Number()));
// Преобразование страницы PDF в изображение PNG
device->Process(page, imageStream);
// Закрыть поток
imageStream->Close();
}
Преобразование файлов PUB в изображения TIFF с использованием C++
Ниже приведены шаги для преобразования файлов PUB в изображения TIFF.
- Загрузите файл PUB с помощью метода PubFactory::CreateParser(System::String fileName).
- Преобразуйте файл PUB в формат PDF с помощью ConvertToPdf(System::SharedPtr doc, метод System::String fileName).
- Загрузите сгенерированный файл PDF с помощью класса Document.
- Получите размеры первой страницы PDF.
- Создайте экземпляр класса Resolution.
- Создайте экземпляр класса TiffSettings и установите необходимые параметры.
- Создайте экземпляр класса TiffDevice, указав ширину, высоту, разрешение и TiffSettings.
- Создайте экземпляр FileStream для выходного изображения.
- Преобразуйте файл PDF в изображение TIFF с помощью TiffDevice->Process( System::SharedPtrAspose::Pdf::Document документ, int32t fromPage, int32t toPage, System::SharedPtrSystem::IO::Stream вывод) метод.
- Закройте поток.
В следующем примере кода показано, как преобразовать файлы PUB в изображения TIFF с помощью C++.
// Пути исходного PUB и выходного PDF-файла
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";
// Загрузите PUB-файл
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();
// Преобразование файла PUB в PDF
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);
// Загрузите сгенерированный файл PDF
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);
// Получить размеры первой страницы PDF
int width = info->GetPageWidth(1);
int height = info->GetPageHeight(1);
// Создайте экземпляр класса Resolution
auto resolution = MakeObject<Devices::Resolution>(300);
// Создайте экземпляр класса TiffSettings и установите необходимые параметры.
auto settings = MakeObject<Devices::TiffSettings>();
settings->set_Compression(Devices::CompressionType::None);
settings->set_Depth(Devices::ColorDepth::Default);
// Создайте устройство TIFF с указанными параметрами ширины, высоты, разрешения и TiffSettings.
auto device = MakeObject<Devices::TiffDevice>(width, height, resolution, settings);
// Создайте файловый поток для выходного изображения
System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(u"OutputDirectory\\pdf.tiff");
// Преобразование файла PDF в изображение TIFF
device->Process(pdfDocument, 1, 1, imageStream);
// Закрыть поток
imageStream->Close();
Получить бесплатную лицензию
Вы можете попробовать API без ограничений на пробную версию, запросив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как конвертировать файлы Microsoft Publisher (PUB) в изображения JPG, PNG и TIFF с помощью C++. Для этого мы использовали Aspose.PUB для C++ и Aspose.PDF для C++ API. Вы можете подробно изучить эти API, посетив их официальную документацию. Если у вас возникнут вопросы, обращайтесь к нам на бесплатный форум поддержки.