PDF הוא פורמט סטנדרטי לשיתוף מסמכים דרך האינטרנט. התמיכה הגלובלית והפריסה העקבית שלו הופכים אותו לבחירה אידיאלית עבור תרחישים כאלה. עם זאת, לפעמים, הגודל של קבצי PDF נוטה לגדול עקב תכנים כמו תמונות, ציורים וכו’. בתרחישים כאלה, אתה יכול בקלות לייעל או לדחוס קבצי PDF כדי להקטין את גודלם מבלי לפגוע באיכותם. לשם כך, מאמר זה ילמד אותך טכניקות שונות שבהן תוכל להשתמש כדי לדחוס ולייעל קבצי PDF כדי להקטין את גודלם באמצעות C++.

C++ API עבור דחיסה ואופטימיזציה של קבצי PDF

Aspose.PDF for C++ היא ספריית C++ המאפשרת לך ליצור, לקרוא ולעדכן מסמכי PDF. אתה יכול להשתמש ב-API זה כדי לדחוס ולבצע אופטימיזציה של קבצי 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();

// אוֹ
// מחק הערות
//annotationEditor->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 לגווני אפור עבור קבצי 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");

קבל רישיון חינם

אתה יכול לנסות את ה-API ללא מגבלות הערכה על ידי בקשת רישיון זמני ללא תשלום.

סיכום

המטרה של מאמר זה הייתה לבחון דרכים שונות לדחוס ולייעל קבצי PDF כדי להקטין את הגדלים שלהם. ראשית, בדקנו כיצד לבצע אופטימיזציה של קבצי PDF עבור האינטרנט. אחר כך ראינו כיצד לדחוס ולשנות את גודל התמונות בקבצי PDF. יתר על כן, למדנו כיצד להסיר גופנים וזרמים משובצים מקובצי PDF. בנוסף לכך, למדנו כיצד לשטח הערות ושדות טופס, ולהמיר את מרחב הצבעים של קבצי PDF לגווני אפור. בדקנו את כל הדרכים הללו להקטנת גודל קבצי ה-PDF מבלי להשפיע על איכותם. Aspose.PDF עבור C++ מספק תכונות נוספות רבות לעבודה עם קבצי PDF. אתה יכול לחקור את ה-API בפירוט על ידי ביקור בתיעוד הרשמי. בכל שאלה, אנא אל תהסס לפנות אלינו ב[פורום התמיכה החינמי] שלנו28.

ראה גם