ข้อมูลรูปภาพในไฟล์ PDF
การแนะนำ
ทุกวันนี้ไฟล์ PDF มีอยู่ทุกที่ เอกสารส่วนตัวและงานอาชีพแทบทุกฉบับต้องอยู่ในรูปแบบนี้ในสักวันหนึ่ง ไม่ว่าจะเป็นรายงาน โบรชัวร์ หรืออีบุ๊ก การเรียนรู้วิธีโต้ตอบกับไฟล์เหล่านี้ด้วยโปรแกรมช่วยให้มีความเป็นไปได้มากมาย ข้อกำหนดทั่วไปอย่างหนึ่งคือการดึงข้อมูลรูปภาพจากไฟล์ PDF ในคู่มือนี้ เราจะเจาะลึกวิธีใช้ไลบรารี Aspose.PDF สำหรับ .NET เพื่อดึงข้อมูลรายละเอียดสำคัญเกี่ยวกับรูปภาพที่ฝังอยู่ในเอกสาร PDF
ข้อกำหนดเบื้องต้น
ก่อนที่เราจะเข้าสู่รายละเอียดเล็กๆ น้อยๆ ของการเขียนโค้ด มีข้อกำหนดเบื้องต้นบางประการที่คุณจะต้องมี:
- สภาพแวดล้อมการพัฒนา: คุณจะต้องตั้งค่าสภาพแวดล้อมการพัฒนา .NET ซึ่งอาจเป็น Visual Studio หรือ IDE อื่นๆ ที่เข้ากันได้กับ .NET
- ไลบรารี Aspose.PDF: ตรวจสอบให้แน่ใจว่าคุณสามารถเข้าถึงไลบรารี Aspose.PDF ได้ คุณสามารถดาวน์โหลดได้จาก เว็บไซต์อาโพส .
- ความรู้พื้นฐานเกี่ยวกับ C#: ความคุ้นเคยกับ C# และแนวคิดการเขียนโปรแกรมเชิงวัตถุจะช่วยให้คุณทำตามบทช่วยสอนได้อย่างราบรื่น
- เอกสาร 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 ได้อย่างไร
คุณสามารถเข้าถึงฟอรั่มการสนับสนุนได้ ที่นี่ .