إدارة خصائص العرض التقديمي في Java

خصائص المستند في PowerPoint

يتيح Microsoft PowerPoint 2007 إدارة خصائص المستند لملفات العرض. كل ما عليك هو النقر على أيقونة Office ثم اختيار القائمة Prepare | Properties | Advanced Properties كما هو موضح أدناه:

تحديد عنصر قائمة الخصائص المتقدمة **
todo:image_alt_text

بعد تحديد عنصر القائمة Advanced Properties، سيظهر حوار يتيح لك إدارة خصائص المستند لملف PowerPoint كما هو موضح في الشكل أدناه:

حوار الخصائص **
todo:image_alt_text

في حوار الخصائص أعلاه، يمكنك ملاحظة وجود العديد من علامات التبويب مثل General، Summary، Statistics، Contents و Custom. تتيح كل هذه العلامات تكوين أنواع مختلفة من المعلومات المتعلقة بملفات PowerPoint. تُستخدم علامة Custom لإدارة الخصائص المخصصة لملفات PowerPoint.

العمل مع خصائص المستند باستخدام Aspose.Slides for Java

كما أوضحنا سابقًا أن Aspose.Slides for Java يدعم نوعين من خصائص المستند، وهما الخصائص المضمنة و المخصصة. وبالتالي، يمكن للمطورين الوصول إلى كلا النوعين باستخدام واجهة برمجة تطبيقات Aspose.Slides for Java. توفر Aspose.Slides for Java فئة IDocumentProperties التي تمثّل خصائص المستند المرتبطة بملف العرض من خلال الخاصية Presentation.DocumentProperties.

يمكن للمطورين استخدام الخاصية IDocumentProperties التي يوفرها كائن Presentation للوصول إلى خصائص المستند لملفات العرض كما هو موضح أدناه:

الوصول إلى الخصائص المضمنة

تتضمن هذه الخصائص كما تظهر في كائن IDocumentProperties ما يلي: Creator (المؤلف)، Description، Keywords، Created (تاريخ الإنشاء)، Modified (تاريخ التعديل)، Printed (تاريخ الطباعة الأخير)، LastModifiedBy، Keywords، SharedDoc (هل تم مشاركة المستند بين منتجين مختلفين؟)، PresentationFormat، Subject و Title

// إنشاء كائن من فئة Presentation الذي يمثل العرض التقديمي
Presentation pres = new Presentation("Presentation.pptx");
try {
    // إنشاء مرجع إلى كائن IDocumentProperties المرتبط بالعرض التقديمي
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // عرض الخصائص المدمجة
    System.out.println("Category : " + dp.getCategory());
    System.out.println("Current Status : " + dp.getContentStatus());
    System.out.println("Creation Date : " + dp.getCreatedTime());
    System.out.println("Author : " + dp.getAuthor());
    System.out.println("Description : " + dp.getComments());
    System.out.println("KeyWords : " + dp.getKeywords());
    System.out.println("Last Modified By : " + dp.getLastSavedBy());
    System.out.println("Supervisor : " + dp.getManager());
    System.out.println("Modified Date : " + dp.getLastSavedTime());
    System.out.println("Presentation Format : " + dp.getPresentationFormat());
    System.out.println("Last Print Date : " + dp.getLastPrinted());
    System.out.println("Is Shared between producers : " + dp.getSharedDoc());
    System.out.println("Subject : " + dp.getSubject());
    System.out.println("Title : " + dp.getTitle());
} finally {
    if (pres != null) pres.dispose();
}

تعديل الخصائص المضمنة

تعديل الخصائص المضمنة لملفات العرض سهل مثل الوصول إليها. يمكنك ببساطة تعيين قيمة نصية لأي خاصية مرغوبة وسيتم تعديل قيمة الخاصية. في المثال التالي، عرضنا كيف يمكن تعديل خصائص المستند المضمنة للعرض باستخدام Aspose.Slides for Java.

Presentation pres = new Presentation("Presentation.pptx");
try {
    // إنشاء مرجع إلى كائن IDocumentProperties المرتبط بالعرض التقديمي
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // تعيين الخصائص المدمجة
    dp.setAuthor("Aspose.Slides for Java");
    dp.setTitle("Modifying Presentation Properties");
    dp.setSubject("Aspose Subject");
    dp.setComments("Aspose Description");
    dp.setManager("Aspose Manager");
    
    // حفظ العرض التقديمي إلى ملف
    pres.save("DocProps.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

يُظهر هذا المثال الخصائص المضمنة للعرض بعد التعديل كما هو موضح أدناه:

خصائص المستند المضمنة بعد التعديل **
todo:image_alt_text

إضافة خصائص مستند مخصصة

كما يسمح Aspose.Slides for Java للمطورين بإضافة القيم المخصصة لخصائص المستند للعرض. يُظهر المثال أدناه كيفية تعيين الخصائص المخصصة لعرض ما.

Presentation pres = new Presentation();
try {
    // الحصول على خصائص المستند
    IDocumentProperties dProps = pres.getDocumentProperties();
    
    // إضافة خصائص مخصصة
    dProps.set_Item("New Custom", 12);
    dProps.set_Item("My Name", "Mudassir");
    dProps.set_Item("Custom", 124);
    
    // الحصول على اسم الخاصية في فهرس معين
    String getPropertyName = dProps.getCustomPropertyName(2);
    
    // إزالة الخاصية المحددة
    dProps.removeCustomProperty(getPropertyName);
    
    // حفظ العرض التقديمي
    pres.save("CustomDemo.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
تمت إضافة خصائص المستند المخصصة **
todo:image_alt_text

الوصول إلى الخصائص المخصصة وتعديلها

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

Presentation pres = new Presentation("Presentation.pptx");
try {
    // إنشاء مرجع إلى كائن DocumentProperties المرتبط بالعرض التقديمي
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // الوصول إلى الخصائص المخصصة وتعديلها
    for (int i = 0; i < dp.getCountOfCustomProperties(); i++) {
        // عرض أسماء وقيم الخصائص المخصصة
        System.out.println("Custom Property Name : " + dp.getCustomPropertyName(i));
        System.out.println("Custom Property Value : " + dp.get_Item(dp.getCustomPropertyName(i)));
    
        // تعديل قيم الخصائص المخصصة
        dp.set_Item(dp.getCustomPropertyName(i), "New Value " + (i + 1));
    }
    
    // حفظ العرض التقديمي إلى ملف
    pres.save("CustomDemoModified.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

يُظهر هذا المثال تعديل الخصائص المخصصة للعرض PPTX . تظهر الأشكال التالية الخصائص المخصصة للعرض قبل وبعد التعديل:

الخصائص المخصصة قبل التعديل **
todo:image_alt_text
الخصائص المخصصة بعد التعديل **
todo:image_alt_text

خصائص المستند المتقدمة

طُرِّحت الطريقتان الجديدتان ReadDocumentProperties و UpdateDocumentProperties على واجهة IPresentationInfo. توفران وصولًا سريعًا إلى خصائص المستند وتسمحان بتغيير وتحديث الخصائص دون تحميل العرض بالكامل.

يمكن تنفيذ السيناريو النموذجي لتحميل الخصائص، تعديل قيمة ما، ثم تحديث المستند بالطريقة التالية:

// قراءة معلومات العرض التقديمي
IPresentationInfo info = PresentationFactory.getInstance().getPresentationInfo("presentation.pptx");

// الحصول على الخصائص الحالية
IDocumentProperties props = info.readDocumentProperties();

// تعيين القيم الجديدة لحقلي المؤلف والعنوان
props.setAuthor("New Author");
props.setTitle("New Title");

// تحديث العرض التقديمي بالقيم الجديدة
info.updateDocumentProperties(props);
info.writeBindedPresentation("presentation.pptx");

هناك طريقة أخرى لاستخدام خصائص عرض معين كقالب لتحديث الخصائص في عروض أخرى:

IPresentationInfo info = PresentationFactory.getInstance().getPresentationInfo("template.pptx");
DocumentProperties template = (DocumentProperties) info.readDocumentProperties();

template.setAuthor("Template Author");
template.setTitle("Template Title");
template.setCategory("Template Category");
template.setKeywords("Keyword1, Keyword2, Keyword3");
template.setCompany("Our Company");
template.setComments("Created from template");
template.setContentType("Template Content");
template.setSubject("Template Subject");

updateByTemplate("doc1.pptx", template);
updateByTemplate("doc2.odp", template);
updateByTemplate("doc3.ppt", template);
private static void updateByTemplate(String path, IDocumentProperties template) 
{
    IPresentationInfo toUpdate = PresentationFactory.getInstance().getPresentationInfo(path);
    toUpdate.updateDocumentProperties(template);
    toUpdate.writeBindedPresentation(path);
}

يمكن إنشاء قالب جديد من الصفر ثم استخدامه لتحديث عدة عروض:

DocumentProperties template = new DocumentProperties();\

template.setAuthor("Template Author");
template.setTitle("Template Title");
template.setCategory("Template Category");
template.setKeywords("Keyword1, Keyword2, Keyword3");
template.setCompany("Our Company");
template.setComments("Created from template");
template.setContentType("Template Content");
template.setSubject("Template Subject");

updateByTemplate("doc1.pptx", template);
updateByTemplate("doc2.odp", template);
updateByTemplate("doc3.ppt", template);
private static void updateByTemplate(String path, IDocumentProperties template) 
{
    IPresentationInfo toUpdate = PresentationFactory.getInstance().getPresentationInfo(path);
    toUpdate.updateDocumentProperties(template);
    toUpdate.writeBindedPresentation(path);
}

تعيين لغة التدقيق

توفر Aspose.Slides الخاصية LanguageId (المعروضة من فئة PortionFormat) لتتيح لك تعيين لغة التدقيق لمستند PowerPoint. لغة التدقيق هي اللغة التي يتم فحص الإملاء والقواعد النحوية فيها في PowerPoint.

يعرض هذا الكود Java كيفية تعيين لغة التدقيق لبرنامج PowerPoint: xxx لماذا خاصية LanguageId مفقودة من فئة Java PortionFormat؟

Presentation pres = new Presentation(pptxFileName);
try {
    AutoShape autoShape = (AutoShape)pres.getSlides().get_Item(0).getShapes().get_Item(0);

    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
    paragraph.getPortions().clear();

    Portion newPortion = new Portion();

    IFontData font = new FontData("SimSun");
    IPortionFormat portionFormat = newPortion.getPortionFormat();
    portionFormat.setComplexScriptFont(font);
    portionFormat.setEastAsianFont(font);
    portionFormat.setLatinFont(font);

    portionFormat.setLanguageId("zh-CN"); // تعيين معرف لغة التدقيق

    newPortion.setText("1。");
    paragraph.getPortions().add(newPortion);
} finally {
    if (pres != null) pres.dispose();
}

تعيين اللغة الافتراضية

يعرض هذا الكود Java كيفية تعيين اللغة الافتراضية لعرض PowerPoint كامل:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setDefaultTextLanguage("en-US");

Presentation pres = new Presentation(loadOptions);
try {
    // يضيف شكل مستطيل جديد مع نص
    IAutoShape shp = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 50);
    shp.getTextFrame().setText("New Text");

    // يتحقق من لغة الجزء الأول
    System.out.println(shp.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat().getLanguageId());
} finally {
    if (pres != null) pres.dispose();
}

مثال حي

جرب تطبيق Aspose.Slides Metadata على الويب لمعرفة كيفية التعامل مع خصائص المستند عبر واجهة Aspose.Slides API:

View & Edit PowerPoint Metadata

*الأسئلة الشائعة

كيف يمكنني إزالة خاصية مدمجة من عرض تقديمي؟

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

ماذا يحدث إذا أضفت خاصية مخصصة موجودة مسبقًا؟

في حال إضافة خاصية مخصصة موجودة بالفعل، سيتم استبدال قيمتها الحالية بالقيمة الجديدة. لا تحتاج إلى إزالة الخاصية أو التحقق منها مسبقًا، حيث يقوم Aspose.Slides بتحديث قيمة الخاصية تلقائيًا.

هل يمكنني الوصول إلى خصائص العرض دون تحميله بالكامل؟

نعم، يمكن الوصول إلى خصائص العرض دون تحميله بالكامل باستخدام طريقة getPresentationInfo من فئة PresentationFactory. بعد ذلك، استخدم طريقة readDocumentProperties المقدمة من واجهة IPresentationInfo لقراءة الخصائص بكفاءة، مما يوفر الذاكرة ويحسن الأداء.