نحن سعداء بالإعلان عن إصدار GroupDocs.Parser for Java 26.10، المتاح اعتبارًا من أكتوبر 2026. هذا إصدار صيانة يركز على الدقة: البحث النصي يعمل مرة أخرى لجميع التحميلات الزائدة، استخراج بنية المستند يدعم المزيد من مستندات Word، تقارير معلومات الملف تعكس التشفير بدقة، وإحداثيات صور PDF الآن تتطابق مع باقي واجهة برمجة التطبيقات. الآن يتم التعامل مع الترخيص عبر GroupDocs.Foundation، وتم تحديث مكوّنات Aspose المدمجة.
ما الجديد في هذا الإصدار
| المفتاح | الملخص | الفئة |
|---|---|---|
| PARSERJAVA-491 | Parser.search لم يعد يرمي NullPointerException عندما لا يكون البحث مقيدًا بصفحة |
إصلاح |
| PARSERJAVA-513 | Parser.getStructure() يعمل مع مستندات Word التي تحتوي على جداول في الرأس أو التذييل ويعيد XML منسقًا بشكل صحيح |
إصلاح |
| — | Parser.getFileInfo(String) يُبلغ عن ملفات DOCX وXLSX وPPTX المحمية بكلمة مرور على أنها مشفرة |
إصلاح |
| — | FileInfo.isEncrypted() يكون true فقط للمستندات PDF المشفرة |
إصلاح |
| — | مستطيلات صور PDF تُقاس من أعلى الصفحة، مثل باقي مناطق الصفحة | إصلاح |
| PARSERJAVA-154 | يتم تنفيذ الترخيص بواسطة GroupDocs.Foundation، النواة المشتركة للترخيص بين منتجات GroupDocs | تحديث |
| PARSERJAVA-512 | تم تحديث مكوّنات Aspose المدمجة | تحديث |
| PARSERJAVA-509 | POM المنشور: اسم المنتج، وصف قصير، <url>، <organization> و<scm> |
تحديث |
تغييرات السلوك التي يجب التحقق منها قبل الترقية
تؤثر تغييران على ما يلاحظه الكود الحالي:
- إحداثيات صور PDF. الآن يتم قياس الإحداثي العلوي لمستطيلات صور PDF من أعلى الصفحة. إذا كان كودك يحولها من أسفل الصفحة، أزل هذا التحويل.
- XML بنية مستندات Word. الكلمات التي يفصلها حرف فاصل Word أصبحت الآن مفصولة بمسافة في XML البنية.
الإصلاحات
البحث النصي غير المقيد بصفحة
منذ الإصدار 25.5، كل استدعاء لـ Parser.search لم يكن مقيدًا بصفحة كان يفشل بـ NullPointerException. كان ذلك يؤثر على التحميل الزائد search(String keyword)، وsearch(String keyword, SearchOptions options) مع تعيين searchByPages إلى false (الإعداد الافتراضي)، والبحث الذي يطلب تمييزات. لم تتأثر عمليات البحث التي تم تعيين searchByPages فيها إلى true.
في 26.10 تعود هذه الاستدعاءات لإرجاع نتائج البحث مرة أخرى:
try (Parser parser = new Parser("sample.pdf")) {
Iterable<SearchResult> results = parser.search("lorem");
if (results == null) {
return; // Search isn't supported for this document
}
for (SearchResult result : results) {
System.out.println(result.getPosition() + ": " + result.getText());
}
}
بنية مستندات Word
Parser.getStructure() كان يرمي استثناءً عند معالجة مستندات معالجة النصوص التي تحتوي على جدول في الرأس أو التذييل، وكان قد يُعيد XML لا يمكن تحليله عندما يحتوي نص المستند على أحرف تحكم. تم إصلاح كلا المشكلتين:
- الجداول في الرؤوس والتذييلات تُوصف بشبكتها المنطقية: فهرس الصف في الجدول، فهرس الخلية في الصف، والامتدادات بقيمة 1.
- أحرف فاصل Word (نهاية الخلية، علامة تبويب عمودية، فاصل صفحة، فاصل عمود) تتحول إلى مسافة، لذا لا تتلاصق الكلمات التي تفصلها.
- الأحرف التي لا يسمح بها XML 1.0 تُحذف.
- قيم السمات تُهرب بنفس طريقة النص.
معلومات الملف للمستندات المحمية بكلمة مرور
التحميل الزائد Parser.getFileInfo(String filePath) لم يتعرف على ملفات DOCX وXLSX وPPTX المحمية بكلمة مرور: كان يُعيد حجمًا قدره 0 وisEncrypted() يساوي false للـ DOCX وXLSX، ولا نوع ملف للـ PPTX. الآن يُعيد النتيجة نفسها كما في التحميل الزائد InputStream: الحجم الفعلي للملف، isEncrypted() يساوي true وFileType.Unknown (لا يمكن قراءة تنسيق المستند المشفر دون كلمة المرور).
هذا يجعل من السهل اكتشاف ملف محمي وفتحه باستخدام كلمة مرور:
FileInfo info = Parser.getFileInfo("protected.docx");
if (info.isEncrypted()) {
LoadOptions options = new LoadOptions("password");
try (Parser parser = new Parser("protected.docx", options);
TextReader reader = parser.getText()) {
System.out.println(reader.readToEnd());
}
}
}
تشفير مستندات PDF
FileInfo.isEncrypted() كان يُعيد true لكل مستند PDF. الآن يُعيد true فقط للمستندات PDF التي هي فعليًا مشفرة.
موضع صور PDF
كانت مستطيلات صور PDF التي تُرجعها Parser.getImages() تُقاس من أسفل الصفحة، بينما تُقاس النصوص والجداول ومناطق الصفحة الأخرى من الأعلى. الآن تستخدم الصور نفس الإحداثيات المستندة إلى الأعلى، لذا getImages(PageAreaOptions) يجد الصور داخل المستطيل المحدد:
try (Parser parser = new Parser("images.pdf")) {
// Images in the top-left 400 x 400 points of each page
PageAreaOptions options = new PageAreaOptions(new Rectangle(new Point(0, 0), new Size(400, 400)));
for (PageImageArea image : parser.getImages(options)) {
System.out.println(image.getPage().getIndex() + ": " + image.getRectangle());
}
}
التحديثات
الترخيص عبر GroupDocs.Foundation
التحقق من الترخيص، الترخيص القائم على الاستهلاك، وترخيص مكوّنات Aspose المدمجة يتم الآن عبر GroupDocs.Foundation، نفس نواة الترخيص المستخدمة في منتجات GroupDocs الأخرى. لم يتغير API الترخيص: License.setLicense، Metered.setMeteredKey، Metered.getConsumptionQuantity وMetered.getConsumptionCredit تُستدعى كما كانت سابقًا.
License license = new License();
license.setLicense("GroupDocs.Parser.Java.lic");
try (Parser parser = new Parser("document.docx");
TextReader reader = parser.getText()) {
System.out.println(reader.readToEnd());
}
مكوّنات Aspose المدمجة
| المكوّن | 26.9 | 26.10 |
|---|---|---|
| Aspose.Cells | 26.3 | 26.9 |
| Aspose.Email | 26.1 | 26.8 |
| Aspose.PDF | 26.2 | 26.8.1 |
| Aspose.Slides | 26.2 | 26.9 |
| Aspose.Words | 26.3 | 26.8 |
| Aspose.BarCode | 26.4 | 26.6 |
| Aspose.Imaging | 25.12 | 25.12 |
| Aspose.ZIP | 25.10 | 25.10 |
| Aspose.Note | 23.3 | 23.3 |
المنتج لا يزال يعمل على Java 8.
بيانات التعريف للقطعة المنشورة
الـ POM المنشور الآن يحمل اسم GroupDocs.Parser for Java، وصفًا قصيرًا لما تستخرجه المكتبة وأي صيغ تقرأها، صفحة المنتج كـ <url>، وتعلن عن <organization> و<scm>. هذه هي المعلومات التي تعرضها فهارس الاعتماد مثل MVNRepository. لم يتغير أي كود أو سلوك أو API.
كيفية الحصول على التحديث
Maven
أضف مستودع GroupDocs والاعتماد إلى ملف pom.xml الخاص بك:
<repositories>
<repository>
<id>groupdocs-artifacts-repository</id>
<name>GroupDocs Artifacts Repository</name>
<url>https://releases.groupdocs.com/java/repo/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>26.10</version>
</dependency>
</dependencies>
تنزيل مباشر
قم بتنزيل ملف JAR من صفحة تنزيل GroupDocs.Parser for Java 26.10.