ข้อมูลรูปภาพในไฟล์ PDF

การแนะนำ

ทุกวันนี้ไฟล์ PDF มีอยู่ทุกที่ เอกสารส่วนตัวและงานอาชีพแทบทุกฉบับต้องอยู่ในรูปแบบนี้ในสักวันหนึ่ง ไม่ว่าจะเป็นรายงาน โบรชัวร์ หรืออีบุ๊ก การเรียนรู้วิธีโต้ตอบกับไฟล์เหล่านี้ด้วยโปรแกรมช่วยให้มีความเป็นไปได้มากมาย ข้อกำหนดทั่วไปอย่างหนึ่งคือการดึงข้อมูลรูปภาพจากไฟล์ PDF ในคู่มือนี้ เราจะเจาะลึกวิธีใช้ไลบรารี Aspose.PDF สำหรับ .NET เพื่อดึงข้อมูลรายละเอียดสำคัญเกี่ยวกับรูปภาพที่ฝังอยู่ในเอกสาร PDF

ข้อกำหนดเบื้องต้น

ก่อนที่เราจะเข้าสู่รายละเอียดเล็กๆ น้อยๆ ของการเขียนโค้ด มีข้อกำหนดเบื้องต้นบางประการที่คุณจะต้องมี:

  1. สภาพแวดล้อมการพัฒนา: คุณจะต้องตั้งค่าสภาพแวดล้อมการพัฒนา .NET ซึ่งอาจเป็น Visual Studio หรือ IDE อื่นๆ ที่เข้ากันได้กับ .NET
  2. ไลบรารี Aspose.PDF: ตรวจสอบให้แน่ใจว่าคุณสามารถเข้าถึงไลบรารี Aspose.PDF ได้ คุณสามารถดาวน์โหลดได้จาก เว็บไซต์อาโพส .
  3. ความรู้พื้นฐานเกี่ยวกับ C#: ความคุ้นเคยกับ C# และแนวคิดการเขียนโปรแกรมเชิงวัตถุจะช่วยให้คุณทำตามบทช่วยสอนได้อย่างราบรื่น
  4. เอกสาร PDF: เตรียมเอกสาร PDF ตัวอย่างที่มีรูปภาพไว้เพื่อทดสอบโค้ดของคุณ

การนำเข้าแพ็คเกจ

หากต้องการเริ่มต้นใช้งานไลบรารี Aspose.PDF คุณจะต้องนำเข้าเนมสเปซที่จำเป็นลงในไฟล์ C# ของคุณ ต่อไปนี้เป็นข้อมูลสรุปโดยย่อ:

using System.IO;
using Aspose.Pdf;
using System;

เนมสเปซเหล่านี้จะช่วยให้คุณเข้าถึงคลาสและวิธีการที่จำเป็นสำหรับการจัดการไฟล์ PDF และการแยกข้อมูลรูปภาพ

ตอนนี้คุณได้ตั้งค่าทุกอย่างเรียบร้อยแล้ว ถึงเวลาแบ่งขั้นตอนต่างๆ ออกเป็นขั้นตอนที่จัดการได้ เราจะเขียนโปรแกรม C# ที่โหลดเอกสาร PDF ตรวจสอบแต่ละหน้า และแยกขนาดและความละเอียดของแต่ละภาพในเอกสาร

ขั้นตอนที่ 1: เริ่มต้นเอกสาร

ในขั้นตอนนี้ เราจะเริ่มต้นเอกสาร PDF โดยใช้เส้นทางไปยังไฟล์ PDF ของคุณ คุณควรแทนที่"YOUR DOCUMENT DIRECTORY" พร้อมเส้นทางจริงที่ไฟล์ PDF ของคุณตั้งอยู่

// เส้นทางไปยังไดเร็กทอรีเอกสาร
string dataDir = "YOUR DOCUMENT DIRECTORY";
// โหลดไฟล์ PDF ต้นฉบับ
Document doc = new Document(dataDir + "ImageInformation.pdf");

เราสร้างDocument วัตถุที่โหลด PDF จากไดเร็กทอรีที่ระบุ ซึ่งจะทำให้เราสามารถทำงานกับเนื้อหาของไฟล์ได้

ขั้นตอนที่ 2: ตั้งค่าความละเอียดเริ่มต้นและเริ่มต้นโครงสร้างข้อมูล

ขั้นต่อไป เราจะตั้งค่าความละเอียดเริ่มต้นสำหรับรูปภาพ ซึ่งมีประโยชน์สำหรับการคำนวณ นอกจากนี้ เราจะเตรียมอาร์เรย์เพื่อเก็บชื่อรูปภาพและสแต็กเพื่อจัดการสถานะกราฟิกด้วย

// กำหนดความละเอียดเริ่มต้นสำหรับภาพ
int defaultResolution = 72;
System.Collections.Stack graphicsState = new System.Collections.Stack();
// กำหนดวัตถุรายการอาร์เรย์ที่จะเก็บชื่อภาพ
System.Collections.ArrayList imageNames = new System.Collections.ArrayList(doc.Pages[1].Resources.Images.Names);

การdefaultResolution ตัวแปรช่วยให้เราคำนวณความละเอียดของภาพได้อย่างถูกต้องgraphicsStateสแต็กทำหน้าที่เป็นวิธีการเก็บสถานะกราฟิกปัจจุบันของเอกสารเมื่อเราพบกับตัวดำเนินการการแปลง

ขั้นตอนที่ 3: ประมวลผลผู้ปฏิบัติงานแต่ละคนบนหน้า

ตอนนี้เราจะวนซ้ำตัวดำเนินการทั้งหมดในหน้าแรกของเอกสาร นี่คือจุดที่งานหนักจะเกิดขึ้น

foreach (Operator op in doc.Pages[1].Contents)
{
    // ผู้ปฏิบัติงานกระบวนการ...
}

ตัวดำเนินการแต่ละตัวในไฟล์ PDF คือคำสั่งที่แจ้งให้โปรแกรมเรนเดอร์ทราบถึงวิธีการจัดการองค์ประกอบกราฟิก รวมถึงรูปภาพ

ขั้นตอนที่ 4: จัดการตัวดำเนินการ GSave/GRestore

ภายในลูป เราจะจัดการคำสั่งบันทึกและเรียกคืนกราฟิกเพื่อติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับสถานะกราฟิก

if (opSaveState != null) 
{
    // บันทึกสถานะก่อนหน้า
    graphicsState.Push(((Matrix)graphicsState.Peek()).Clone());
} 
else if (opRestoreState != null) 
{
    // คืนค่าสถานะก่อนหน้า
    graphicsState.Pop();
}

GSave บันทึกสถานะกราฟิกปัจจุบันในขณะที่GRestore คืนค่าสถานะที่บันทึกล่าสุด ช่วยให้เราสามารถย้อนกลับการเปลี่ยนแปลงใดๆ เมื่อประมวลผลรูปภาพได้

ขั้นตอนที่ 5: จัดการเมทริกซ์การแปลง

ถัดไป เราจะจัดการการเชื่อมโยงเมทริกซ์การแปลงเมื่อใช้การแปลงกับรูปภาพ

else if (opCtm != null) 
{
    Matrix cm = new Matrix(
        (float)opCtm.Matrix.A,
        (float)opCtm.Matrix.B,
        (float)opCtm.Matrix.C,
        (float)opCtm.Matrix.D,
        (float)opCtm.Matrix.E,
        (float)opCtm.Matrix.F);
    
    ((Matrix)graphicsState.Peek()).Multiply(cm);
    continue;
}

เมื่อมีการใช้เมทริกซ์การแปลง เราจะคูณเมทริกซ์นั้นด้วยเมทริกซ์ปัจจุบันที่จัดเก็บไว้ในสถานะกราฟิก เพื่อให้เราสามารถติดตามการปรับขนาดหรือการแปลใดๆ ที่ใช้กับรูปภาพได้

ขั้นตอนที่ 6: ดึงข้อมูลภาพ

ในที่สุด เราจะประมวลผลตัวดำเนินการวาดภาพและแยกข้อมูลที่จำเป็น เช่น ขนาดและความละเอียด

else if (opDo != null) 
{
    // ตัวดำเนินการ Handle Do ซึ่งใช้ในการวาดวัตถุ
    if (imageNames.Contains(opDo.Name)) 
    {
        Matrix lastCTM = (Matrix)graphicsState.Peek();
        XImage image = doc.Pages[1].Resources.Images[opDo.Name];
        double scaledWidth = Math.Sqrt(Math.Pow(lastCTM.Elements[0], 2) + Math.Pow(lastCTM.Elements[1], 2));
        double scaledHeight = Math.Sqrt(Math.Pow(lastCTM.Elements[2], 2) + Math.Pow(lastCTM.Elements[3], 2));
        double originalWidth = image.Width;
        double originalHeight = image.Height;
        
        double resHorizontal = originalWidth * defaultResolution / scaledWidth;
        double resVertical = originalHeight * defaultResolution / scaledHeight;
        
        // ออกข้อมูล
        Console.Out.WriteLine(string.Format(dataDir + "image {0} ({1:.##}:{2:.##}): res {3:.##} x {4:.##}",
                         opDo.Name, scaledWidth, scaledHeight, resHorizontal, resVertical));
    }
}

ที่นี่ เราจะตรวจสอบว่าผู้ปฏิบัติงานเป็นผู้รับผิดชอบในการวาดภาพหรือไม่ หากเป็นเช่นนั้น เราจะได้วัตถุ XImage ที่เกี่ยวข้อง คำนวณขนาดและความละเอียดที่ปรับสเกลแล้ว และพิมพ์ข้อมูลที่จำเป็น

บทสรุป

ขอแสดงความยินดี! คุณเพิ่งสร้างตัวอย่างการใช้งานในการดึงข้อมูลภาพจากไฟล์ PDF โดยใช้ Aspose.PDF สำหรับ .NET ความสามารถนี้มีประโยชน์อย่างยิ่งสำหรับนักพัฒนาที่ต้องการวิเคราะห์หรือแก้ไขเอกสาร PDF สำหรับแอปพลิเคชันต่างๆ เช่น การรายงาน การดึงข้อมูล หรือแม้แต่โปรแกรมดู PDF แบบกำหนดเอง

คำถามที่พบบ่อย

ไลบรารี Aspose.PDF คืออะไร

ไลบรารี Aspose.PDF เป็นเครื่องมืออันทรงพลังสำหรับการสร้าง จัดการ และแปลงไฟล์ PDF ในแอปพลิเคชัน .NET

ฉันสามารถใช้ห้องสมุดได้ฟรีไหม?

ใช่ Aspose เสนอให้ทดลองใช้งานฟรี คุณสามารถดาวน์โหลดได้ ที่นี่ .

สามารถแยกไฟล์ภาพประเภทใดออกมาได้บ้าง?

ไลบรารีนี้รองรับรูปแบบภาพต่างๆ เช่น JPEG, PNG และ TIFF ตราบใดที่ภาพเหล่านั้นฝังอยู่ใน PDF

Aspose ถูกใช้เพื่อวัตถุประสงค์เชิงพาณิชย์หรือไม่?

ใช่ คุณสามารถใช้ผลิตภัณฑ์ Aspose ในเชิงพาณิชย์ได้ หากต้องการใบอนุญาต โปรดไปที่ หน้าการซื้อ .

ฉันจะได้รับการสนับสนุนสำหรับ Aspose ได้อย่างไร

คุณสามารถเข้าถึงฟอรั่มการสนับสนุนได้ ที่นี่ .