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 โดยใช้คลาส 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");

แปลง 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");

รับใบอนุญาตฟรี

คุณสามารถลองใช้ API ได้โดยไม่มีข้อจำกัดในการประเมินโดยขอ ใบอนุญาตชั่วคราวฟรี

บทสรุป

เป้าหมายของบทความนี้คือการดูวิธีต่างๆ ในการบีบอัดและเพิ่มประสิทธิภาพไฟล์ PDF เพื่อลดขนาด ประการแรก เราดูวิธีเพิ่มประสิทธิภาพไฟล์ PDF สำหรับเว็บ จากนั้นเราก็เห็นวิธีบีบอัดและปรับขนาดรูปภาพในไฟล์ PDF นอกจากนี้ เราได้เรียนรู้วิธีลบแบบอักษรและสตรีมแบบฝังออกจากไฟล์ PDF นอกจากนี้ เราได้เรียนรู้วิธีทำให้คำอธิบายประกอบและช่องแบบฟอร์มเรียบ และแปลงพื้นที่สีของไฟล์ PDF เป็นโทนสีเทา เราได้สำรวจวิธีเหล่านี้เพื่อลดขนาดไฟล์ PDF โดยไม่ส่งผลกระทบต่อคุณภาพ Aspose.PDF for C++ มีคุณสมบัติเพิ่มเติมมากมายสำหรับการทำงานกับไฟล์ PDF คุณสามารถสำรวจ API โดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี

ดูสิ่งนี้ด้วย