Chuyển đổi PUB thành Image bằng C ++

Tệp Microsoft Publisher (PUB) được sử dụng để in hoặc xuất bản thông tin. Có thể có các tình huống mà bạn cần chia sẻ các tệp này và bên nhận không có quyền truy cập vào Microsoft Publisher. Trong những trường hợp như vậy, việc chuyển đổi các tệp này thành hình ảnh trước khi chia sẻ có thể tỏ ra hữu ích. Để đạt được điều đó, bài viết này sẽ hướng dẫn bạn cách chuyển đổi tệp PUB sang các định dạng hình ảnh khác nhau bằng C ++.

API C ++ để chuyển đổi tệp PUB sang định dạng hình ảnh

Chúng tôi sẽ sử dụng các API Aspose.PUB cho C ++Aspose.PDF cho C ++ để thực hiện chuyển đổi này. Cái trước là thư viện để làm việc với các tệp Microsoft Publisher (PUB), trong khi cái sau là thư viện để tạo, đọc và sửa đổi các tệp PDF. Chúng tôi sẽ sử dụng API Aspose.PUB cho C ++ để chuyển đổi tệp PUB sang định dạng PDF và API Aspose.PDF cho C ++ để chuyển đổi tệp PDF đã tạo sang định dạng hình ảnh. Bạn có thể cài đặt các API thông qua NuGet hoặc tải xuống trực tiếp từ phần Tải xuống.

PM> Install-Package Aspose.PUB.Cpp
PM> Install-Package Aspose.PDF.Cpp

Chuyển đổi tệp PUB sang hình ảnh JPG bằng C ++

Sau đây là các bước để chuyển đổi tệp PUB sang hình ảnh JPG.

Đoạn mã mẫu sau đây cho thấy cách chuyển đổi tệp PUB sang ảnh JPG bằng C ++.

// Nguồn PUB và đường dẫn tệp PDF xuất
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";

// Tải tệp PUB
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();

// Chuyển đổi tệp PUB thành PDF
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);

// Tải tệp PDF đã tạo
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);

// Lặp lại các trang PDF
for (auto page : pdfDocument->get_Pages())
{
	// Nhận kích thước của trang PDF
	int width = info->GetPageWidth(page->get_Number());
	int height = info->GetPageHeight(page->get_Number());

	// Tạo một phiên bản của lớp Resolution
	auto resolution = MakeObject<Devices::Resolution>(300);

	// Tạo thiết bị JPEG với Chiều rộng, Chiều cao và Độ phân giải được chỉ định
	auto device = MakeObject<Devices::JpegDevice>(width, height, resolution);

	// Tạo Dòng tệp cho hình ảnh đầu ra
	System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(String::Format(u"OutputDirectory\\page_{0}.jpg", page->get_Number()));

	// Chuyển đổi trang PDF sang hình ảnh JPG
	device->Process(page, imageStream);

	// Đóng luồng
	imageStream->Close();
}

Chuyển đổi tệp PUB thành hình ảnh PNG bằng C ++

Để chuyển đổi tệp PUB sang hình ảnh PNG, hãy làm theo các bước dưới đây.

Đoạn mã mẫu sau đây cho thấy cách chuyển đổi tệp PUB thành ảnh PNG bằng C ++.

// Nguồn PUB và đường dẫn tệp PDF xuất
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";

// Tải tệp PUB
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();

// Chuyển đổi tệp PUB thành PDF
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);

// Tải tệp PDF đã tạo
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);

// Lặp lại các trang PDF
for (auto page : pdfDocument->get_Pages())
{
	// Nhận kích thước của trang PDF
	int width = info->GetPageWidth(page->get_Number());
	int height = info->GetPageHeight(page->get_Number());

	// Tạo một phiên bản của lớp Resolution
	auto resolution = MakeObject<Devices::Resolution>(300);

	// Tạo thiết bị PNG với Chiều rộng, Chiều cao và Độ phân giải được chỉ định
	auto device = MakeObject<Devices::PngDevice>(width, height, resolution);

	// Tạo Dòng tệp cho hình ảnh đầu ra
	System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(String::Format(u"OutputDirectory\\page_{0}.png", page->get_Number()));

	// Chuyển đổi trang PDF sang hình ảnh PNG
	device->Process(page, imageStream);

	// Đóng luồng
	imageStream->Close();
}

Chuyển đổi tệp PUB thành hình ảnh TIFF bằng C ++

Sau đây là các bước để chuyển đổi tệp PUB sang hình ảnh TIFF.

Đoạn mã mẫu sau đây trình bày cách chuyển đổi tệp PUB thành ảnh TIFF bằng C ++.

// Nguồn PUB và đường dẫn tệp PDF xuất
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";

// Tải tệp PUB
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();

// Chuyển đổi tệp PUB thành PDF
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);

// Tải tệp PDF đã tạo
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);

// Nhận kích thước của trang PDF đầu tiên
int width = info->GetPageWidth(1);
int height = info->GetPageHeight(1);

// Tạo một phiên bản của lớp Resolution
auto resolution = MakeObject<Devices::Resolution>(300);

// Tạo một phiên bản của lớp TiffSettings và đặt các cài đặt cần thiết
auto settings = MakeObject<Devices::TiffSettings>();
settings->set_Compression(Devices::CompressionType::None);
settings->set_Depth(Devices::ColorDepth::Default);

// Tạo thiết bị TIFF với Chiều rộng, Chiều cao, Độ phân giải và Cài đặt Tiff được chỉ định
auto device = MakeObject<Devices::TiffDevice>(width, height, resolution, settings);

// Tạo Dòng tệp cho hình ảnh đầu ra
System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(u"OutputDirectory\\pdf.tiff");

// Chuyển đổi tệp PDF thành hình ảnh TIFF
device->Process(pdfDocument, 1, 1, imageStream);

// Đóng luồng
imageStream->Close();

Nhận giấy phép miễn phí

Bạn có thể dùng thử API mà không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Sự kết luận

Trong bài viết này, bạn đã học cách chuyển đổi tệp Microsoft Publisher (PUB) sang hình ảnh JPG, PNG và TIFF bằng C ++. Chúng tôi đã sử dụng Aspose.PUB cho C ++ và Aspose.PDF cho C ++ API để đạt được điều này. Bạn có thể khám phá chi tiết các API này bằng cách truy cập tài liệu chính thức của chúng. Trong trường hợp có bất kỳ câu hỏi nào, vui lòng liên hệ với chúng tôi tại diễn đàn hỗ trợ miễn phí của chúng tôi.

Xem thêm