استخراج الصور من ملفات PDF هو طلب شائع عند بناء خطوط معالجة المستندات، خاصة عندما تحتاج إلى إعادة استخدام الرسومات للصور المصغرة، التقارير، أو التحليل الإضافي. يوفر GroupDocs.Parser Cloud SDK for Java واجهة برمجة تطبيقات بسيطة تتيح لك سحب كل صورة مدمجة من ملف PDF ببضع أسطر من الشيفرة فقط. يشرح هذا الدليل كيفية تكوين SDK، تشغيل مثال كامل للكود، استخدام cURL لنفس المهمة، وتطبيق أفضل الممارسات لضمان استخراج موثوق للصور من PDF.

استخراج الصور من مستندات PDF في Java في 5 خطوات

  1. تكوين بيانات اعتماد API: إنشاء كائن Configuration وتعيين معرف العميل والسر الخاص بك.
Configuration config = new Configuration();
config.setClientId("YOUR_CLIENT_ID");
config.setClientSecret("YOUR_CLIENT_SECRET");
  1. تهيئة Parser API: إنشاء ApiClient باستخدام التكوين وإنشاء مثيل لـ ParserApi.
ApiClient apiClient = new ApiClient(config);
ParserApi parserApi = new ParserApi(apiClient);
  1. إنشاء طلب استخراج الصور: حدد مسار ملف PDF باستخدام FileInfo وأنشئ ExtractImagesRequest.

    String inputFilePath = "input.pdf";
    ExtractImagesRequest request = new ExtractImagesRequest()
            .setFileInfo(new FileInfo().setFilePath(inputFilePath));
    
  2. تنفيذ الاستخراج واسترجاع الصور: استدعِ extractImages واحصل على قائمة كائنات Image.

ImagesResult imagesResult = parserApi.extractImages(request);
List<Image> images = imagesResult.getImages();
  1. احفظ كل صورة إلى التخزين المحلي: قم بالتكرار عبر المجموعة واكتب البيانات الثنائية إلى الملفات.
for (int i = 0; i < images.size(); i++) {
    Image img = images.get(i);
    String outputFileName = "extracted_image_" + (i + 1) + "_" + img.getFileName();
    try (FileOutputStream fos = new FileOutputStream(outputFileName)) {
        fos.write(img.getData());
    }
    System.out.println("Saved image: " + outputFileName);
}

لمزيد من التفاصيل حول كل فئة، راجع المرجع الرسمي لواجهة برمجة التطبيقات.

مثال كامل على الكود: استخراج الصور من مستندات PDF باستخدام Java و GroupDocs.Parser

يوضح المثال التالي سير العمل الكامل من إعداد الاعتماد إلى حفظ الصورة.

import com.groupdocs.parser.cloud.ApiClient;
import com.groupdocs.parser.cloud.Configuration;
import com.groupdocs.parser.cloud.api.ParserApi;
import com.groupdocs.parser.cloud.model.FileInfo;
import com.groupdocs.parser.cloud.model.Image;
import com.groupdocs.parser.cloud.model.ImagesResult;
import com.groupdocs.parser.cloud.model.requests.ExtractImagesRequest;

import java.io.FileOutputStream;
import java.util.List;

public class ExtractImagesFromPdf {
    public static void main(String[] args) {
        // Configure API credentials
        Configuration config = new Configuration();
        config.setClientId("YOUR_CLIENT_ID");
        config.setClientSecret("YOUR_CLIENT_SECRET");
        // config.setBaseUrl("https://api.groupdocs.cloud"); // optional, if needed

// Initialize API client and Parser API
        ApiClient apiClient = new ApiClient(config);
        ParserApi parserApi = new ParserApi(apiClient);

// Path to the PDF file stored in GroupDocs Cloud storage
        String inputFilePath = "input.pdf";

// Build request for image extraction
        ExtractImagesRequest request = new ExtractImagesRequest()
                .setFileInfo(new FileInfo().setFilePath(inputFilePath));

try {
            // Perform extraction
            ImagesResult imagesResult = parserApi.extractImages(request);
            List<Image> images = imagesResult.getImages();

// Save each extracted image to local disk
            for (int i = 0; i < images.size(); i++) {
                Image img = images.get(i);
                String outputFileName = "extracted_image_" + (i + 1) + "_" + img.getFileName();
                try (FileOutputStream fos = new FileOutputStream(outputFileName)) {
                    fos.write(img.getData());
                }
                System.out.println("Saved image: " + outputFileName);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ملاحظة: يعرض مثال الشيفرة هذا الوظيفة الأساسية. قبل استخدامه في مشروعك، تأكد من تحديث أي مسارات ملفات وقيم التكوين لتتناسب مع بيئتك الفعلية، وتحقق من أن جميع الاعتمادات المطلوبة مثبتة بشكل صحيح، واختبر بدقة في بيئة التطوير الخاصة بك. إذا واجهت أي مشكلات، يرجى الرجوع إلى الوثائق الرسمية أو التواصل مع فريق الدعم للحصول على المساعدة.

استخراج الصور من PDF عبر cURL و REST API

يمكنك تحقيق نفس النتيجة دون كتابة كود Java عن طريق استدعاء نقاط النهاية REST الخاصة بـ GroupDocs.Parser Cloud مباشرةً.

  1. الحصول على رمز وصول
curl -X POST "https://api.groupdocs.cloud/v2.0/connect/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
  1. رفع ملف PDF
curl -X POST "https://api.groupdocs.cloud/v2.0/storage/file/upload?path=input.pdf" \
        -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
        -F "file=@/path/to/input.pdf"
  1. طلب استخراج الصور
curl -X POST "https://api.groupdocs.cloud/v2.0/parser/extractImages" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"fileInfo": {"filePath": "input.pdf"}}'
  1. تنزيل الصور المستخرجة (الاستجابة تحتوي على بيانات base64؛ يمكنك فك تشفيرها محليًا)

للحصول على قائمة كاملة بالمعلمات، راجع وثائق API الرسمية.

تثبيت وتكوين GroupDocs.Parser Cloud SDK for Java

أضف اعتماد Maven إلى ملف pom.xml الخاص بك (أو المقتطف المكافئ لـ Gradle).

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-parser-cloud</artifactId>
    <version>26.2</version>
</dependency>

يتم توفير SDK كمكتبة سحابية؛ لا يلزم وجود ملفات تنفيذية محلية. قم بتنزيل أحدث حزمة من صفحة الإصدار. تأكد من أن لديك Java 8 أو أعلى وحساب GroupDocs Cloud صالح مع معرف العميل والسر.

GroupDocs.Parser Cloud SDK for Java ميزات تمكين استرجاع الصور

  • استخراج كامل للصور من PDF - يسترجع كل صورة نقطية ومتجهة مدمجة في المستند.
  • البيانات الوصفية لكل صورة - تُعيد اسم الملف، الحجم، الصيغة، ورقم الصفحة.
  • دعم لجميع صيغ الصور الشائعة - PNG, JPG, BMP, GIF, TIFF, وأكثر.
  • تكامل تخزين السحابة - يعمل مباشرةً مع الملفات المخزنة في GroupDocs Cloud دون الحاجة إلى تحميلها أولاً.
  • معالجة قابلة للتوسع معتمدة على REST - يتعامل مع ملفات PDF الكبيرة وأحمال العمل ذات الحجم العالي عبر واجهة برمجة التطبيقات السحابية.

ضبط دقيق لإعدادات استخراج الصور

بينما يعمل الطلب الأساسي مباشرةً، يمكنك تعديل الخيارات مثل:

  • حماية كلمة المرور - تعيين خاصية password على FileInfo لملفات PDF المشفرة.
  • نطاق الصفحات - تحديد الاستخراج لصفحات معينة عن طريق إضافة مصفوفة pages إلى JSON الخاص بالطلب.
  • تحويل تنسيق الصورة - طلب التحويل إلى تنسيق مختلف عن طريق تحديد نوع الإخراج المطلوب في الطلب (راجع مرجع API للحصول على الحقول الدقيقة).

مثال على تعيين كلمة مرور (مقتطف من الكود الرئيسي):

FileInfo fileInfo = new FileInfo()
        .setFilePath("protected.pdf")
        .setPassword("mySecret");

نصائح عملية لاستخراج الصور من PDF بكفاءة

  • تحقق من وجود الملف قبل إرسال الطلب لتجنب استدعاءات API غير الضرورية.
  • معالجة الصور في تدفقات عند التعامل مع ملفات كبيرة لتقليل استهلاك الذاكرة.
  • استخدام الترقيـم الصفحي إذا كنت تحتاج فقط إلى صور من صفحات معينة؛ هذا يسرّع الاستجابة.
  • معالجة حدود معدل API عن طريق تنفيذ تأخير تصاعدي عند استجابات HTTP 429.
  • سجل اسم كل ملف محفوظ لتبسيط استكشاف الأخطاء وتتبع التدقيق.

الخلاصة

يصبح استخراج الصور من مستندات PDF في Java مهمة بسيطة وموثوقة عندما تستفيد من قوة GroupDocs.Parser Cloud SDK for Java. يتعامل SDK مع إدارة الاعتمادات، والتفاعل مع التخزين السحابي، وفك ترميز الصور، مما يتيح لك التركيز على منطق التطبيق الخاص بك. للنشر في بيئات الإنتاج، قم بشراء ترخيص مناسب من خلال صفحة التسعير أو احصل على ترخيص مؤقت للتقييم. مع مثال الشيفرة، ودليل cURL، وتوصيات أفضل الممارسات في هذه المقالة، أنت جاهز لدمج استخراج صور PDF في أي حل مبني على Java.

الأسئلة المتكررة

  • ما هي الصيغ التي يمكن استخراجها من ملف PDF؟
    يستخرج SDK صيغ الصور النقطية مثل PNG و JPG و BMP و GIF و TIFF، بالإضافة إلى الرسومات المتجهة عندما يتم تخزينها كصور.

  • هل أحتاج إلى تنزيل ملف PDF قبل استخراج الصور؟
    لا. يعمل SDK مباشرةً مع الملفات المخزنة في تخزين GroupDocs Cloud، مما يلغي الحاجة إلى التنزيلات المحلية.

  • كيف يتعامل SDK مع ملفات PDF الكبيرة؟
    يتم تنفيذ الاستخراج على جانب الخادم، لذا يبقى استهلاك الذاكرة على جهازك منخفضًا. يمكنك أيضًا تحديد الاستخراج لصفحات معينة لتحسين الأداء.

  • هل هناك طريقة لاختبار الاستخراج دون كتابة كود؟
    نعم، يمكنك استخدام أوامر cURL المذكورة أعلاه أو تجربة وحدة التحكم التفاعلية لواجهة برمجة التطبيقات في صفحة المنتج.

اقرأ المزيد