การดึงภาพจากเอกสาร PDF เป็นความต้องการที่พบบ่อยเมื่อต้องสร้าง pipeline การประมวลผลเอกสาร โดยเฉพาะสำหรับการสร้าง thumbnail หรือการนำกราฟิกไปใช้ใหม่ในที่อื่น ๆ GroupDocs.Parser Cloud SDK for .NET มี API ที่ทรงพลังซึ่งทำให้งานนี้ทำได้อย่างง่ายดายใน C#. ในคู่มือนี้คุณจะได้เรียนรู้วิธีอัปโหลด PDF, ดึงภาพที่ฝังอยู่ทั้งหมด, บันทึกลงในเครื่อง, และถ้าต้องการก็ทำความสะอาดไฟล์ระยะไกล, พร้อมตัวอย่างโค้ดเต็มและ REST examples.
ขั้นตอนการดึงรูปภาพจากเอกสาร PDF ด้วย C#
- อัปโหลด PDF ไปยัง GroupDocs Cloud storage: ใช้
StorageApi.UploadFileเพื่อวาง PDF ต้นฉบับในคลาวด์.
var uploadRequest = new UploadFileRequest(remotePdfPath, File.ReadAllBytes(localPdfPath));
storageApi.UploadFile(uploadRequest);
การเรียกนี้ทำให้แน่ใจว่าไฟล์สามารถเข้าถึงได้สำหรับการวิเคราะห์.
- ขอรับภาพเอกสาร: เรียก
ParserApi.GetDocumentImagesพร้อมด้วยGetDocumentImagesRequest.
var imagesRequest = new GetDocumentImagesRequest(remotePdfPath);
ImagesResult imagesResult = parserApi.GetDocumentImages(imagesRequest);
การตอบสนองจะมีคอลเลกชันของอ็อบเจ็กต์ ImageInfo ซึ่งแต่ละอ็อบเจ็กต์จะเก็บข้อมูล Base64 และเมตาดาต้า ดูที่ อ้างอิง API สำหรับรายละเอียดเต็ม.
- ถอดรหัสและบันทึกแต่ละภาพ: วนลูปผ่าน
imagesResult.Images, แปลงสตริง Base64 เป็นอาร์เรย์ไบต์, และเขียนไฟล์ลงดิสก์.
foreach (ImageInfo imgInfo in imagesResult.Images)
{
byte[] imageBytes = Convert.FromBase64String(imgInfo.Base64Data);
string extension = imgInfo.FileExtension?.TrimStart('.').ToLower() ?? "bin";
string fileName = $"extracted_page{imgInfo.PageNumber}_img{imgInfo.ImageIndex}_{imageCounter}.{extension}";
File.WriteAllBytes(fileName, imageBytes);
}
คอนโซลจะแสดงชื่อไฟล์ที่บันทึก, ขนาดและ DPI เพื่อการตรวจสอบ.
- (Optional) ทำความสะอาด PDF ระยะไกล: หลังจากการสกัดคุณอาจลบไฟล์ที่อัปโหลดเพื่อให้การจัดเก็บเป็นระเบียบ.
var deleteRequest = new DeleteFileRequest(remotePdfPath);
storageApi.DeleteFile(deleteRequest);
ขั้นตอนนี้ถูกห่อหุ้มในบล็อก try‑catch เพื่อเพิกเฉยต่อข้อผิดพลาดใด ๆ ที่เกิดขึ้นระหว่างการทำความสะอาด.
- ตรวจสอบผลลัพธ์: คอนโซลจะแสดงสรุปเช่น
Total images extracted: 12เพื่อยืนยันว่าการสกัดสำเร็จ.
ตัวอย่างโค้ดเต็ม: ดึงรูปภาพจากเอกสาร PDF ด้วย GroupDocs.Parser
ตัวอย่างต่อไปนี้แสดงกระบวนการทำงานเต็มรูปแบบที่อธิบายไว้ข้างต้น ซึ่งรวมถึงการกำหนดค่า การอัปโหลด การสกัดภาพ การบันทึก และการทำความสะอาดแบบเลือกได้
using System;
using System.IO;
using System.Collections.Generic;
using GroupDocs.Parser.Cloud.Sdk.Api;
using GroupDocs.Parser.Cloud.Sdk.Client;
using GroupDocs.Parser.Cloud.Sdk.Model;
using GroupDocs.Parser.Cloud.Sdk.Model.Requests;
namespace ExtractImagesFromPdf
{
class Program
{
static void Main(string[] args)
{
// Configuration – replace with your actual credentials
var config = new Configuration
{
ClientId = "YOUR_CLIENT_ID",
ClientSecret = "YOUR_CLIENT_SECRET"
};
// APIs
var storageApi = new StorageApi(config);
var parserApi = new ParserApi(config);
// Input PDF path (local) and remote name in storage
const string localPdfPath = "input.pdf";
const string remotePdfPath = "input.pdf";
try
{
// -------------------------------------------------
// 1. Upload PDF to GroupDocs Cloud storage (if not already there)
// -------------------------------------------------
if (!File.Exists(localPdfPath))
throw new FileNotFoundException($"Local file not found: {localPdfPath}");
var uploadRequest = new UploadFileRequest(remotePdfPath, File.ReadAllBytes(localPdfPath));
storageApi.UploadFile(uploadRequest);
// -------------------------------------------------
// 2. Retrieve document images (all pages)
// -------------------------------------------------
var imagesRequest = new GetDocumentImagesRequest(remotePdfPath);
ImagesResult imagesResult = parserApi.GetDocumentImages(imagesRequest);
// -------------------------------------------------
// 3. Save each extracted image to disk
// -------------------------------------------------
int imageCounter = 0;
foreach (ImageInfo imgInfo in imagesResult.Images)
{
// Image data is returned as Base64 string
byte[] imageBytes = Convert.FromBase64String(imgInfo.Base64Data);
// Build a descriptive file name
string extension = imgInfo.FileExtension?.TrimStart('.').ToLower() ?? "bin";
string fileName = $"extracted_page{imgInfo.PageNumber}_img{imgInfo.ImageIndex}_{imageCounter}.{extension}";
File.WriteAllBytes(fileName, imageBytes);
Console.WriteLine($"Saved: {fileName} ({imgInfo.Width}x{imgInfo.Height} px, {imgInfo.Resolution} DPI)");
imageCounter++;
}
Console.WriteLine($"Total images extracted: {imageCounter}");
}
catch (ApiException apiEx)
{
Console.Error.WriteLine($"GroupDocs API error: {apiEx.ErrorCode} - {apiEx.Message}");
}
catch (Exception ex)
{
Console.Error.WriteLine($"Unexpected error: {ex.Message}");
}
finally
{
// -------------------------------------------------
// 4. Optional cleanup – delete the uploaded PDF from storage
// -------------------------------------------------
try
{
var deleteRequest = new DeleteFileRequest(remotePdfPath);
storageApi.DeleteFile(deleteRequest);
}
catch
{
// Ignored – cleanup is optional
}
}
}
}
}
หมายเหตุ: ตัวอย่างโค้ดนี้แสดงการทำงานหลักของฟังก์ชัน ก่อนนำไปใช้ในโครงการของคุณ โปรดตรวจสอบให้แน่ใจว่าได้อัปเดตเส้นทางไฟล์และค่าการกำหนดค่าต่าง ๆ ให้ตรงกับสภาพแวดล้อมจริงของคุณ ตรวจสอบว่าขึ้นตอนการพึ่งพาที่จำเป็นทั้งหมดได้ติดตั้งอย่างถูกต้อง และทำการทดสอบอย่างละเอียดในสภาพแวดล้อมการพัฒนา หากคุณพบปัญหาใด ๆ โปรดดูที่ เอกสารอย่างเป็นทางการ หรือ ติดต่อ ทีมสนับสนุน เพื่อขอความช่วยเหลือ
ดึงรูปภาพผ่าน REST API ด้วย cURL
การดำเนินการเดียวกันสามารถทำได้ด้วยการเรียก REST โดยตรง ด้านล่างเป็นขั้นตอนการทำงาน cURL ขั้นต่ำ
- รับโทเค็นการเข้าถึง (OAuth 2.0 client credentials grant).
curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
การตอบสนองจะมี access_token.
- อัปโหลด PDF ไปยังที่เก็บข้อมูลบนคลาวด์.
curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/input.pdf" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/pdf" \
--data-binary "@input.pdf"
- ขอรับรูปภาพ สำหรับเอกสารที่อัปโหลด.
curl -X GET "https://api.groupdocs.cloud/v2.0/parser/input.pdf/images" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
การตอบสนอง JSON จะรวมอาร์เรย์ของรูปภาพที่มี base64Data, fileExtension, pageNumber เป็นต้น.
- บันทึกแต่ละภาพ ในเครื่อง (ตัวอย่างโดยใช้
jqและbase64).
curl -X GET "https://api.groupdocs.cloud/v2.0/parser/input.pdf/images" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" | \
jq -r '.images[] | "\(.pageNumber)_\(.imageIndex).\(.fileExtension) \(.base64Data)"' | \
while read filename b64; do
echo "$b64" | base64 -d > "$filename"
done
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ endpoint และพารามิเตอร์ โปรดดู เอกสาร API อย่างเป็นทางการ.
เตรียมสภาพแวดล้อมให้พร้อม
- Install the .NET client library via NuGet:
dotnet add package GroupDocs.Parser-Cloud
The package is available from the official หน้าดาวน์โหลด.
ตรวจสอบว่าคุณได้ติดตั้ง .NET 6.0 หรือรุ่นที่ใหม่กว่าแล้วและมีบัญชี GroupDocs Cloud ที่ใช้งานได้พร้อมข้อมูลประจำตัวของลูกค้า
(ไม่บังคับ) คัดลอกที่เก็บตัวอย่างเพื่ออ้างอิง:
git clone https://github.com/groupdocs-parser-cloud/groupdocs-parser-cloud-dotnet.git
สิ่งที่ทำให้ GroupDocs.Parser เหมาะสำหรับการสกัดภาพ
- การดึงภาพโดยตรง: การเรียก
GetDocumentImagesจะคืนภาพในรูปแบบดั้งเดิมโดยไม่มีขั้นตอนการแปลงเพิ่มเติม. - การส่งแบบ Base64: ภาพจะถูกให้เป็นสตริง Base64 ทำให้ง่ายต่อการถอดรหัสในภาษาใดก็ได้.
- เมตาดาต้าระดับหน้า: แต่ละ
ImageInfoจะรวมหมายเลขหน้า, ขนาด, ความละเอียดและดัชนี ซึ่งช่วยจัดระเบียบสินทรัพย์ที่สกัดออกมา. - รองรับรูปแบบเรสเตอร์ทั่วไปทั้งหมด: PNG, JPEG, BMP, GIF, TIFF และอื่น ๆ จะถูกเก็บรักษาอย่างตรงตามที่บันทึกใน PDF.
- การประมวลผลคลาวด์ที่ขยายได้: PDF ขนาดใหญ่จะถูกจัดการบนเซิร์ฟเวอร์ของ GroupDocs ลดภาระหน่วยความจำบนแอปพลิเคชันของคุณ.
กำหนดค่าตัวเลือกการสกัดภาพ
แม้ว่าตัวอย่างพื้นฐานจะทำงานได้ทันที คุณก็สามารถปรับแต่งคำขอได้ละเอียด:
- ระบุช่วงหน้า: เพิ่ม
pages = "1-5"ไปยังGetDocumentImagesRequestเพื่อจำกัดการสกัดข้อมูล. - ตั้งค่าคุณภาพภาพ: ใช้พารามิเตอร์
imageQuality(0‑100) หากคุณต้องการผลลัพธ์ที่ compressed . - กรองตามรูปแบบ: ระบุ
fileExtensions = ["png","jpeg"]เพื่อรับเฉพาะรูปแบบที่เลือก.
ตัวเลือกเหล่านี้ได้รับการบันทึกไว้ใน เอกสารอ้างอิง API.
สรุป
การดึงรูปภาพจากเอกสาร PDF ใน C# กลายเป็นกระบวนการที่ง่ายและเชื่อถือได้เมื่อคุณใช้ GroupDocs.Parser Cloud SDK for .NET. SDK จัดการการอัปโหลด, การแยกวิเคราะห์และการแปลงเป็น Base64, ทำให้คุณสามารถมุ่งเน้นที่การบันทึกไฟล์และการรวมเข้ากับกระบวนการทำงานของคุณ. อย่าลืมรักษาข้อมูลประจำตัวของลูกค้าให้ปลอดภัย, ปฏิบัติตามเงื่อนไขการใช้งาน, และพิจารณาใช้ใบอนุญาตชั่วคราวสำหรับการประเมินผลที่ หน้าใบอนุญาตชั่วคราว. ด้วยโค้ดและตัวอย่าง REST ที่ให้มา, คุณพร้อมที่จะเพิ่มการดึงรูปภาพ PDF ที่แข็งแรงให้กับแอปพลิเคชัน .NET ใด ๆ
คำถามที่พบบ่อย
ฉันจะดึงรูปภาพจากเอกสาร PDF โดยใช้ C# อย่างไร?
ใช้เมธอด GetDocumentImages ของ Parser API หลังจากอัปโหลด PDF ด้วย StorageApi.UploadFile ดึงสตริง Base64 ที่คืนมาและเขียนลงดิสก์ตามตัวอย่างโค้ดที่แสดง
ถ้า PDF ถูกป้องกันด้วยรหัสผ่านจะทำอย่างไร?
รวมรหัสผ่านไว้ในโมเดลคำขอ SDK จะถอดรหัสไฟล์ก่อนการดึงภาพ ดูที่ เอกสาร เพื่อดูชื่อคุณสมบัติที่แน่นอน.
ฉันสามารถจำกัดการสกัดเฉพาะหน้าที่ต้องการได้หรือไม่?
ใช่, ตั้งค่าคุณสมบัติ pages บน GetDocumentImagesRequest เป็นรายการคั่นด้วยเครื่องหมายคอมม่า หรือช่วง (เช่น "1-3,5"). API จะส่งคืนภาพเฉพาะจากหน้าที่ระบุเท่านั้น.
มีขนาดจำกัดสำหรับภาพที่แยกออกหรือไม่?
SDK จะคืนค่าข้อมูลภาพต้นฉบับโดยไม่ปรับขนาด หากคุณต้องการไฟล์ขนาดเล็กลง ให้ทำการประมวลผลต่อภาพที่บันทึกไว้โดยใช้ไลบรารีการประมวลผลภาพใดก็ได้
