PDF هو تنسيق قياسي لمشاركة المستندات عبر الإنترنت. دعمها العالمي وتصميمها المتسق يجعلها خيارًا مثاليًا لمثل هذه السيناريوهات. ومع ذلك ، في بعض الأحيان ، يميل حجم ملفات PDF إلى الزيادة بسبب محتويات مثل الصور والرسومات وما إلى ذلك. في مثل هذه السيناريوهات ، يمكنك بسهولة تحسين أو ضغط ملفات PDF لتقليل حجمها دون المساس بجودتها. تحقيقًا لهذه الغاية ، ستعلمك هذه المقالة تقنيات مختلفة يمكنك استخدامها لضغط وتحسين ملفات PDF لتقليل حجمها باستخدام C ++.

واجهة برمجة تطبيقات C ++ لضغط وتحسين ملفات PDF

Aspose.PDF for C ++ هي مكتبة C ++ تتيح لك إنشاء مستندات PDF وقراءتها وتحديثها. يمكنك استخدام واجهة برمجة التطبيقات هذه لضغط وتحسين ملفات PDF الكبيرة لتقليل حجمها مع الاحتفاظ بجودتها. يمكنك إما تثبيت API من خلال NuGet أو تنزيلها مباشرة من قسم التنزيلات.

PM> Install-Package Aspose.PDF.Cpp

تحسين مستندات PDF للويب باستخدام C ++

إذا كنت ترغب في عرض مستندات PDF على الويب ، فسيؤدي تحسينها إلى تحسين سرعة تحميلها وبالتالي تحسين تجربة المستخدم. من أجل تحسين مستندات PDF ، يرجى اتباع الخطوات الواردة أدناه.

يوضح نموذج التعليمات البرمجية التالي كيفية تحسين مستندات PDF للويب باستخدام C ++.

// افتح مستند PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// قم بتحسين مستند PDF
pdfDocument->Optimize();

// احفظ مستند PDF
pdfDocument->Save(u"OutputDirectory\\Optimized_output.pdf");

ضغط الصور وتغيير حجمها في ملفات PDF باستخدام C ++

إذا كانت ملفات PDF تحتوي على عدد كبير من الصور ، فقد ينتج عن ذلك أحجام ملفات كبيرة. في مثل هذه الملفات ، تلعب الصور دورًا مهمًا في زيادة حجمها. سيؤدي ضغط الصور وتغيير حجمها في هذه الملفات إلى تقليل حجمها بشكل ملحوظ. فيما يلي خطوات ضغط الصور وتغيير حجمها في ملف PDF.

يوضح نموذج التعليمات البرمجية التالي كيفية ضغط الصور وتغيير حجمها لتقليل حجم ملف PDF باستخدام C ++.

// افتح مستند PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// قم بإنشاء مثيل لفئة OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// ضغط الصور وتغيير حجمها وضبط جودتها ودقتها
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// تحسين الموارد في المستند
pdfDocument->OptimizeResources(options);

// احفظ مستند PDF
pdfDocument->Save(u"OutputDirectory\\Compressed_PDF_With_Images.pdf");

لتقليل حجم الملف بشكل أكبر ، يمكنك أيضًا إزالة الخطوط المضمنة من الملف. هناك طريقتان لإزالة الخطوط المضمنة ؛ الأول هو إزالة جميع الخطوط المضمنة ، والثاني هو أنك تقوم فقط بإزالة مجموعة فرعية من الخطوط غير المستخدمة. علاوة على ذلك ، يمكنك أيضًا إزالة التدفقات غير المستخدمة وربط التدفقات المكررة لتقليل الحجم الإضافي. فيما يلي خطوات تطبيق التغييرات التي تمت مناقشتها مسبقًا على ملف PDF.

يوضح نموذج التعليمات البرمجية التالي كيفية تقليل حجم ملف PDF عن طريق إلغاء دمج الخطوط وإزالة التدفقات والكائنات غير المستخدمة باستخدام C ++.

// افتح مستند PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// قم بإنشاء مثيل لفئة OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// أيضاً
// تجميع كل الخطوط في PDF
options->set_UnembedFonts(true);

// أو
// احتفظ فقط بالخطوط المضمنة للأحرف المستخدمة
options->set_SubsetFonts(true);

// ربط تيارات مكررة
options->set_LinkDuplcateStreams(false);

// إزالة التدفقات غير المستخدمة
options->set_RemoveUnusedStreams(false);

// إزالة الأشياء غير المستخدمة
options->set_RemoveUnusedObjects(false);

// تحسين الموارد في المستند
pdfDocument->OptimizeResources(options);

// احفظ مستند PDF
pdfDocument->Save(u"OutputDirectory\\Remove_Embedded_Fonts_Output.pdf");

قم بإزالة التعليقات التوضيحية أو تسويتها باستخدام C ++

يمكن أن يكون هناك العديد من التعليقات التوضيحية في ملفات PDF مثل النصوص والأشكال وما إلى ذلك ، والتي تزيد من حجم الملف. يمكن إزالة هذه التعليقات التوضيحية إذا لم تعد مطلوبة أو تم تسويتها إذا لم تكن هناك حاجة إلى مزيد من التغييرات. سيؤدي القيام بذلك إلى تقليل حجم ملف PDF. فيما يلي خطوات إزالة التعليقات التوضيحية من ملفات PDF أو تسويتها.

يوضح نموذج التعليمات البرمجية التالي كيفية حذف التعليقات التوضيحية أو تسويتها في ملفات PDF باستخدام C ++.

// قم بإنشاء مثيل لفئة PdfAnnotationEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// قم بتحميل نموذج ملف PDF
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// أيضاً
// تسطيح التعليقات التوضيحية
annotationEditor->FlatteningAnnotations();

// أو
// حذف التعليقات التوضيحية
//AnotationEditor-> DeleteAnnotations() ؛

// احفظ مستند PDF
annotationEditor->Save(u"OutputDirectory\\Remove_Annotations_Output.pdf");

إزالة حقول النموذج من ملفات PDF باستخدام C ++

حقول النماذج مطلوبة عندما تحتاج إلى جمع البيانات. إذا لم يعد جمع البيانات مطلوبًا ، يمكنك تسوية حقول النموذج لتقليل حجم ملف PDF. فيما يلي خطوات تسوية حقول النموذج في ملفات PDF.

يوضح نموذج التعليمات البرمجية التالي كيفية تسوية حقول النموذج في ملفات PDF باستخدام C ++.

// افتح مستند PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Fillable_PDF_Form.pdf");

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// كرر من خلال حقول النموذج
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// تسطيح المجال
		field->Flatten();
	}
}

// احفظ مستند PDF
pdfDocument->Save(u"OutputDirectory\\Flatten_Form_Fields.pdf");

قم بتحويل RGB Color Space إلى Grayscale لملفات PDF باستخدام C ++

يمكن تمثيل ملفات PDF التي تحتوي على معلومات نصية بشكل جيد في مساحة الألوان ذات التدرج الرمادي ، لذلك عند تقليل حجم الملف أمرًا ضروريًا ، يمكن تحويل ملفات PDF إلى تدرج رمادي. علاوة على ذلك ، افترض أن الأولوية هي أرشفة الملفات وتقليل الحجم قدر الإمكان. في هذه الحالة ، يمكن أيضًا تحويل ملفات PDF التي تحتوي على صور إلى درجات رمادية لأن الهدف الأساسي هو جعل الملفات صغيرة قدر الإمكان. لتغيير مساحة اللون لملفات PDF من RGB إلى تدرج الرمادي ، اتبع الخطوات الواردة أدناه:

يوضح نموذج التعليمات البرمجية التالي كيفية تحويل مساحة اللون لملف PDF من RGB إلى تدرج الرمادي باستخدام C ++.

// افتح مستند PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 1.pdf");

System::SharedPtr<RgbToDeviceGrayConversionStrategy> strategy = MakeObject<RgbToDeviceGrayConversionStrategy>();

for (int idxPage = 1; idxPage <= pdfDocument->get_Pages()->get_Count(); idxPage++) {
	System::SharedPtr<Page> page = pdfDocument->get_Pages()->idx_get(idxPage);

	// تحويل مساحة اللون لكل صفحة إلى تدرج الرمادي
	strategy->Convert(page);
}

// احفظ مستند PDF
pdfDocument->Save(u"OutputDirectory\\Grayscale_PDF_Output.pdf");

احصل على رخصة مجانية

يمكنك تجربة واجهة برمجة التطبيقات بدون قيود تقييمية عن طريق طلب ترخيص مجاني مؤقت.

استنتاج

كان الهدف من هذه المقالة هو النظر في طرق مختلفة لضغط وتحسين ملفات PDF لتقليل أحجامها. أولاً ، نظرنا في كيفية تحسين ملفات PDF للويب. ثم رأينا كيفية ضغط الصور وتغيير حجمها في ملفات PDF. علاوة على ذلك ، تعلمنا كيفية إزالة الخطوط المضمنة والتدفق من ملفات PDF. بالإضافة إلى ذلك ، تعلمنا كيفية تسوية التعليقات التوضيحية وحقول النموذج ، وتحويل مساحة ألوان ملفات PDF إلى تدرج رمادي. اكتشفنا كل هذه الطرق لتقليل حجم ملفات PDF دون التأثير على جودتها. يوفر Aspose.PDF for C ++ العديد من الميزات الإضافية للعمل مع ملفات PDF. يمكنك استكشاف API بالتفصيل من خلال زيارة الوثائق الرسمية. في حالة وجود أي أسئلة ، لا تتردد في الاتصال بنا على منتدى الدعم المجاني.

أنظر أيضا