PDF یک قالب استاندارد برای به اشتراک گذاری اسناد از طریق اینترنت است. پشتیبانی جهانی و چیدمان ثابت آن را به گزینه ای ایده آل برای چنین سناریوهایی تبدیل می کند. با این حال، گاهی اوقات، حجم فایل‌های PDF به دلیل محتویاتی مانند تصاویر، نقاشی‌ها و غیره تمایل به افزایش دارد. در چنین شرایطی، می‌توانید به راحتی فایل‌های PDF را بهینه یا فشرده کنید تا حجم آن‌ها کاهش یابد بدون اینکه کیفیت آن‌ها به خطر بیفتد. برای این منظور، این مقاله تکنیک‌های مختلفی را به شما آموزش می‌دهد که می‌توانید از آنها برای فشرده‌سازی و بهینه‌سازی فایل‌های PDF برای کاهش حجم آن‌ها با استفاده از C++ استفاده کنید.

C++ API برای فشرده سازی و بهینه سازی فایل های PDF

Aspose.PDF for C++ یک کتابخانه C++ است که به شما امکان ایجاد، خواندن و به روز رسانی اسناد PDF را می دهد. می‌توانید از این API برای فشرده‌سازی و بهینه‌سازی فایل‌های پی‌دی‌اف بزرگ استفاده کنید تا اندازه آن‌ها کاهش یابد و در عین حال کیفیت آن‌ها حفظ شود. می‌توانید 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 با استفاده از 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 را با حذف فونت ها و حذف جریان ها و اشیاء استفاده نشده با استفاده از 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 را با استفاده از 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();

// یا
// حاشیه نویسی ها را حذف کنید
//annotationEditor->DeleteAnnotations();

// سند PDF را ذخیره کنید
annotationEditor->Save(u"OutputDirectory\\Remove_Annotations_Output.pdf");

حذف فیلدهای فرم از فایل های PDF با استفاده از ++C

وقتی نیاز به جمع‌آوری داده‌ها دارید، فیلدهای فرم‌ها الزامی است. اگر دیگر نیازی به جمع‌آوری داده‌ها نیست، می‌توانید فیلدهای فرم را صاف کنید تا اندازه فایل PDF کاهش یابد. مراحل زیر برای مسطح کردن فیلدهای فرم در فایل های PDF آمده است.

  • فایل PDF را با استفاده از کلاس Document بارگیری کنید.
  • وجود فیلدهای فرم را بررسی کنید.
  • فیلدهای فرم را تکرار کنید و هر فیلد را صاف کنید.
  • فایل PDF را با استفاده از روش Document->Save(System::String outputFileName) ذخیره کنید.

کد نمونه زیر نحوه مسطح کردن فیلدهای فرم در فایل های 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");

با استفاده از C++، فضای رنگی RGB را به مقیاس خاکستری برای فایل‌های PDF تبدیل کنید

فایل های 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);

	// فضای رنگی هر صفحه را به Grayscale تبدیل کنید
	strategy->Convert(page);
}

// سند PDF را ذخیره کنید
pdfDocument->Save(u"OutputDirectory\\Grayscale_PDF_Output.pdf");

مجوز رایگان دریافت کنید

با درخواست [مجوز موقت رایگان] می‌توانید API را بدون محدودیت ارزیابی امتحان کنید.

نتیجه

هدف این مقاله بررسی روش های مختلف برای فشرده سازی و بهینه سازی فایل های PDF برای کاهش اندازه آنها بود. در ابتدا، نحوه بهینه سازی فایل های PDF برای وب را بررسی کردیم. سپس نحوه فشرده سازی و تغییر اندازه تصاویر در فایل های PDF را دیدیم. علاوه بر این، ما یاد گرفته ایم که چگونه فونت ها و جریان های تعبیه شده را از فایل های PDF حذف کنیم. علاوه بر این، ما یاد گرفتیم که چگونه حاشیه نویسی ها را مسطح کنیم و فیلدها را تشکیل دهیم و فضای رنگی فایل های PDF را به مقیاس خاکستری تبدیل کنیم. ما تمام این راه‌ها را برای کاهش حجم فایل‌های PDF بدون تأثیر بر کیفیت آن‌ها بررسی کردیم. Aspose.PDF برای C++ بسیاری از ویژگی های اضافی را برای کار با فایل های PDF فراهم می کند. می‌توانید با مراجعه به مستندات رسمی API را با جزئیات بررسی کنید. در صورت وجود هرگونه سوال، لطفاً در [تالار گفتمان پشتیبانی رایگان28 ما با ما تماس بگیرید.

همچنین ببینید