تحويل PDF إلى تنسيقات الصور
Aspose.PDF for C++ يستخدم بعض الأساليب لتحويل PDF إلى صورة. بشكل عام، نستخدم نهجين: التحويل باستخدام نهج الجهاز والتحويل باستخدام SaveOption. ستوضح لك هذه القسم كيفية تحويل مستندات PDF إلى تنسيقات الصور مثل BMP وJPEG وPNG وTIFF وSVG باستخدام أحد هذه الأساليب.
هناك العديد من الفئات في المكتبة التي تسمح لك باستخدام جهاز افتراضي لتحويل الصور. DocumentDevice موجه لتحويل المستند بالكامل، ولكن ImageDevice - لصفحة معينة.
تحويل PDF باستخدام فئة DocumentDevice
Aspose.PDF for C++ يجعل من الممكن تحويل صفحات PDF إلى صور TIFF.
The TiffDevice (بناءً على DocumentDevice) تسمح لك بتحويل صفحات PDF إلى صور TIFF. توفر هذه الفئة طريقة تسمى Process والتي تتيح لك تحويل جميع الصفحات في ملف PDF إلى صورة TIFF واحدة.
حاول تحويل PDF إلى TIFF عبر الإنترنت
Aspose.PDF لـ C++ يقدم لك تطبيقًا مجانيًا عبر الإنترنت “PDF to TIFF”، حيث يمكنك محاولة استكشاف الوظائف والجودة التي يعمل بها.
تحويل صفحات PDF إلى صورة TIFF واحدة
Aspose.PDF لـ C++ يشرح كيفية تحويل جميع الصفحات في ملف PDF إلى صورة TIFF واحدة:
- افتح المستند باستخدام MakeObject.
- أنشئ كائن Resolution.
- أنشئ كائن TIffSettings.
- أنشئ جهاز Tiff بخصائص محددة.
- حوّل صفحة معينة واحفظ الصورة في تدفق.
يوضح مقتطف الشيفرة التالي كيفية تحويل جميع صفحات PDF إلى صورة TIFF واحدة.
void Convert_PDF_To_Images::ConvertPDFtoTIFF()
{
std::clog << __func__ << ": Start" << std::endl;
// سلسلة لأسم المسار
String _dataDir("C:\\Samples\\Conversion\\");
// سلسلة لأسم الملف
String infilename("PageToTiff.pdf");
String outfilename("PagesToTIFF_out.tif");
// افتح المستند
auto document = MakeObject<Document>(_dataDir + infilename);
auto imageStream = System::IO::File::OpenWrite(_dataDir + outfilename);
// أنشئ كائن Resolution
auto resolution = MakeObject<Aspose::Pdf::Devices::Resolution>(300);
// أنشئ كائن TiffSettings
auto tiffSettings = MakeObject<Aspose::Pdf::Devices::TiffSettings>();
tiffSettings->set_Compression(Aspose::Pdf::Devices::CompressionType::None);
tiffSettings->set_Depth(Aspose::Pdf::Devices::ColorDepth::Default);
tiffSettings->set_Shape(Aspose::Pdf::Devices::ShapeType::Landscape);
tiffSettings->set_SkipBlankPages(false);
// أنشئ جهاز TIFF
auto tiffDevice = MakeObject<Aspose::Pdf::Devices::TiffDevice>(resolution, tiffSettings);
// حوّل الصفحات واحفظ الصورة في تدفق
tiffDevice->Process(document, 1, 2, imageStream);
std::clog << __func__ << ": Finish" << std::endl;
}
تحويل صفحة واحدة إلى صورة TIFF
يسمح لك Aspose.PDF for C++ بتحويل صفحة معينة في ملف PDF إلى صورة TIFF، استخدم نسخة محملة زائدة من دالة Process(..) التي تأخذ رقم الصفحة كمعامل للتحويل. يوضح مقتطف الشيفرة التالي كيفية تحويل الصفحة الأولى من ملف PDF إلى تنسيق TIFF.
void Convert_PDF_To_Images::ConvertPDFtoTiffSinglePage()
{
std::clog << __func__ << ": Start" << std::endl;
// String for path name
String _dataDir("C:\\Samples\\Conversion\\");
// String for file name
String infilename("PageToTiff.pdf");
String outfilename("PageToTiff_out.tif");
// Open document
auto document = MakeObject<Document>(_dataDir + infilename);
auto imageStream = System::IO::File::OpenWrite(_dataDir + outfilename);
// Create Resolution object
auto resolution = MakeObject<Aspose::Pdf::Devices::Resolution>(300);
// Create TIFF device
auto tiffDevice = MakeObject<Aspose::Pdf::Devices::TiffDevice>(resolution);
// Convert a particular page and save the image to stream
tiffDevice->Process(document, 1, 1, imageStream);
std::clog << __func__ << ": Finish" << std::endl;
}
استخدم خوارزمية برادلي أثناء التحويل
يدعم Aspose.PDF for C++ ميزة تحويل PDF إلى TIF باستخدام ضغط LZW ثم مع استخدام AForge، يمكن تطبيق التثنيم. ومع ذلك، طلب أحد العملاء أنه لبعض الصور، يحتاجون إلى الحصول على العتبة باستخدام Otsu، لذا يرغبون أيضًا في استخدام Bradley.
void Convert_PDF_To_Images::ConvertPDFtoTiffBradleyBinarization()
{
// String for path name
String _dataDir("C:\\Samples\\Conversion\\");
// Open document
auto pdfDocument = MakeObject<Document>(_dataDir + u"PageToTIFF.pdf");
String outputImageFile = _dataDir + u"resultant_out.tif";
String outputBinImageFile = _dataDir + u"37116-bin_out.tif";
// Create Resolution object
auto resolution = MakeObject<Aspose::Pdf::Devices::Resolution>(300);
// Create TiffSettings object
auto tiffSettings = MakeObject<Aspose::Pdf::Devices::TiffSettings>();
tiffSettings->set_Compression(Aspose::Pdf::Devices::CompressionType::LZW);
tiffSettings->set_Depth(Aspose::Pdf::Devices::ColorDepth::Format1bpp);
// Create TIFF device
auto tiffDevice = MakeObject<Aspose::Pdf::Devices::TiffDevice>(resolution, tiffSettings);
auto imageStream = System::IO::File::OpenWrite(_dataDir + outputImageFile);
// Convert a particular page and save the image to stream
tiffDevice->Process(pdfDocument, 1, 2, imageStream);
imageStream->Close();
auto inStream = System::IO::File::OpenRead(outputImageFile);
auto outStream = System::IO::File::OpenWrite(outputBinImageFile);
tiffDevice->BinarizeBradley(inStream, outStream, 0.1);
}
تحويل PDF باستخدام فئة ImageDevice
ImageDevice
هو السلف لـ BmpDevice
و JpegDevice
و GifDevice
و PngDevice
و EmfDevice
.
-
تسمح لك فئة BmpDevice بتحويل صفحات PDF إلى صور BMP.
-
تسمح لك فئة EmfDevice بتحويل صفحات PDF إلى صور EMF.
-
تسمح لك فئة JpegDevice بتحويل صفحات PDF إلى صور JPEG.
-
تسمح لك فئة PngDevice بتحويل صفحات PDF إلى صور PNG.
-
تسمح لك فئة GifDevice بتحويل صفحات PDF إلى صور GIF.
دعونا نلقي نظرة على كيفية تحويل صفحة PDF إلى صورة.
توفر فئة BmpDevice طريقة باسم Process والتي تتيح لك تحويل صفحة معينة من ملف PDF إلى تنسيق صورة BMP. تحتوي الفئات الأخرى على نفس الطريقة. لذلك، إذا كنا بحاجة إلى تحويل صفحة PDF إلى صورة، فإننا نقوم فقط بإنشاء الكائن المطلوب.
يعرض مقطع الشيفرة التالي هذه الإمكانية:
void Convert_PDF_To_Images::ConvertPDFusingImageDevice()
{
std::clog << __func__ << ": Start" << std::endl;
// سلسلة لاسم المسار
String _dataDir("C:\\Samples\\Conversion\\");
// إنشاء كائن الدقة
auto resolution = MakeObject<Aspose::Pdf::Devices::Resolution>(300); //300 dpi
System::SmartPtr<Aspose::Pdf::Devices::ImageDevice>
bmpDevice = MakeObject<Aspose::Pdf::Devices::BmpDevice>(resolution);
System::SmartPtr<Aspose::Pdf::Devices::ImageDevice>
jpegDevice = MakeObject<Aspose::Pdf::Devices::JpegDevice>(resolution);
System::SmartPtr<Aspose::Pdf::Devices::ImageDevice>
gifDevice = MakeObject<Aspose::Pdf::Devices::GifDevice>(resolution);
System::SmartPtr<Aspose::Pdf::Devices::ImageDevice>
pngDevice = MakeObject<Aspose::Pdf::Devices::PngDevice>(resolution);
System::SmartPtr<Aspose::Pdf::Devices::ImageDevice>
emfDevice = MakeObject<Aspose::Pdf::Devices::EmfDevice>(resolution);
auto document = MakeObject<Document>(_dataDir + u"ConvertAllPagesToBmp.pdf");
ConvertPDFtoImage(bmpDevice, u"bmp", document);
ConvertPDFtoImage(jpegDevice, u"jpeg", document);
ConvertPDFtoImage(gifDevice, u"gif", document);
ConvertPDFtoImage(pngDevice, u"png", document);
ConvertPDFtoImage(emfDevice, u"emf", document);
std::clog << __func__ << ": Finish" << std::endl;
}
void Convert_PDF_To_Images::ConvertPDFtoImage(
System::SmartPtr<Aspose::Pdf::Devices::ImageDevice> imageDevice,
String ext, System::SmartPtr<Document> document)
{
// سلسلة لاسم المسار
String _dataDir("C:\\Samples\\Conversion\\");
for (int pageCount = 1; pageCount <= document->get_Pages()->get_Count(); pageCount++)
{
String outfilename = String::Format(u"{0}PageToBmp{1}_out.{2}",
_dataDir, pageCount, ext);
auto imageStream = System::IO::File::OpenWrite(outfilename);
// إنشاء كائن الدقة
auto resolution = MakeObject<Aspose::Pdf::Devices::Resolution>(300);
// تحويل صفحة معينة وحفظ الصورة في الدفق
imageDevice->Process(document->get_Pages()->idx_get(pageCount), imageStream);
// إغلاق الدفق
imageStream->Close();
}
}
حاول تحويل PDF إلى PNG عبر الإنترنت
كمثال على كيفية عمل تطبيقاتنا المجانية، يرجى التحقق من الميزة التالية.
تقدم Aspose.PDF for C++ لك تطبيقًا مجانيًا عبر الإنترنت “PDF إلى PNG”، حيث يمكنك محاولة استكشاف الوظائف والجودة التي يعمل بها.
تحويل PDF باستخدام فئة SaveOptions
هذا الجزء من المقالة يوضح لك كيفية تحويل PDF إلى SVG باستخدام C++ وفئة SaveOptions.
حاول تحويل PDF إلى SVG عبر الإنترنت
تقدم Aspose.PDF for C++ لك تطبيقًا مجانيًا عبر الإنترنت “PDF إلى SVG”، حيث يمكنك محاولة استكشاف الوظائف والجودة التي يعمل بها.
من أجل تحويل PDF إلى SVG، تقدم Aspose.PDF لـ CPP طريقة Save من فئة Document. تحتاج إلى تمرير مسار الإخراج وenum SaveFormat:: svg إلى طريقة Save لتحويل PDF إلى SVG. يوضح مقطع الشيفرة التالي كيفية تحويل PDF إلى SVG:
تُعلمك هذه المقالة كيفية تحويل PDF إلى SVG باستخدام C++.
Scalable Vector Graphics (SVG) هو مجموعة من المواصفات لصيغة ملف تعتمد على XML للرسومات المتجهية ثنائية الأبعاد، سواء كانت ثابتة أو ديناميكية (تفاعلية أو متحركة). إن مواصفة SVG هي معيار مفتوح تم تطويره بواسطة اتحاد شبكة الويب العالمية (W3C) منذ عام 1999.
يتم تعريف صور SVG وسلوكياتها في ملفات نصية XML. هذا يعني أنه يمكن البحث عنها وفهرستها وبرمجتها وضغطها إذا لزم الأمر. كملفات XML، يمكن إنشاء صور SVG وتحريرها باستخدام أي محرر نصوص، ولكن غالبًا ما يكون من الأسهل إنشاؤها باستخدام برامج الرسم مثل Inkscape.
يدعم Aspose.PDF for C++ ميزة تحويل صورة SVG إلى تنسيق PDF ويقدم أيضًا القدرة على تحويل ملفات PDF إلى تنسيق SVG. لتحقيق هذا المتطلب، تمت إضافة فئة SvgSaveOptions
إلى مساحة الأسماء Aspose.PDF. قم بإنشاء كائن من SvgSaveOptions ومرره كوسيط ثاني إلى طريقة Save.
يُظهر مقتطف الشيفرة التالي خطوات تحويل ملف PDF إلى تنسيق SVG باستخدام C++.
void Convert_PDF_To_Images::ConvertPDFtoSvgSinglePage()
{
std::clog << __func__ << ": Start" << std::endl;
// String for path name
String _dataDir("C:\\Samples\\Conversion\\");
// String for file name
String infilename("PageToSvg.pdf");
String outfilename("PageToSvg_out.svg");
// Open document
auto document = MakeObject<Document>(_dataDir + infilename);
// Instantiate an object of SvgSaveOptions
auto saveOptions = MakeObject<SvgSaveOptions>();
// Do not compress SVG image to Zip archive
saveOptions->CompressOutputToZipArchive = false;
try {
// Save the output in SVG files
document->Save(_dataDir + outfilename, saveOptions);
}
catch (Exception ex) {
std::cerr << ex->get_Message();
}
std::clog << __func__ << ": Finish" << std::endl;
}