Преобразование различных форматов изображений в PDF

Aspose.PDF for C++ позволяет конвертировать различные форматы изображений в PDF файлы. Наша библиотека демонстрирует фрагменты кода для конвертации самых популярных форматов изображений, таких как BMP, DICOM, EMF, JPG, PNG, SVG и TIFF.

Преобразование BMP в PDF

Преобразование файлов BMP в PDF документ с использованием библиотеки Aspose.PDF for C++.

BMP изображения это файлы с расширением. BMP представляют файлы изображений, используемые для хранения растровых цифровых изображений. Эти изображения независимы от графического адаптера и также называются форматом независимого от устройства растрового изображения (DIB). Вы можете конвертировать BMP в PDF файлы с помощью API Aspose.PDF for C++. Таким образом, вы можете следовать следующим шагам для преобразования изображений BMP:

  1. Создайте Класс String для имени пути и имени файла.
  2. Создается экземпляр нового объекта Document.
  3. Добавьте новую Страницу в этот Документ.
  4. Создается новый Aspose.Pdf BMP.
  5. Объект Aspose.PDF BMP инициализируется с использованием входного файла.
  6. Aspose.PDF BMP добавляется на страницу как абзац.
  7. Наконец, сохраните выходной PDF-файл.

Таким образом, следующий фрагмент кода следует этим шагам и показывает, как преобразовать BMP в PDF с использованием C++:

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:

  1. Создайте String Class для имени пути и имени файла.
  2. Создайте объект Document.
  3. Добавьте Page в коллекцию страниц документа.
  4. Aspose.PDF TDicom добавлен на страницу как абзац.
  5. Загрузите и сохраните входной файл изображения.

Следующий фрагмент кода показывает, как конвертировать файлы DICOM в формат PDF с помощью Aspose.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 изображение, используя следующие шаги:

  1. Создайте String Class для имени пути и имени файла.
  2. Создается экземпляр нового объекта Document.
  3. Добавьте новую страницу в этот Document.

Новый Aspose.Pdf TIFF создан.

  1. Объект Aspose.PDF TIFF инициализируется с использованием входного файла.
  2. Aspose.PDF TIFF добавляется на страницу как параграф.
  3. Загрузите и сохраните входной файл изображения.

Кроме того, следующий фрагмент кода показывает, как конвертировать EMF в PDF с помощью C++ в вашем фрагменте кода:

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 для C++** предлагает лучшее решение.

Вы можете очень легко преобразовать изображения JPG в PDF с помощью Aspose.PDF для C++, следуя этим шагам:

1. Создайте [класс String](https://reference.aspose.com/pdf/cpp/class/system.string) для имени пути и имени файла.
1. Создается экземпляр нового объекта Document.
1. Добавьте новую страницу в этот [Document](https://reference.aspose.com/pdf/cpp/class/aspose.pdf.document).
1. Создается новый объект Aspose::Pdf::Image.
1. Объект изображения Aspose.PDF инициализируется с использованием входного файла.
1. Aspose.PDF Image добавляется на страницу как абзац.
1. Загрузите и сохраните входной файл изображения.

Пример кода ниже показывает, как преобразовать JPG изображение в PDF с использованием C++:

```cpp
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-документа с помощью следующих шагов:

  1. Загрузить входной файл изображения
  2. Получить высоту и ширину изображения
  3. Установить высоту, ширину и поля страницы
  4. Сохранить выходной PDF-файл

Следующий фрагмент кода показывает, как преобразовать изображение в PDF с одинаковой высотой и шириной страницы, используя C++:

void ConvertJPGtoPDF_fitsize() 
{
    std::clog << "JPEG to PDF convert: Start" << std::endl;
    // Строка для имени пути
    String _dataDir("C:\\Samples\\Conversion\\");

    // Строка для имени входного файла
    String infilename("sample.jpg");

    // Строка для имени выходного файла
    String outfilename("ImageToPDF-JPG.pdf");

    // Открыть документ
    auto document = MakeObject<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);

    // Добавить изображение на страницу
    page->get_Paragraphs()->Add(image);

    // Установить размеры и поля страницы
    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);

    // Сохранить выходной документ
    document->Save(_dataDir + outfilename);
    std::clog << "JPEG to PDF convert: Finish" << std::endl;
}

Конвертировать PNG в PDF

Aspose.PDF для C++ поддерживает функцию конвертации изображений PNG в формат PDF. Ознакомьтесь со следующим примером кода для выполнения вашей задачи.

PNG относится к типу растрового формата файлов изображений, который использует без потерь сжатие, что делает его популярным среди пользователей.

Вы можете конвертировать PNG в изображение PDF, используя следующие шаги:

  1. Создайте String Class для имени пути и имени файла.
  2. Создается экземпляр нового объекта Document.
  3. Добавьте новую страницу в этот документ.
  4. Создается новый Aspose.Pdf PNG.
  5. Объект Aspose.PDF PNG инициализируется с использованием входного файла.
  6. Aspose.PDF PNG добавляется на страницу как параграф.
  7. Загрузите и сохраните входной файл изображения.

Кроме того, приведенный ниже фрагмент кода показывает, как конвертировать PNG в PDF в ваших C++ приложениях:

void ConvertPNGtoPDF() 
{
    std::clog << "PNG to PDF convert: Start" << std::endl;
    // Строка для имени пути
    String _dataDir("C:\\Samples\\Conversion\\");

    // Строка для имени входного файла
    String infilename("sample.png");

    // Строка для имени выходного файла
    String outfilename("ImageToPDF-PNG.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 << "PNG to PDF convert: Finish" << std::endl;
}

Конвертировать SVG в PDF

Aspose.PDF для C++ объясняет, как конвертировать SVG-изображения в формат PDF и как получить размеры исходного файла SVG.

Scalable Vector Graphics (SVG) — это семейство спецификаций формата файлов на основе XML для двумерной векторной графики, как статической, так и динамической (интерактивной или анимированной). Спецификация SVG является открытым стандартом, который разрабатывается Консорциумом Всемирной паутины (W3C) с 1999 года.

SVG-изображения и их поведение определяются в текстовых файлах XML. Это означает, что они могут быть найдены, индексированы, скриптованы и, при необходимости, сжаты. Как файлы XML, SVG-изображения можно создавать и редактировать с помощью любого текстового редактора, но часто удобнее создавать их с помощью графических программ, таких как Inkscape.

  1. Создайте класс String для имени пути и имени файла.
  2. Создайте экземпляр класса SvgLoadOptions.
  3. Создайте экземпляр класса Document с указанием исходного имени файла и опций.
  4. Сохраните документ с нужным именем файла.

Следующий фрагмент кода показывает процесс преобразования файла SVG в формат PDF с использованием Aspose.PDF для C++.

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;
}

Сonsider an example with advanced features:

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. Это означает, что вы можете конвертировать изображение TIFF в PDF в своих приложениях на C++.

TIFF или TIF, Tagged Image File Format, представляет собой растровые изображения, предназначенные для использования на различных устройствах, соответствующих этому стандарту файлового формата. Изображение TIFF может содержать несколько кадров с различными изображениями. Формат файла Aspose.PDF также поддерживается, будь то однофреймное или многофреймное изображение TIFF. Таким образом, вы можете конвертировать изображение TIFF в PDF в своих приложениях на C++. Поэтому мы рассмотрим пример конвертации многостраничного изображения TIFF в многостраничный документ PDF с помощью следующих шагов:

  1. Создайте Строковый Класс для имени пути и имени файла.
  2. Создается экземпляр нового объекта Document.
  3. Добавьте новую страницу в этот Document.
  4. Создается новый Aspose.Pdf TIFF.
  5. Объект Aspose.PDF TIFF инициализируется с использованием входного файла.
  6. Aspose.PDF TIFF добавляется на страницу в качестве абзаца.
  7. Загрузите и сохраните входной файл изображения.

Кроме того, следующий фрагмент кода показывает, как преобразовать многостраничное или многокадровое изображение TIFF в PDF с использованием C++:

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;
}