PDF เป็นรูปแบบมาตรฐานสำหรับการแบ่งปันเอกสารทางอินเทอร์เน็ต การสนับสนุนทั่วโลกและการจัดวางที่สอดคล้องกันทำให้เป็นตัวเลือกที่เหมาะสำหรับสถานการณ์ดังกล่าว อย่างไรก็ตาม ในบางครั้ง ขนาดของไฟล์ PDF มักจะใหญ่ขึ้นเนื่องจากเนื้อหา เช่น รูปภาพ ภาพวาด ฯลฯ ในสถานการณ์ดังกล่าว คุณสามารถเพิ่มประสิทธิภาพหรือบีบอัดไฟล์ PDF เพื่อลดขนาดโดยไม่ทำให้คุณภาพลดลง ด้วยเหตุนี้ บทความนี้จะสอนเทคนิคต่างๆ ที่คุณสามารถใช้เพื่อบีบอัดและปรับแต่งไฟล์ PDF เพื่อลดขนาดโดยใช้ C++
- C ++ API สำหรับการบีบอัดและปรับแต่งไฟล์ PDF
- ปรับเอกสาร PDF ให้เหมาะสมสำหรับเว็บโดยใช้ C++
- บีบอัดและปรับขนาดรูปภาพในไฟล์ PDF โดยใช้ C++
- ลบฟอนต์แบบฝัง สตรีมที่ไม่ได้ใช้ และลิงก์สตรีมที่ซ้ำกันโดยใช้ C++
- ลบหรือแผ่คำอธิบายประกอบโดยใช้ C ++
- การลบฟิลด์ฟอร์มออกจากไฟล์ PDF โดยใช้ C++
- แปลง RGB Color Space เป็น Grayscale สำหรับไฟล์ 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 โดยใช้คลาส Document
- ปรับเอกสารให้เหมาะสมโดยใช้เมธอด Document->Optimize()
- บันทึกเอกสาร PDF โดยใช้วิธี Document->Save(System::String outputFileName)
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการปรับเอกสาร 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 โดยใช้คลาส Document
- สร้างอินสแตนซ์ของคลาส OptimizationOptions
- ตั้งค่าตัวเลือกการบีบอัด คุณภาพของภาพ และความละเอียดของวัตถุ OptimizationOptions
- ใช้ Document->OptimizeResources(System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions กลยุทธ์) วิธีการเพิ่มประสิทธิภาพทรัพยากร
- บันทึกไฟล์ PDF โดยใช้วิธี Document->Save(System::String outputFileName)
โค้ดตัวอย่างต่อไปนี้สาธิตวิธีบีบอัดและปรับขนาดรูปภาพเพื่อลดขนาดไฟล์ 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");
ลบฟอนต์แบบฝัง สตรีมที่ไม่ได้ใช้ และลิงก์สตรีมที่ซ้ำกันโดยใช้ C++
หากต้องการลดขนาดไฟล์เพิ่มเติม คุณยังสามารถลบฟอนต์แบบฝังออกจากไฟล์ได้อีกด้วย มีสองวิธีในการลบฟอนต์ที่ฝังไว้ อย่างแรกคือคุณลบฟอนต์ที่ฝังไว้ทั้งหมด และอย่างที่สองคือคุณลบเฉพาะส่วนย่อยของฟอนต์ที่ไม่ได้ใช้ นอกจากนี้ คุณยังสามารถลบสตรีมที่ไม่ได้ใช้และเชื่อมโยงสตรีมที่ซ้ำกันเพื่อลดขนาดเพิ่มเติม ต่อไปนี้เป็นขั้นตอนในการใช้การเปลี่ยนแปลงที่กล่าวถึงก่อนหน้านี้กับไฟล์ PDF
- โหลดไฟล์ PDF โดยใช้คลาส Document
- สร้างอินสแตนซ์ของคลาส OptimizationOptions
- ยกเลิกการฝังแบบอักษรทั้งหมดหรือชุดย่อยของแบบอักษร
- เชื่อมโยงสตรีมที่ซ้ำกัน
- ลบสตรีมและวัตถุที่ไม่ได้ใช้
- ใช้ Document->OptimizeResources(System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions กลยุทธ์) วิธีการเพิ่มประสิทธิภาพทรัพยากร
- บันทึกไฟล์ PDF โดยใช้วิธี Document->Save(System::String outputFileName)
โค้ดตัวอย่างต่อไปนี้แสดงวิธีลดขนาดไฟล์ 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
- สร้างอินสแตนซ์ของคลาส PdfAnnotationEditor
- โหลดไฟล์ PDF ต้นทางโดยใช้ PdfAnnotationEditor->BindPdf (System::SharedPtrAspose::Pdf::Document srcDoc) วิธีการ
- แผ่หรือลบคำอธิบายประกอบ
- บันทึกไฟล์ PDF โดยใช้เมธอด PdfAnnotationEditor->Save(System::String destFile)
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการลบหรือย่อคำอธิบายประกอบในไฟล์ 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 โดยใช้คลาส Document
- สร้างอินสแตนซ์ของคลาส RgbToDeviceGrayConversionStrategy
- ทำซ้ำผ่านหน้าต่างๆ ของไฟล์ PDF
- ใช้ RgbToDeviceGrayConversionStrategy->Convert (System::SharedPtr page) วิธีแปลงแต่ละหน้าเป็นโทนสีเทา
- บันทึกไฟล์ PDF โดยใช้วิธี Document->Save(System::String outputFileName)
โค้ดตัวอย่างต่อไปนี้แสดงวิธีการแปลงปริภูมิสีของไฟล์ 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 โดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี