تشتمل البيانات التعريفية الموجودة في ملفات PDF على تفاصيل مهمة حول المستند، بما في ذلك العنوان والمؤلف وتواريخ الإنشاء والتعديل والكلمات الرئيسية والبيانات الأخرى ذات الصلة. يمكن أن يوفر استخراج هذه البيانات التعريفية مزايا كبيرة لمجموعة من التطبيقات، بدءًا من أنظمة إدارة المستندات وحتى تحليل البيانات ومهام التشغيل الآلي. سوف تستكشف هذه المقالة عملية كيفية قراءة البيانات الوصفية من PDF باستخدام Java. فيما يلي تفصيل الإجراء خطوة بخطوة، مصحوبًا بمثال للتعليمات البرمجية لتوضيح كيفية قراءة البيانات التعريفية لملف PDF باستخدام Java.
خطوات قراءة البيانات الوصفية من PDF باستخدام Java
- قم بإعداد IDE الخاص بك لاستخدام GroupDocs.Metadata for Java لاستخراج البيانات التعريفية من ملفات PDF
- قم بإنشاء كائن Metadata باستخدام مسار ملف PDF كوسيطة لمنشئه
- قم بتعيين القواعد للتحقق من معلومات البيانات التعريفية التي تم جمعها
- توفير شرط لاستخدام أسلوب Metadata.findProperties
- التكرار من خلال كل خاصية على حدة
يزود استخراج البيانات التعريفية من ملفات PDF باستخدام Java المطورين بمعلومات قيمة فيما يتعلق بخصائص المستند مثل العنوان والتأليف وتواريخ الإنشاء والتعديل والكلمات الرئيسية. تلعب هذه البيانات دورًا حاسمًا في أنظمة إدارة المستندات وتحليل البيانات وسير العمل الآلي. يمكنك اتباع الإرشادات المتوفرة على نظام التشغيل Windows أو macOS أو Linux، طالما تم تثبيت Java. ليست هناك حاجة إلى عمليات تثبيت برامج إضافية لاستخراج البيانات التعريفية لملف PDF في Java. بعد تكوين المكتبة الموصى بها وضبط مسارات الملفات حسب الحاجة، يجب أن يكون دمج الكود التالي في مشاريعك أمرًا مباشرًا دون أي تعقيدات أو صعوبات.
رمز لقراءة البيانات الوصفية من PDF باستخدام Java
import com.groupdocs.metadata.Metadata; | |
import com.groupdocs.metadata.core.FileFormat; | |
import com.groupdocs.metadata.core.IReadOnlyList; | |
import com.groupdocs.metadata.core.MetadataProperty; | |
import com.groupdocs.metadata.core.MetadataPropertyType; | |
import com.groupdocs.metadata.licensing.License; | |
import com.groupdocs.metadata.search.FallsIntoCategorySpecification; | |
import com.groupdocs.metadata.search.OfTypeSpecification; | |
import com.groupdocs.metadata.search.Specification; | |
import com.groupdocs.metadata.tagging.Tags; | |
import java.util.Calendar; | |
import java.util.Date; | |
import java.util.regex.Matcher; | |
import java.util.regex.Pattern; | |
public class ReadMetadataFromPDFUsingJava { | |
public static void main(String[] args) { | |
// Set License to avoid the limitations of Metadata library | |
License license = new License(); | |
license.setLicense("GroupDocs.Metadata.lic"); | |
Metadata metadata = new Metadata("input.pdf"); | |
if (metadata.getFileFormat() != FileFormat.Unknown && !metadata.getDocumentInfo().isEncrypted()) { | |
System.out.println(); | |
// Fetch all metadata properties that fall into a particular category | |
IReadOnlyList<MetadataProperty> properties = metadata.findProperties(new FallsIntoCategorySpecification(Tags.getContent())); | |
System.out.println("The metadata properties describing some characteristics of the file content: title, keywords, language, etc."); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
// Fetch all properties having a specific type and value | |
int year = Calendar.getInstance().get(Calendar.YEAR); | |
properties = metadata.findProperties(new OfTypeSpecification(MetadataPropertyType.DateTime).and(new ReadMetadataFromPDFUsingJava().new YearMatchSpecification(year))); | |
System.out.println("All datetime properties with the year value equal to the current year"); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
// Fetch all properties whose names match the specified regex | |
Pattern pattern = Pattern.compile("^author|company|(.+date.*)$", Pattern.CASE_INSENSITIVE); | |
properties = metadata.findProperties(new ReadMetadataFromPDFUsingJava().new RegexSpecification(pattern)); | |
System.out.println(String.format("All properties whose names match the following regex: %s", pattern.pattern())); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
} | |
} | |
// Define your own specifications to filter metadata properties | |
public class YearMatchSpecification extends Specification { | |
public YearMatchSpecification(int year) { | |
setValue(year); | |
} | |
public final int getValue() { | |
return auto_Value; | |
} | |
private void setValue(int value) { | |
auto_Value = value; | |
} | |
private int auto_Value; | |
public boolean isSatisfiedBy(MetadataProperty candidate) { | |
Date date = candidate.getValue().toClass(Date.class); | |
if (date != null) { | |
Calendar calendar = Calendar.getInstance(); | |
calendar.setTime(date); | |
return getValue() == calendar.get(Calendar.YEAR); | |
} | |
return false; | |
} | |
} | |
public class RegexSpecification extends Specification { | |
private Pattern pattern; | |
public RegexSpecification(Pattern pattern) { | |
this.pattern = pattern; | |
} | |
@Override | |
public boolean isSatisfiedBy(MetadataProperty metadataProperty) { | |
Matcher matcher = pattern.matcher(metadataProperty.getName()); | |
return matcher.find(); | |
} | |
} | |
} |
باختصار، قدمت هذه المقالة دليلاً تفصيليًا حول كيفية الحصول على البيانات الوصفية لملف PDF في Java. باستخدام مكتبة البيانات التعريفية، يمكن للمطورين استرداد المعلومات المهمة بشكل فعال مثل عناوين المستندات وتفاصيل المؤلف وتواريخ الإنشاء والتعديل والكلمات الرئيسية من مستندات PDF. إن إتقان تقنيات استخراج البيانات الوصفية في Java يمكّن المطورين من إنشاء تطبيقات قوية لإدارة المستندات وتحليل البيانات والأتمتة. نحن نشجعك على تجربة ملفات PDF المتنوعة واستكشاف خصائص البيانات التعريفية الإضافية لتعزيز إمكانيات استخراج البيانات التعريفية في تطبيقات Java بشكل أكبر.
في محادثة سابقة، قدمنا برنامجًا تعليميًا مفصلاً حول استخراج البيانات الوصفية من ملفات PPTX باستخدام Java. للحصول على فهم أعمق لهذا الموضوع، نقترح الرجوع إلى دليلنا الشامل حول كيفية قراءة البيانات التعريفية من PPTX باستخدام Java.