انسخ وحدات ماكرو Word في Java باستخدام Aspose.Words

شهر آخر ، إصدار آخر غني بالميزات! تم طرح Aspose.Words for Java 19.12 مع مجموعة من الميزات المفيدة والتحسينات وإصلاحات الأخطاء. باستخدام أحدث إصدار ، ستتمكن من نسخ وحدات ماكرو Word من مستند إلى آخر عن طريق نسخ وحدة VBA أو مشروع VBA في Java. علاوة على ذلك ، قمنا بإضافة دعم PDF 1.7 Standard لتحويل Word إلى PDF. أيضًا ، أحدث إصدار من Aspose.Words for Java قادر على مسح الخطوط المثبتة من قبل المستخدم في Windows 10 لمصدر الخط. لذلك دعنا نتصفح هذه الميزات المفيدة بمزيد من التفصيل.

انسخ وحدات ماكرو VBA من مستند Word واحد إلى مستند آخر في Java

تتم كتابة وحدات الماكرو في مستند Word في VBA (Visual Basic للتطبيقات) لأتمتة المهام المستخدمة بشكل متكرر. تحتوي وحدات ماكرو MS Word على مجموعة من عبارات التعليمات البرمجية التي يتم تنفيذها عند النقر فوق زر معين في شريط الأدوات أو الضغط على مجموعة من المفاتيح.

في الإصدار السابق من Aspose.Words لجافا ، قدمنا ميزة إضافة وحدات ماكرو إلى مشروع VBA أو وحدات VBA النمطية في مستندات Word. ومع ذلك ، قد تكون هناك حالة عندما تحتاج إلى استنساخ وحدات VBA النمطية أو مشروع VBA بأكمله لنسخ وحدات ماكرو Word من مستند إلى آخر برمجيًا. من أجل جعل ذلك ممكنًا ، أضفنا طريقة deepClone() إلى فئات VABModule و VBAProject لنسخ وحدات ماكرو Word من وحدة نمطية أو مشروع VBA معين.

دعنا الآن نتحقق من كيفية نسخ وحدات ماكرو Word من مستند إلى آخر في Java باستخدام Aspose.Words for Java.

وحدة الاستنساخ VBA

يوضح نموذج التعليمات البرمجية Java التالي كيفية نسخ وحدات الماكرو عن طريق استنساخ وحدة نمطية VBA معينة في مستند Word.

Document doc = new Document(dataDir + "test.docm");
      VbaProject project = doc.getVbaProject();

      Document destDoc = new Document();

      destDoc.setVbaProject(new VbaProject());

      // استنساخ وحدة واحدة.
      VbaModule copyModule = doc.getVbaProject().getModules().get("Module1").deepClone();
      destDoc.getVbaProject().getModules().add(copyModule);

      destDoc.save(dataDir + "output.docm");

مشروع استنساخ VBA

يوضح نموذج التعليمات البرمجية Java التالي كيفية نسخ وحدات الماكرو عن طريق استنساخ مشروع VBA كامل في مستند Word.

Document doc = new Document(dataDir + "test.docm");
VbaProject project = doc.getVbaProject();

Document destDoc = new Document();

// استنساخ المشروع بأكمله.
destDoc.setVbaProject(doc.getVbaProject().deepClone());

destDoc.save(dataDir + "output.docm");

تحويل Word إلى PDF 1.7 قياسي في جافا

قد يتوافق مستند PDF مع معايير أو إصدارات مختلفة من مواصفات PDF. كان PDF 1.7 هو الإصدار السادس لمواصفات PDF وقد اشتمل على بعض التقنيات الخاصة التي تم تحديدها بواسطة Adobe فقط. يدعم Aspose.Words for Java بالفعل تحويل Word إلى PDF ، ومع ذلك ، قمنا بتوسيع هذا الدعم ويمكنك الآن تحويل مستند Word إلى PDF 1.7. لهذا ، أضفنا خيار PDF17 إلى تعداد PdfCompliance.

يوضح نموذج كود Java التالي كيفية تحويل Word إلى PDF عن طريق تحديد PdfCompliance.

// للحصول على أمثلة وملفات بيانات كاملة ، يرجى الانتقال إلى // https://github.com/aspose-words/Aspose.Words-for-Java
// المسار إلى دليل المستندات.
Document originalDoc = new Document(dataDir + "Document.docx");

// توفير التوافق مع PDFSaveOption إلى PDF17
// أو مجرد تحويل بدون SaveOptions
PdfSaveOptions pso = new PdfSaveOptions();
pso.setCompliance(PdfCompliance.PDF_17);

originalDoc.save(dataDir + "Output.pdf", pso);

استخدام الخطوط المثبتة من قبل المستخدم لـ SystemFontSource على نظام التشغيل Windows 10

في الإصدارات السابقة من Aspose.Words for Java ، استخدمت واجهة برمجة التطبيقات لفحص الخطوط المثبتة على النظام فقط لـ SystemFontSource. لم يكن هذا الأسلوب مناسبًا لنظام التشغيل Windows 10 حيث يمكن تثبيت الخطوط إما في مجلد النظام “٪ windir٪ \ Fonts” لجميع المستخدمين أو في مجلد المستخدم “٪ userprofile٪ \ AppData \ Local \ Microsoft \ Windows \ Fonts “للمستخدم الحالي. لقد قمنا بتحسين هذه الميزة والآن تمتلك Aspose.Words for Java القدرة على مسح الخطوط المثبتة من قبل المستخدم أيضًا.

خيار بحث واستبدال جديد {#Aspose.Words for Java19.12ReleaseNotes-AddedanewFindReplaceOptions.UseLegacyOrderoption}

يوفر Aspose.Words for Java خيار بحث واستبدال لاستبدال الكلمات أو العبارات المرغوبة في مستندات Word. في الإصدارات السابقة من API ، تستخدم ميزة البحث / الاستبدال لتحليل مربعات النص بشكل منفصل عن محتوى المستند. تم تصميم هذا السلوك وفقًا لسلوك MS Word ، ومع ذلك ، قد تكون هناك حالة قد تحتاج فيها إلى البحث عن المحتوى واستبداله بالتسلسل بما في ذلك النص في مربعات النص. لمثل هذا السيناريو ، قدمنا خيارًا جديدًا في فئة FindReplaceOptions مثل UseLegacyOrder. يوضح نموذج كود Java التالي كيفية استخدام هذا الخيار عند البحث عن نص واستبداله في مستند Word.

public static void FineReplaceUsingLegacyOrder(String dataDir) throws Exception
{
    // افتح المستند.
    Document doc = new Document(dataDir + "source.docx");
    FindReplaceOptions options = new FindReplaceOptions();
    options.setReplacingCallback(new ReplacingCallback());
    options.setUseLegacyOrder(true);

    doc.getRange().replace(Pattern.compile("\\[(.*?)\\]"), "", options);

    dataDir = dataDir + "usingLegacyOrder_out.doc";
    doc.save(dataDir);
}

private static class ReplacingCallback implements IReplacingCallback
{
    public int replacing(ReplacingArgs args) {
    	System.out.print(args.getMatch().group());
        return ReplaceAction.REPLACE;
    }
}

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