PostScript EPS 또는 PS 파일을 일반 이미지 형식으로 변환하는 것은 일반적으로 수행해야 하는 작업입니다. 이러한 파일이 많은 경우 프로그래밍 방식으로 변환하는 것이 더 효율적입니다. 이에 비추어 이 기사에서는 C++를 사용하여 PostScript EPS/PS 파일을 PNG 또는 JPG 이미지 형식으로 변환하는 방법을 설명합니다.

PostScript EPS/PS 파일을 PNG 또는 JPG 이미지로 변환하기 위한 C++ API

Aspose.Page for C++XPS 및 PostScript 파일을 렌더링하고 조작하기 위한 C++ 라이브러리입니다. 이를 사용하여 XPS 및 EPS/PS 파일을 PDF, JPEG, BMP, TIFF 등과 같은 여러 다른 형식으로 처리하고 변환할 수 있습니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.

PM> Install-Package Aspose.Page.Cpp

C++를 사용하여 PostScript EPS/PS 파일을 PNG 이미지 형식으로 변환

다음은 EPS 또는 PS 파일을 PNG 이미지 형식으로 변환하는 단계입니다.

  • PostScript 입력 스트림을 초기화합니다.
  • 입력 스트림을 사용하여 PsDocument 클래스의 인스턴스를 만듭니다.
  • ImageSaveOptions 클래스의 개체를 인스턴스화합니다.
  • ImageDevice 클래스의 인스턴스를 만듭니다.
  • [PsDocument->Save(System::SharedPtr)를 사용하여 PostScript 파일을 ImageDevice에 저장합니다.Aspose::Page::Device 장치, 시스템::SharedPtr 옵션)]14 메서드.
  • ImageDevice->getImagesBytes() 메서드를 사용하여 이미지 바이트를 검색합니다.
  • 이미지 바이트를 반복합니다.
  • 출력 스트림을 초기화하고 PNG 이미지를 저장합니다.

다음 샘플 코드는 C++를 사용하여 PostScript EPS/PS 파일을 PNG 이미지 형식으로 변환하는 방법을 보여줍니다.

// ImageFormat 클래스의 인스턴스 만들기
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();

// PostScript 입력 스트림 초기화
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// PsDocument 클래스의 인스턴스 만들기
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// 사소한 오류에도 불구하고 Postscript 파일을 변환하려면 이 플래그를 설정하십시오.
bool suppressErrors = true;

// 필요한 매개변수를 사용하여 ImageSaveOptions 개체를 초기화합니다.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// 글꼴이 저장되는 특수 폴더를 추가하려는 경우. OS의 기본 글꼴 폴더는 항상 포함됩니다.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// 기본 이미지 형식은 PNG이며 ImageDevice에서 반드시 설정해야 하는 것은 아닙니다.
// 기본 이미지 크기는 595x842이며 ImageDevice에서 반드시 설정해야 하는 것은 아닙니다.
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// 그러나 크기와 이미지 형식을 지정해야 하는 경우 매개변수와 함께 생성자를 사용하십시오.
//ImageDevice 장치 = 새로운 ImageDevice(new System.Drawing.Size(595, 842), System.Drawing.Imaging.ImageFormat.Jpeg);

{
	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(System::String(u"OutputDirectory\\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);

			// 'using' 문에서 리소스 지우기
			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++;
	}
}

C++를 사용하여 PostScript EPS/PS 파일을 JPG 이미지 형식으로 변환

EPS 또는 PS 파일을 JPG 이미지 형식으로 변환하려면 다음 단계를 따르십시오.

  • PostScript 입력 스트림을 초기화합니다.
  • 입력 스트림을 사용하여 PsDocument 클래스의 인스턴스를 만듭니다.
  • ImageSaveOptions 클래스의 인스턴스를 만듭니다.
  • ImageFormat 클래스의 개체를 인스턴스화합니다.
  • ImageFormat 개체를 사용하여 ImageDevice 클래스의 인스턴스를 만듭니다.
  • [PsDocument->Save(System::SharedPtr)를 사용하여 PostScript 파일을 ImageDevice에 저장합니다.Aspose::Page::Device 장치, 시스템::SharedPtr 옵션)]22 메서드.
  • ImageDevice->getImagesBytes() 메서드를 사용하여 이미지 바이트를 검색합니다.
  • 이미지 바이트를 반복합니다.
  • 출력 스트림을 초기화하고 JPG 이미지를 저장합니다.

다음 샘플 코드는 C++를 사용하여 PostScript EPS/PS 파일을 JPG 이미지 형식으로 변환하는 방법을 보여줍니다.

// PostScript 입력 스트림 초기화
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// PsDocument 클래스의 인스턴스 만들기
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// 사소한 오류에도 불구하고 Postscript 파일을 변환하려면 이 플래그를 설정하십시오.
bool suppressErrors = true;

// 필요한 매개변수를 사용하여 ImageSaveOptions 개체를 초기화합니다.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// 글꼴이 저장되는 특수 폴더를 추가하려는 경우. OS의 기본 글꼴 폴더는 항상 포함됩니다.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// ImageFormat 클래스의 인스턴스 만들기
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();

// 기본 이미지 형식은 PNG이며 ImageDevice에서 반드시 설정해야 하는 것은 아닙니다.
// 기본 이미지 크기는 595x842이며 ImageDevice에서 반드시 설정해야 하는 것은 아닙니다.
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// 그러나 크기와 이미지 형식을 지정해야 하는 경우 매개변수와 함께 생성자를 사용하십시오.
//ImageDevice 장치 = 새로운 ImageDevice(new System.Drawing.Size(595, 842), System.Drawing.Imaging.ImageFormat.Jpeg);

{
	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(System::String(u"OutputDirectory\\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);

			// 'using' 문에서 리소스 지우기
			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++;
	}
}

무료 라이선스 받기

무료 임시 라이선스를 요청하면 평가 제한 없이 API를 사용해 볼 수 있습니다.

결론

이 기사에서는 C++를 사용하여 PostScript EPS/PS 파일을 PNG 및 JPG 이미지 형식으로 변환하는 방법을 배웠습니다. 이를 달성하는 데 필요한 단계와 함께 전체 코드 스니펫을 보았습니다. Aspose.Page for C++는 공식 문서를 방문하여 자세히 살펴볼 수 있는 많은 추가 기능을 제공합니다. 질문이 있는 경우 무료 지원 포럼을 통해 언제든지 문의하십시오.

또한보십시오