जावा पीडीएफ पेज काउंट कैसे प्राप्त करें और दस्तावेज़ मेटाडेटा निकालें

यदि आपको दस्तावेज़ को खोले बिना java pdf page count चाहिए, तो आप सही जगह पर हैं। चाहे आप एक दस्तावेज़ प्रबंधन प्रणाली बना रहे हों, अपलोड की वैधता जांच रहे हों, या कंटेंट पाइपलाइन को स्वचालित कर रहे हों, फ़ाइल प्रकार, आकार और पेज काउंट को प्रोग्रामेटिकली निकालना समय बचाता है और त्रुटियों को कम करता है। इस गाइड में हम आपको GroupDocs.Comparison for Java का उपयोग करके java get file type, java read file size, और java get page count करने की प्रक्रिया दिखाएंगे, साथ ही किनारे के मामलों और बड़े फ़ाइलों को संभालने के सर्वोत्तम अभ्यास टिप्स भी देंगे।

त्वरित उत्तर

  • java get file type के लिए मैं कौन सी लाइब्रेरी उपयोग कर सकता हूँ? GroupDocs.Comparison for Java.
  • क्या मैं java extract pdf metadata भी कर सकता हूँ? हाँ – वही API PDFs और कई अन्य फ़ॉर्मैट्स के लिए काम करता है।
  • क्या मुझे लाइसेंस की आवश्यकता है? विकास के लिए ट्रायल या टेम्पररी लाइसेंस काम करता है; उत्पादन के लिए पूर्ण लाइसेंस आवश्यक है।
  • कौन सा Java संस्करण आवश्यक है? JDK 8+ (JDK 11+ की सलाह दी जाती है)।
  • क्या कोड थ्रेड‑सेफ़ है? प्रत्येक थ्रेड के लिए एक अलग Comparer इंस्टेंस बनाएँ।

दस्तावेज़ मेटाडेटा क्यों निकालें?

दस्तावेज़ मेटाडेटा निकालने से आप प्रोग्रामेटिकली फ़ाइल का प्रकार, आकार और पेज काउंट निर्धारित कर सकते हैं, जिससे स्वचालित वैधता, इंडेक्सिंग और वर्कफ़्लो निर्णय संभव होते हैं। आप तुरंत असमर्थित फ़ॉर्मैट्स को अस्वीकार कर सकते हैं, बड़े फ़ाइलों को अलग प्रोसेसिंग कतार में भेज सकते हैं, या दस्तावेज़ संग्रह का सारांश बनाने वाले रिपोर्ट जनरेट कर सकते हैं। वास्तविक परिदृश्यों में यह मैन्युअल प्रयास को कम करता है, अनुपालन जांच को सुधारता है, और हजारों फ़ाइलों पर बैच ऑपरेशन्स को तेज़ करता है।

इस गाइड में आप क्या सीखेंगे

इस ट्यूटोरियल में आप सीखेंगे कि GroupDocs.Comparison for Java को कैसे सेटअप करें, java pdf page count प्राप्त करें, फ़ाइल प्रकार और आकार निकालें, और सामान्य त्रुटियों को कैसे संभालें, ताकि आप किसी भी Java एप्लिकेशन में मेटाडेटा एक्सट्रैक्शन को इंटीग्रेट कर सकें। आप बड़े दस्तावेज़ों के साथ काम करते समय संसाधन प्रबंधन, त्रुटि संभालना और प्रदर्शन ट्यूनिंग के सर्वोत्तम पैटर्न भी देखेंगे।

पूर्वापेक्षाएँ: शुरू करने से पहले आपको क्या चाहिए

आपको JDK 8 या उससे ऊपर, निर्भरता प्रबंधन के लिए Maven, और IntelliJ IDEA, Eclipse, या VS Code जैसे IDE की आवश्यकता होगी, साथ ही GroupDocs.Comparison लाइसेंस (ट्रायल या पूर्ण) कोड उदाहरण चलाने के लिए चाहिए। यह लाइब्रेरी किसी भी प्लेटफ़ॉर्म पर काम करती है जो Java 8+ को सपोर्ट करता है, और आपके पास उन फ़ोल्डरों पर पढ़ने/लिखने की अनुमति होनी चाहिए जहाँ आप दस्तावेज़ों का विश्लेषण करेंगे।

GroupDocs.Comparison for Java सेटअप करना

चरण 1: Maven कॉन्फ़िगरेशन

अपने pom.xml में GroupDocs.Comparison निर्भरता जोड़ें। स्निपेट को <dependencies> सेक्शन के अंदर रखें:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/comparison/java/</url>
   </repository>
</repositories>
<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-comparison</artifactId>
      <version>25.2</version>
   </dependency>
</dependencies>

Pro tip: हमेशा GroupDocs वेबसाइट पर नवीनतम संस्करण की जाँच करें—पुराना संस्करण उपयोग करने से संगतता चेतावनियाँ और फीचर की कमी हो सकती है।

चरण 2: लाइसेंस सेटअप (इसे न छोड़ें!)

GroupDocs.Comparison को उत्पादन उपयोग के लिए वैध लाइसेंस चाहिए।

  1. Free trial – परीक्षण और छोटे प्रोजेक्ट्स के लिए आदर्श। डाउनलोड करें नि:शुल्क ट्रायल पेज से।
  2. Temporary license – विकास और मूल्यांकन के लिए उपयोगी। टेम्पररी लाइसेंस के लिए आवेदन करें यहाँ
  3. Full license – व्यावसायिक डिप्लॉयमेंट के लिए आवश्यक। लाइसेंस खरीदें

चरण 3: अपना सेटअप सत्यापित करें

लाइब्रेरी सही ढंग से लोड हो रही है यह सुनिश्चित करने के लिए एक सरल टेस्ट क्लास बनाएँ:

import com.groupdocs.comparison.Comparer;

public class SetupTest {
    public static void main(String[] args) {
        System.out.println("GroupDocs.Comparison is ready to use!");
        // We'll add actual functionality next
    }
}

यदि प्रोग्राम बिना एक्सेप्शन के चलता है, तो आप मेटाडेटा निकालने के लिए तैयार हैं।

कार्यान्वयन गाइड: चरण-दर-चरण दस्तावेज़ मेटाडेटा निकालना

java get file type – Comparer ऑब्जेक्ट को इनिशियलाइज़ करें

Comparer वह मुख्य क्लास है जो दस्तावेज़ को लोड करती है और उसके मेटाडेटा तक पहुँच प्रदान करती है।

import com.groupdocs.comparison.Comparer;
import java.io.IOException;

try (Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_document.docx")) {
    // We'll extract info here
} catch (Exception e) {
    System.err.println("Error initializing comparer: " + e.getMessage());
}

क्या हो रहा है?

  • try‑with‑resources ब्लॉक सुनिश्चित करता है कि Comparer इंस्टेंस स्वचालित रूप से बंद हो जाए, जिससे मेमोरी लीक नहीं होगी।
  • loadOptions ऑब्जेक्ट को बाद में पासवर्ड‑सुरक्षित फ़ाइलों या कस्टम लोड सेटिंग्स के लिए विस्तारित किया जा सकता है।

दस्तावेज़ जानकारी ऑब्जेक्ट प्राप्त करें

DocumentInfo दस्तावेज़ की निकाली गई प्रॉपर्टीज़ जैसे फ़ाइल प्रकार, आकार और पेज काउंट का केवल‑पढ़ने‑योग्य दृश्य प्रदान करता है।

import com.groupdocs.comparison.interfaces.IDocumentInfo;

try (Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_document.docx")) {
    try (IDocumentInfo info = comparer.getSource().getDocumentInfo()) {
        // Extract metadata here
    }
} catch (Exception e) {
    System.err.println("Error retrieving document info: " + e.getMessage());
}

मुख्य बिंदु:

  • getSource() स्रोत दस्तावेज़ रैपर लौटाता है।
  • getDocumentInfo() आपको सभी निकाले गए मेटाडेटा का केवल‑पढ़ने‑योग्य दृश्य देता है।

उपयोगी जानकारी निकालें

FileType दस्तावेज़ के पहचान किए गए फ़ॉर्मैट को दर्शाता है, जबकि getSize() उसकी बाइट लंबाई लौटाता है।

try (Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_document.docx")) {
    try (IDocumentInfo info = comparer.getSource().getDocumentInfo()) {
        // Extract key information
        String fileType = info.getFileType().getFileFormat();
        int pageCount = info.getPageCount();
        long fileSize = info.getSize();
        
        // Display the results
        System.out.printf("File type: %s\n", fileType);
        System.out.printf("Number of pages: %d\n", pageCount);
        System.out.printf("Document size: %d bytes (%.2f KB)\n", 
                         fileSize, fileSize / 1024.0);
    }
} catch (Exception e) {
    System.err.println("Error extracting document info: " + e.getMessage());
}

प्रत्येक मेथड क्या लौटाता है:

  • getFileType().getFileFormat() → फ़ाइल फ़ॉर्मैट जैसे DOCX, PDF, या TXT।
  • getPageCount() → कुल पेजों की संख्या, यानी वह java pdf page count जो आपको अक्सर चाहिए।
  • getSize() → बाइट्स में फ़ाइल आकार, java read file size जांच के लिए उपयोगी।

वास्तविक दुनिया का उदाहरण: पूर्ण कार्यान्वयन

नीचे एक प्रोडक्शन‑रेडी स्निपेट है जो सभी चीज़ों को जोड़ता है। यह फ़ाइल लोड करने, तीन मुख्य प्रॉपर्टीज़ निकालने, और उन्हें कंसोल पर प्रिंट करने को दर्शाता है।

import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.interfaces.IDocumentInfo;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class DocumentMetadataExtractor {
    
    public static void extractDocumentInfo(String filePath) {
        // First, check if file exists
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            System.err.println("File not found: " + filePath);
            return;
        }
        
        try (Comparer comparer = new Comparer(filePath)) {
            try (IDocumentInfo info = comparer.getSource().getDocumentInfo()) {
                displayDocumentInfo(info, filePath);
            }
        } catch (Exception e) {
            System.err.println("Error processing file " + filePath + ": " + e.getMessage());
        }
    }
    
    private static void displayDocumentInfo(IDocumentInfo info, String filePath) {
        String fileName = Paths.get(filePath).getFileName().toString();
        String fileType = info.getFileType().getFileFormat();
        int pageCount = info.getPageCount();
        long fileSize = info.getSize();
        
        System.out.println("=== Document Information ===");
        System.out.printf("File name: %s\n", fileName);
        System.out.printf("File type: %s\n", fileType);
        System.out.printf("Pages: %d\n", pageCount);
        System.out.printf("Size: %d bytes (%.2f KB)\n", fileSize, fileSize / 1024.0);
        System.out.println("============================\n");
    }
    
    public static void main(String[] args) {
        // Test with different file types
        extractDocumentInfo("path/to/your/document.docx");
        extractDocumentInfo("path/to/your/document.pdf");
    }
}

सामान्य समस्याएँ और समाधान

समस्या 1: “फ़ाइल नहीं मिली” त्रुटियाँ

Symptoms: Comparer इनिशियलाइज़ करते समय एक्सेप्शन फेंका जाता है।
Solution: Comparer इंस्टेंस बनाने से पहले हमेशा फ़ाइल पाथ को वैध करें:

Path filePath = Paths.get(documentPath);
if (!Files.exists(filePath)) {
    throw new IllegalArgumentException("File does not exist: " + documentPath);
}
if (!Files.isReadable(filePath)) {
    throw new IllegalArgumentException("File is not readable: " + documentPath);
}

समस्या 2: बड़ी फ़ाइलों में मेमोरी समस्याएँ

Symptoms: मल्टी‑हंड्रेड‑पेज PDFs प्रोसेस करते समय OutOfMemoryError या धीमी प्रदर्शन।
Solution: फ़ाइलों को एक‑एक करके प्रोसेस करें, try‑with‑resources उपयोग करें, और JVM हीप (-Xmx2g अधिकतम 2 GB के लिए) बढ़ाने पर विचार करें। GroupDocs.Comparison पूरी फ़ाइल को मेमोरी में लोड किए बिना 2 GB तक की फ़ाइलों को संभाल सकता है।

// Always use try-with-resources
try (Comparer comparer = new Comparer(filePath)) {
    // Process immediately and don't store large objects
    processDocumentInfo(comparer.getSource().getDocumentInfo());
} // Resources automatically cleaned up here

समस्या 3: असमर्थित फ़ाइल फ़ॉर्मैट्स

Symptoms: लाइब्रेरी को अज्ञात एक्सटेंशन मिलने पर एक्सेप्शन।
Solution: प्रोसेस करने से पहले समर्थित फ़ॉर्मैट्स सूची की जाँच करें। GroupDocs.Comparison 50+ इनपुट और आउटपुट फ़ॉर्मैट्स को सपोर्ट करता है, जिसमें DOCX, PDF, XLSX, PPTX, TXT, RTF, और HTML शामिल हैं।

public static boolean isSupportedFormat(String filePath) {
    String extension = FilenameUtils.getExtension(filePath).toLowerCase();
    return Arrays.asList("docx", "doc", "pdf", "txt", "rtf", "odt").contains(extension);
}

समस्या 4: उत्पादन में लाइसेंस समस्याएँ

Symptoms: वॉटरमार्क दिखाई देता है या कुछ API अक्षम हो जाते हैं।
Solution: सुनिश्चित करें कि लाइसेंस फ़ाइल एप्लिकेशन स्टार्टअप पर सही ढंग से लोड हुई है और लाइसेंस संस्करण लाइब्रेरी संस्करण से मेल खाता है।

// Apply license at application startup
License license = new License();
license.setLicense("path/to/your/license.lic");

उत्पादन उपयोग के लिए सर्वोत्तम अभ्यास

1. संसाधन प्रबंधन

Comparer और संबंधित स्ट्रीम्स की स्वचालित सफ़ाई के लिए हमेशा try‑with‑resources उपयोग करें:

// Good - resources cleaned up automatically
try (Comparer comparer = new Comparer(filePath);
     IDocumentInfo info = comparer.getSource().getDocumentInfo()) {
    // Process info
}

// Bad - potential memory leaks
Comparer comparer = new Comparer(filePath);
IDocumentInfo info = comparer.getSource().getDocumentInfo();
// Processing code
// Resources might not be cleaned up properly

2. त्रुटि संभालने की रणनीति

मेटाडेटा एक्सट्रैक्शन को एक ही try ब्लॉक में रैप करें और विस्तृत त्रुटि जानकारी लॉग करें। इससे ट्रबलशूटिंग आसान हो जाता है और एप्लिकेशन अनपेक्षित रूप से क्रैश नहीं होता।

public DocumentInfo extractSafely(String filePath) {
    try {
        return extractDocumentInfo(filePath);
    } catch (SecurityException e) {
        log.warn("Access denied for file: " + filePath, e);
        return null;
    } catch (IOException e) {
        log.error("I/O error processing file: " + filePath, e);
        return null;
    } catch (Exception e) {
        log.error("Unexpected error processing file: " + filePath, e);
        return null;
    }
}

3. प्रदर्शन अनुकूलन

बैच प्रोसेसिंग करते समय ComparerFactory को थ्रेड‑लोकल रूप में पुन: उपयोग करें ताकि ऑब्जेक्ट निर्माण दोहराया न जाए, और थ्रेड्स की संख्या को CPU कोर की संख्या तक सीमित रखें ताकि थ्रूपुट अधिकतम हो सके।

public List<DocumentInfo> processDocumentBatch(List<String> filePaths) {
    return filePaths.parallelStream()
                   .map(this::extractSafely)
                   .filter(Objects::nonNull)
                   .collect(Collectors.toList());
}

कब इसे अन्य तरीकों की तुलना में उपयोग करें

GroupDocs.Comparison का उपयोग तब करें जब:

  • आपको Office और इमेज फ़ॉर्मैट्स की विस्तृत रेंज में विश्वसनीय मेटाडेटा एक्सट्रैक्शन चाहिए।
  • आप भविष्य में दस्तावेज़ तुलना सुविधाओं की आवश्यकता की उम्मीद करते हैं, क्योंकि वही Comparer क्लास दोनों को सपोर्ट करता है।
  • आपके दस्तावेज़ 100 पेज से अधिक हैं, और आपको रेंडरिंग के बिना सटीक पेज काउंट चाहिए।

विकल्पों पर विचार तब करें जब:

  • आपको केवल बेसिक फ़ाइल आकार या एक्सटेंशन जांच चाहिए—java.nio.file.Files.probeContentType और Files.size पर्याप्त हैं।
  • बजट सीमाओं के कारण व्यावसायिक लाइसेंस नहीं ले सकते—Apache Tika जैसी ओपन‑सोर्स लाइब्रेरी बेसिक मेटाडेटा दे सकती है लेकिन GroupDocs की व्यापक फ़ॉर्मैट कवरेज नहीं है।

समस्या निवारण गाइड

समस्या: कोड कंपाइल होता है लेकिन रनटाइम एक्सेप्शन फेंकता है

Check these:

  1. क्या लाइसेंस सही ढंग से लागू किया गया है?
  2. क्या आप एब्सोल्यूट पाथ या क्लासपाथ रिसोर्स उपयोग कर रहे हैं?
  3. क्या प्रोसेस को फ़ाइल पर पढ़ने की अनुमति है?
  4. क्या फ़ाइल फ़ॉर्मैट समर्थित फ़ॉर्मैट्स तालिका में सूचीबद्ध है?

समस्या: मेमोरी उपयोग लगातार बढ़ रहा है

Solutions:

  1. सुनिश्चित करें कि प्रत्येक Comparer को try‑with‑resources ब्लॉक के भीतर बनाया गया है।
  2. फ़ाइलों को एक‑एक करके प्रोसेस करें, एक साथ कई नहीं लोड करें।
  3. JVM हीप केवल आवश्यक होने पर ही बढ़ाएँ; स्ट्रीमिंग API को प्राथमिकता दें।

समस्या: कुछ मेटाडेटा फ़ील्ड null लौटाते हैं

यह उन फ़ाइलों के लिए सामान्य है जिनमें अनुरोधित प्रॉपर्टी नहीं होती (जैसे, साधारण टेक्स्ट फ़ाइल में पेज काउंट नहीं होता)। मान का उपयोग करने से पहले हमेशा null जाँच करें।

निष्कर्ष और अगले कदम

आप अब GroupDocs.Comparison for Java का उपयोग करके दस्तावेज़ मेटाडेटा—जिसमें java pdf page count, फ़ाइल प्रकार और आकार शामिल हैं—निकालने की ठोस नींव रख चुके हैं। आपने लाइब्रेरी सेटअप करना, मुख्य प्रॉपर्टीज़ प्राप्त करना, सामान्य कठिनाइयों को संभालना, और प्रोडक्शन‑ग्रेड सर्वोत्तम अभ्यास लागू करना सीखा।

आगे क्या?

  • document comparison API का अन्वेषण करें ताकि संस्करणों के बीच बदलावों का पता लगाया जा सके।
  • ऑन‑डिमांड विश्लेषण के लिए मेटाडेटा एक्सट्रैक्शन को Spring Boot REST सेवा में इंटीग्रेट करें।
  • उच्च मात्रा वाले वर्कलोड के लिए क्यू सिस्टम (जैसे RabbitMQ) के साथ batch processing लागू करें।
  • यदि आपको कंपनी‑विशिष्ट मेटाडेटा चाहिए तो Office फ़ाइलों के लिए custom property extraction में गहराई से जाएँ।

अधिक जानकारी के लिए आधिकारिक GroupDocs दस्तावेज़ीकरण और पूर्ण API रेफ़रेंस देखें।

अक्सर पूछे जाने वाले प्रश्न

Q: क्या मैं पासवर्ड‑सुरक्षित दस्तावेज़ों से मेटाडेटा निकाल सकता हूँ?
A: हाँ, Comparer इंस्टेंस बनाते समय LoadOptions के माध्यम से पासवर्ड प्रदान करें।

Q: मेटाडेटा एक्सट्रैक्शन के लिए कौन से फ़ाइल फ़ॉर्मैट सपोर्टेड हैं?
A: GroupDocs.Comparison 50+ फ़ॉर्मैट्स को सपोर्ट करता है, जिसमें DOCX, PDF, XLSX, PPTX, TXT, RTF, HTML, और कई इमेज प्रकार शामिल हैं।

Q: क्या मैं Office दस्तावेज़ों से कस्टम प्रॉपर्टीज़ निकाल सकता हूँ?
A: मानक DocumentInfo बिल्ट‑इन प्रॉपर्टीज़ को कवर करता है; कस्टम प्रॉपर्टीज़ के लिए आपको GroupDocs को Office Open XML SDK या समान लाइब्रेरी के साथ संयोजित करना पड़ेगा।

Q: बहुत बड़ी फ़ाइलों को मेमोरी खत्म हुए बिना कैसे संभालूँ?
A: try‑with‑resources उपयोग करें, फ़ाइलों को एक‑एक करके प्रोसेस करें, और पर्याप्त JVM हीप (जैसे -Xmx2g) आवंटित करें। लाइब्रेरी बड़ी फ़ाइलों को स्ट्रीम करती है, इसलिए पूरी दस्तावेज़ को मेमोरी में लोड करने की ज़रूरत नहीं पड़ती।

Q: क्या यह क्लाउड स्टोरेज में संग्रहीत दस्तावेज़ों के साथ काम कर सकता है?
A: हाँ, फ़ाइल को अस्थायी स्थानीय पाथ पर डाउनलोड करें या सीधे ByteArrayInputStream में स्ट्रीम करें और फिर Comparer को पास करें।

Q: लाइसेंस त्रुटियों का सामना करने पर क्या करें?
A: लाइसेंस फ़ाइल पाथ सही है, लाइसेंस संस्करण लाइब्रेरी संस्करण से मेल खाता है, और लाइसेंस समाप्त नहीं हुआ है, यह सुनिश्चित करें। यदि समस्या बनी रहे तो GroupDocs सपोर्ट से संपर्क करें।

Q: क्या यह मल्टी‑थ्रेडेड एप्लिकेशन्स में सुरक्षित है?
A: बिल्कुल, बशर्ते प्रत्येक थ्रेड अपना स्वयं का Comparer इंस्टेंस बनाए। एक ही इंस्टेंस को कई थ्रेड्स में साझा न करें।

Additional resources


अंतिम अपडेट: 2026-08-25
परीक्षित संस्करण: GroupDocs.Comparison 25.2
लेखक: GroupDocs

संबंधित ट्यूटोरियल