ข้อมูลรูปภาพในไฟล์ 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 ได้อย่างไร
คุณสามารถเข้าถึงฟอรั่มการสนับสนุนได้ที่นี่.