将各种图像格式转换为PDF
Aspose.PDF for C++ 允许您将不同格式的图像转换为PDF文件。我们的库展示了将最流行的图像格式(如BMP、DICOM、EMF、JPG、PNG、SVG和TIFF格式)转换的代码片段。
将BMP转换为PDF
使用**Aspose.PDF for C++**库将BMP文件转换为PDF文档。
BMP图像是具有扩展名的文件。BMP表示位图图像文件,用于存储位图数字图像。这些图像独立于图形适配器,也称为设备独立位图(DIB)文件格式。您可以使用Aspose.PDF for C++ API将BMP转换为PDF文件。 因此,您可以按照以下步骤将 BMP 图像转换为 PDF:
- 创建一个用于路径名和文件名的String 类。
- 创建一个新的 Document 对象实例。
- 向此Document添加一个新的Page。
- 创建一个新的 Aspose.Pdf BMP。
- 使用输入文件初始化 Aspose.PDF BMP 对象。
- 将 Aspose.PDF BMP 作为段落添加到页面。
- 最后,保存输出 PDF 文件
因此,以下代码片段遵循这些步骤,并展示如何使用 C++ 将 BMP 转换为 PDF:
void ConvertBMPtoPDF()
{
std::clog << "BMP to PDF convert: Start" << std::endl;
// String for path name
String _dataDir("C:\\Samples\\Conversion\\");
// String for input file name
String infilename("sample.bmp");
// String for input file name
String outfilename("ImageToPDF-BMP.pdf");
// Open document
auto document = MakeObject<Document>();
// Add empty page in empty document
auto page = document->get_Pages()->Add();
auto image = MakeObject<Aspose::Pdf::Image>();
image->set_File(_dataDir + infilename);
// Add image on a page
page->get_Paragraphs()->Add(image);
// Save output document
document->Save(_dataDir + outfilename);
std::clog << "BMP to PDF convert: Finish" << std::endl;
}
转换 DICOM 至 PDF
DICOM 格式是医疗行业用于创建、存储、传输和可视化检查患者的数字医学图像和文档的标准。
Aspose.PDF for C++ 允许您转换 DICOM 和 SVG 图像,但由于技术原因要添加图像,您需要指定要添加到 PDF 中的文件类型:
- 创建一个 String 类 用于路径名和文件名。
- 实例化 Document 对象。
- 向文档的页面集合中添加一个 Page。
- Aspose.PDF TDicom 被添加为页面的段落。
- 加载并保存输入图像文件。
以下代码片段展示了如何使用 Aspose.PDF 将 DICOM 文件转换为 PDF 格式。您应加载 DICOM 图像,将图像放置在 PDF 文件中的某一页,并将输出保存为 PDF。
void ConvertDICOMtoPDF()
{
std::clog << "DICOM to PDF convert: Start" << std::endl;
String _dataDir("C:\\Samples\\Conversion\\");
String infilename("CR_Anno.dcm");
String outfilename("PDFWithDicomImage_out.pdf");
// Instantiate Document Object
auto document = MakeObject<Document>();
// Add a page to pages collection of document
auto page = document->get_Pages()->Add();
auto image = MakeObject<Aspose::Pdf::Image>();
image->set_File(_dataDir + infilename);
image->set_FileType(Aspose::Pdf::ImageFileType::Dicom);
page->get_Paragraphs()->Add(image);
// Save output as PDF format
document->Save(_dataDir + outfilename);
std::clog << "DICOM to PDF convert: Finish" << std::endl;
}
将 EMF 转换为 PDF
EMFEMF 以设备无关的方式存储图形图像。EMF 的元文件由按时间顺序排列的可变长度记录组成,可以在任何输出设备上解析后呈现存储的图像。此外,您可以使用以下步骤将 EMF 转换为 PDF 图像:
- 为路径名和文件名创建一个String Class。
- 创建一个新的 Document 对象实例。
- 向此 Document 添加一个新页面。
- A new Aspose.Pdf TIFF is created.
- 使用输入文件初始化Aspose.PDF TIFF对象。
- Aspose.PDF TIFF作为段落添加到页面中。
- 加载并保存输入图像文件。
此外,以下代码片段展示了如何在代码片段中使用C++将EMF转换为PDF:
void ConvertEMFtoPDF()
{
std::clog << "EMF to PDF convert: Start" << std::endl;
String _dataDir("C:\\Samples\\Conversion\\");
String infilename("sample.emf");
String outfilename("ImageToPDF_emf.pdf");
auto fileStream = System::IO::File::OpenRead(_dataDir + infilename);
auto myimage = MakeObject<System::Drawing::Bitmap>(fileStream);
auto document = MakeObject<Document>();
auto page = document->get_Pages()->Add();
auto currentImage = MakeObject<System::IO::MemoryStream>();
myimage->Save(currentImage, System::Drawing::Imaging::ImageFormat::get_Tiff());
auto imageht = MakeObject<Aspose::Pdf::Image>();
imageht->set_ImageStream(currentImage);
page->get_Paragraphs()->Add(imageht);
document->Save(_dataDir + outfilename);
std::clog << "EMF to PDF convert: Finish" << std::endl;
}
将 JPG 转换为 PDF
不必再想如何将 JPG 转换为 PDF,因为 Aspose.PDF for C++ 库有最好的解决方案。
您可以通过以下步骤非常轻松地使用 Aspose.PDF for C++ 将 JPG 图像转换为 PDF:
- 为路径名和文件名创建一个 String 类。
- 创建一个新的 Document 对象实例。
- 向此 Document 添加一个新页面。
- 创建一个新的 Aspose::Pdf::Image。
- 使用输入文件初始化 Aspose.PDF Image 对象。
- Aspose.PDF 图像以段落的形式添加到页面。
- 加载并保存输入图像文件。
下面的代码片段展示了如何使用 C++ 将 JPG 图像转换为 PDF:
void ConvertJPEGtoPDF()
{
std::clog << "JPEG to PDF convert: Start" << std::endl;
// 路径名的字符串
String _dataDir("C:\\Samples\\Conversion\\");
// 输入文件名的字符串
String infilename("sample.jpg");
// 输入文件名的字符串
String outfilename("ImageToPDF-JPEG.pdf");
// 打开文档
auto document = MakeObject<Document>();
// 在空文档中添加空页面
auto page = document->get_Pages()->Add();
auto image = MakeObject<Aspose::Pdf::Image>();
image->set_File(_dataDir + infilename);
// 在页面上添加图像
page->get_Paragraphs()->Add(image);
// 保存输出文档
document->Save(_dataDir + outfilename);
std::clog << "JPEG to PDF convert: Finish" << std::endl;
}
然后你可以看到如何将图像转换为与页面相同高度和宽度的 PDF。 我们将获取图像尺寸,并根据以下步骤设置PDF文档的页面尺寸:
- 加载输入图像文件
- 获取图像的高度和宽度
- 设置页面的高度、宽度和边距
- 保存输出PDF文件
以下代码片段展示了如何使用C++将图像转换为相同页面高度和宽度的PDF:
void ConvertJPGtoPDF_fitsize()
{
std::clog << "JPEG to PDF convert: Start" << std::endl;
// String for path name
String _dataDir("C:\\Samples\\Conversion\\");
// String for input file name
String infilename("sample.jpg");
// String for input file name
String outfilename("ImageToPDF-JPG.pdf");
// Open document
auto document = MakeObject<Document>();
// Add empty page in empty document
auto page = document->get_Pages()->Add();
auto fileStream = System::IO::File::OpenRead(_dataDir + infilename);
auto bitMap = MakeObject<System::Drawing::Bitmap>(fileStream);
auto image = MakeObject<Aspose::Pdf::Image>();
image->set_File(_dataDir + infilename);
// Add image on a page
page->get_Paragraphs()->Add(image);
// Set page dimensions and margins
page->get_PageInfo()->set_Height(bitMap->get_Height());
page->get_PageInfo()->set_Width(bitMap->get_Width());
page->get_PageInfo()->get_Margin()->set_Bottom(0);
page->get_PageInfo()->get_Margin()->set_Top(0);
page->get_PageInfo()->get_Margin()->set_Right(0);
page->get_PageInfo()->get_Margin()->set_Left(0);
page->get_Paragraphs()->Add(image);
// Save output document
document->Save(_dataDir + outfilename);
std::clog << "JPEG to PDF convert: Finish" << std::endl;
}
将PNG转换为PDF
**Aspose.PDF for C++**支持将PNG图像转换为PDF格式。查看下一个代码片段以实现您的任务。
PNG指的是一种使用无损压缩的光栅图像文件格式,这使其在用户中很受欢迎。
您可以使用以下步骤将PNG转换为PDF图像:
-
为路径名和文件名创建一个String类。
-
创建一个新的Document对象的实例。
-
在此文档中添加一个新页面。
-
创建一个新的 Aspose.Pdf PNG。
-
使用输入文件初始化 Aspose.PDF PNG 对象。
-
将 Aspose.PDF PNG 作为段落添加到页面。
-
加载并保存输入图像文件。
此外,下面的代码片段展示了如何在 C++ 应用程序中将 PNG 转换为 PDF:
void ConvertPNGtoPDF()
{
std::clog << "PNG to PDF convert: Start" << std::endl;
// String for path name
String _dataDir("C:\\Samples\\Conversion\\");
// String for input file name
String infilename("sample.png");
// String for input file name
String outfilename("ImageToPDF-PNG.pdf");
// Open document
auto document = MakeObject<Document>();
// Add empty page in empty document
auto page = document->get_Pages()->Add();
auto image = MakeObject<Aspose::Pdf::Image>();
image->set_File(_dataDir + infilename);
// Add image on a page
page->get_Paragraphs()->Add(image);
// Save output document
document->Save(_dataDir + outfilename);
std::clog << "PNG to PDF convert: Finish" << std::endl;
}
将 SVG 转换为 PDF
Aspose.PDF for C++ 解释了如何将 SVG 图像转换为 PDF 格式以及如何获取源 SVG 文件的尺寸。
可伸缩矢量图形 (SVG) 是基于 XML 的二维矢量图形文件格式的规格家族,既可以是静态的,也可以是动态的(交互或动画)。SVG 规范是一个开放标准,自 1999 年以来由万维网联盟 (W3C) 开发。
SVG 图像及其行为在 XML 文本文件中定义。 这意味着它们可以被搜索、索引、脚本化,如果需要,还可以被压缩。作为XML文件,SVG图像可以用任何文本编辑器创建和编辑,但通常用像Inkscape这样的绘图程序创建它们更方便。
- 为路径名和文件名创建一个String Class。
- 创建一个
SvgLoadOptions
类的实例。 - 使用提到的源文件名和选项创建Document类的实例。
- 使用所需的文件名保存文档。
以下代码片段展示了使用Aspose.PDF for C++将SVG文件转换为PDF格式的过程。
void ConvertSVGtoPDF()
{
std::clog << "SVG to PDF convert: Start" << std::endl;
String _dataDir("C:\\Samples\\Conversion\\");
String infilename("sample.svg");
String outfilename("ImageToPDF-SVG.pdf");
auto options = MakeObject<SvgLoadOptions>();
try {
auto document = MakeObject<Document>(_dataDir + infilename, options);
document->Save(_dataDir + outfilename);
}
catch (System::Exception ex) {
std::cerr << ex->get_Message() << std::endl;
}
std::clog << "SVG to PDF convert: Finish" << std::endl;
}
考虑一个具有高级功能的示例:
void ConvertSVGtoPDF_Advanced()
{
std::clog << "SVG to PDF convert: Start" << std::endl;
String _dataDir("C:\\Samples\\Conversion\\");
String infilename("Sweden-Royal-flag-grand-coa.svg");
String outfilename("ImageToPDF-SVG.pdf");
auto options = MakeObject<SvgLoadOptions>();
options->set_AdjustPageSize(true);
options->ConversionEngine = SvgLoadOptions::ConversionEngines::NewEngine;
try {
auto document = MakeObject<Document>(_dataDir + infilename, options);
document->Save(_dataDir + outfilename);
}
catch (System::Exception ex) {
std::cerr << ex->get_Message() << std::endl;
}
std::clog << "SVG to PDF convert: Finish" << std::endl;
}
将 TIFF 转换为 PDF
Aspose.PDF 文件格式支持,无论是单帧还是多帧 TIFF 图像。这意味着您可以在 C++ 应用程序中将 TIFF 图像转换为 PDF。
TIFF 或 TIF,标记图像文件格式,代表用于各种符合此文件格式标准的设备上的光栅图像。TIFF 图像可以包含多个帧,每个帧具有不同的图像。Aspose.PDF 文件格式也支持,无论是单帧还是多帧 TIFF 图像。因此,您可以在 C++ 应用程序中将 TIFF 图像转换为 PDF。因此,我们将通过以下步骤考虑将多页 TIFF 图像转换为多页 PDF 文档的示例:
- 为路径名和文件名创建一个String 类。
- 一个新的 Document 对象实例被创建。
- 向此 Document 添加一个新页面。
- 创建一个新的 Aspose.Pdf TIFF。
- 使用输入文件初始化 Aspose.PDF TIFF 对象。
- 将 Aspose.PDF TIFF 作为段落添加到页面。
- 加载并保存输入图像文件。
此外,以下代码片段展示了如何使用 C++ 将多页或多帧的 TIFF 图像转换为 PDF:
void ConvertTIFFtoPDF()
{
std::clog << "TIFF to PDF convert: Start" << std::endl;
String _dataDir("C:\\Samples\\Conversion\\");
String infilename("sample.tiff");
String outfilename("ImageToPDF-TIFF.pdf");
auto fileStream = System::IO::File::OpenRead(_dataDir + infilename);
auto myimage = MakeObject<System::Drawing::Bitmap>(fileStream);
auto document = MakeObject<Document>();
auto page = document->get_Pages()->Add();
auto currentImage = MakeObject<System::IO::MemoryStream>();
myimage->Save(currentImage, System::Drawing::Imaging::ImageFormat::get_Tiff());
auto imageht = MakeObject<Aspose::Pdf::Image>();
imageht->set_ImageStream(currentImage);
page->get_Paragraphs()->Add(imageht);
document->Save(_dataDir + outfilename);
std::clog << "TIFF to PDF convert: Finish" << std::endl;
}