كيفية إنشاء دمج بريد تلقائي مع الصور في برنامج LibreOffice Writer

يمكنك إنشاء دمج مراسلات مثالي في LibreOffice Writer للأسماء والعناوين والتواريخ وغيرها من حقول النصوص، ثم تكتشف أنه بمجرد أن يحتاج كل مستلم إلى صورة أو توقيع أو صورة منتج أو رمز QR أو شارة مختلفة، يصبح سير العمل البسيط غير عملي. والسبب مهم: حقول دمج المراسلات الموثقة في Writer هي حقول قاعدة بيانات تُستخدم كعناصر نائبة للنصوص. يدعم LibreOffice أيضًا الرسومات المضمنة والمرتبطة، لكن دليل المساعدة الحالي لا يوثق "حقل صورة دمج المراسلات" الأصلي الذي يستبدل تلقائيًا صورة من عمود مسار الملف لكل سجل.

هذا يترك خيارين عمليين. إذا كانت جميع المستندات المدمجة تستخدم نفس الشعار أو صورة الخلفية، فاستخدم دمج المراسلات العادي في برنامج Writer وثبّت تلك الصورة في القالب. أما إذا كان لا بد من تغيير الصورة لكل صف، فالطريقة الأكثر تحكمًا هي الاحتفاظ ببيانات النص والصورة في برنامج Calc، وحجز كائن رسومي مُسمى في قالب Writer، وأتمتة عملية الدمج باستخدام ماكرو LibreOffice Basic. يستخدم هذا الدليل الطريقة الثانية.

تتوافق هذه التعليمات مع وثائق LibreOffice 26.2 المتوفرة في عام 2026. قد تختلف القوائم قليلاً في الإصدارات الأخرى أو على نظام macOS. يشير دليل LibreOffice Writer الحالي إلى إمكانية تضمين الصور أو ربطها، بينما تتيح واجهة برمجة تطبيقات UNO الوصول إلى كائنات رسومية في Writer، XTextGraphicObjectsSupplierكما تسمح بأتمتة تعيين صورة من عنوان URL خارجي. تُمكّن هذه الميزات من إنشاء سير عمل للصور لكل سجل على حدة، على الرغم من أن معالج دمج البريد القياسي لا يوفرها كحقل صورة مخصص.

اختر سير العمل المناسب قبل البدء

متطلباتأفضل نهجالمقايضة الرئيسية
نفس الشعار أو الصورة على كل حرفدمج البريد في برنامج Standard Writerبسيط، لكن الصورة لا تتغير أبدًا بالتسجيل
صورة مختلفة لكل مستلمقالب Writer + Calc + أتمتة Basic/UNOيتطلب الأمر مزيدًا من الإعداد، لكن التحكم في الصورة يمكن التنبؤ به
تخزن قاعدة البيانات الصورة نفسها بدلاً من مسارهاسير عمل قاعدة البيانات/النموذج أو رمز UNO مخصصأفضل لقواعد البيانات المُدارة، لكنها أثقل من عملية الدمج القائمة على جداول البيانات.
مئات أو آلاف الوثائق في مجموعات غير مراقبةماكرو أو نص برمجي خارجي للعبة أونويتطلب ذلك الاختبار والتسجيل والالتزام بمسارات الملفات

إذا كانت حالة استخدامك تقتصر على شعار شركة ثابت، فتوقف هنا واستخدم سير عمل نموذج الرسالة المعتاد في LibreOffice . أما بقية هذه المقالة فهي مخصصة للصور المتغيرة.

الخطوة 1: تجهيز مصدر بيانات Calc نظيف

أنشئ ورقة عمل حسابية تحتوي على صف عناوين واحد وسجل واحد في كل صف. احتفظ بمراجع الصور في عمود منفصل. يُعدّ التنسيق التالي عمليًا CustomerID: FirstName، ، LastName، Email، ImagePath، و OutputName.

ورقة عمل LibreOffice Calc تحتوي على حقول العميل ومسارات الصور وأسماء الإخراج لعملية دمج تلقائية في برنامج Writer.
احتفظ بمسار صورة واحد واسم ملف إخراج واحد لكل صف حتى تتمكن الأتمتة من حل كل سجل دون تخمين.

استخدم المسارات المطلقة أثناء بناء واختبار عملية الدمج. صحيح أنها أقل قابلية للنقل، لكنها تزيل الغموض. على سبيل المثال، يسهل تشخيص المشكلة C:\MailMerge\Imageslice.jpgفي نظامي التشغيل ويندوز أو /home/user/mailmerge/images/alice.jpgلينكس مقارنةً بالمسارات النسبية التي يتغير دليلها الأساسي تبعًا لكيفية فتح المستند.

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

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

الخطوة الثانية: التأكد من أن الكاتب يستطيع قراءة السجلات

يستخدم دمج المراسلات القياسي في برنامج Writer مصدر بيانات مُسجّل. يمكنك استخدام معالج دمج المراسلات، أو مصدر بيانات العناوين، أو مستعرض مصادر البيانات. تُتيح وثائق المساعدة الحالية لبرنامج LibreOffice، والموجودة في قسم الأدوات > معالج دمج المراسلات ، إمكانية إدراج حقول قاعدة البيانات من خلال إدراج > حقل > المزيد من الحقول > قاعدة البيانات . راجع مرجع حقول قاعدة البيانات الرسمي .

برنامج LibreOffice Writer يعرض مصدر بيانات يحتوي على صفوف العملاء وحقول دمج البريد العادية في رسالة.
استخدم عرض مصدر البيانات الخاص بـ Writer للتحقق من أن الأعمدة والسجلات المتوقعة مرئية قبل إضافة أتمتة الصور.

يُعد هذا الفحص مفيدًا حتى لو كان الماكرو النهائي يقرأ جدول البيانات مباشرةً. فهو يكشف المشاكل الشائعة مبكرًا: مثل ورقة العمل الخاطئة، أو أسماء العناوين غير المتوقعة، أو السجلات الفارغة، أو جدول البيانات الذي تم نقله بعد التسجيل.

لإجراء دمج مراسلات نصية عادية، يمكنك سحب عنوان عمود إلى المستند أو إدراج حقل دمج مراسلات من علامة تبويب قاعدة البيانات. يؤكد دليل Writer الرسمي أن هذه الحقول تُستبدل بمحتوى قاعدة البيانات عند تشغيل عملية الدمج. أما بالنسبة للصورة المتغيرة، فلا تفترض أن سحبها ImagePathإلى الصفحة سيحول المسار إلى صورة. ستبقى بيانات ما لم يقم البرنامج بتفسيرها وتحديث كائن رسومي.

الخطوة 3: أنشئ قالب الكاتب وقم بتسمية العنصر النائب للصورة

أنشئ تخطيط الرسالة أو الشهادة أو الشارة أو التقرير في برنامج Writer. بالنسبة للقيم النصية، استخدم إما حقول دمج البريد العادية أو استخدم رموزًا مميزة مثل {FirstName}و {LastName}و {CustomerID}إذا كان الماكرو الخاص بك سيستبدلها تلقائيًا.

بعد ذلك، أدرج صورة نموذجية في المكان الذي يجب أن تظهر فيه الصورة المتغيرة. حدد الحجم المطلوب، والتفاف الصورة، ونقطة التثبيت قبل أتمتة العملية. يوثق LibreOffice تغيير حجم الصورة، وتحديد موضعها، وتثبيتها، والتفافها، وسلوك الصور المرتبطة في فصل "الصور والرسومات" الحالي من برنامج Writer 26.2 .

قالب LibreOffice Writer مع حقول نصية مدمجة وعنصر نائب رسومي محدد باسم MergeImage.
احجز موضع الصورة النهائي في القالب وأعطِ الكائن الرسومي اسمًا ثابتًا مثل MergeImage.

أعطِ الكائن الرسومي اسمًا ثابتًا، مثل MergeImage. قد يختلف مربع حوار الخصائص باختلاف الإصدار، لذا إذا لم تكن متأكدًا من الكائن الذي يعرضه برنامج Writer، فاستخدم أدوات > أدوات التطوير . تستطيع أدوات التطوير في LibreOffice فحص الكائنات الرسومية وخصائصها وأساليبها وواجهاتها في المستند الحالي. وهذا يجعلها أداة تشخيصية أكثر أمانًا من تخمين اسم الكائن الداخلي.

للحصول على تصميم متناسق، استخدم نفس نسبة العرض إلى الارتفاع لجميع الصور المصدرية، أو حدد طريقة قصها. يمكن لبرنامج Writer تغيير حجم الصورة لتناسب أبعاد العنصر النائب، ولكن صورة عمودية مُدرجة في إطار عريض على شكل لافتة ستبدو غير صحيحة ما لم تُعدّل تنسيق الملفات أولاً.

الخطوة الرابعة: أتمتة تصدير الصور والمستندات المتغيرة

عملية الأتمتة الرئيسية بسيطة: افتح القالب، استبدل النصوص، ابحث عن الكائن الرسومي المطلوب، حمّل ملف صورة الصف في هذا الكائن، ثم صدّر النتيجة. توفر وثائق واجهة برمجة تطبيقات UNO الخاصة بـ LibreOffice معلومات getGraphicObjects()حول الوصول إلى الرسومات المضمنة والمرتبطة، بالإضافة إلى TextGraphicObjectخدمة خصائص الرسومات. GraphicURLتم إيقاف استخدام هذه الخاصية لتخزين الكائنات بشكل عام Graphic، ولكن واجهة برمجة التطبيقات الحالية تشير بوضوح إلى أن تعيين عنوان URL خارجي يُحمّل تلك الصورة في الكائن الرسومي. هذا يُسهّل استخدام ماكرو Basic بسيط يعتمد على مسارات الملفات المحلية.

بيئة تطوير LibreOffice Basic تعرض ماكرو دمج البريد الذي يقرأ مسار الصورة ويحدث كائنًا رسوميًا من نوع Writer.
طبقة الأتمتة هي التي تحول قيمة ImagePath إلى الرسم الفعلي المعروض في كل مستند تم إنشاؤه.

المثال التالي صغير الحجم عمدًا. غيّر المسارات الثلاثة، واسم الورقة، وفهرس الأعمدة، وأسماء العناصر النائبة لتتوافق مع ملفاتك. اختبره على سجلين قبل تشغيل مجموعة كبيرة.

Sub MailMergeWithImages()
    Dim calcDoc As Object, sheet As Object, doc As Object
    Dim graphics As Object, imageObj As Object
    Dim row As Long
    Dim firstName As String, lastName As String
    Dim imagePath As String, outputName As String
    Dim sourceURL As String, templateURL As String, outputDir As String

    sourceURL = ConvertToURL("C:\MailMerge\customers.ods")
    templateURL = ConvertToURL("C:\MailMerge\LetterTemplate.odt")
    outputDir = ConvertToURL("C:\MailMerge\Output")

    calcDoc = StarDesktop.loadComponentFromURL(sourceURL, "_blank", 0, Array())
    sheet = calcDoc.Sheets.getByName("Sheet1")

    row = 1  ' row 0 contains headers
    Do While sheet.getCellByPosition(0, row).String <> ""
        firstName = sheet.getCellByPosition(1, row).String
        lastName = sheet.getCellByPosition(2, row).String
        imagePath = sheet.getCellByPosition(4, row).String
        outputName = sheet.getCellByPosition(5, row).String

        doc = StarDesktop.loadComponentFromURL(templateURL, "_blank", 0, Array())

        ReplaceAll doc, "{FirstName}", firstName
        ReplaceAll doc, "{LastName}", lastName

        graphics = doc.getGraphicObjects()
        If graphics.hasByName("MergeImage") Then
            imageObj = graphics.getByName("MergeImage")
            imageObj.GraphicURL = ConvertToURL(imagePath)
        Else
            MsgBox "Graphic object MergeImage was not found."
            doc.close(True)
            Exit Sub
        End If

        Dim args(1) As New com.sun.star.beans.PropertyValue
        args(0).Name = "FilterName"
        args(0).Value = "writer_pdf_Export"
        args(1).Name = "Overwrite"
        args(1).Value = True

        doc.storeToURL(outputDir & outputName & ".pdf", args())
        doc.close(True)
        row = row + 1
    Loop

    calcDoc.close(True)
End Sub

Sub ReplaceAll(doc As Object, findText As String, replacement As String)
    Dim d As Object
    d = doc.createReplaceDescriptor()
    d.SearchString = findText
    d.ReplaceString = replacement
    doc.replaceAll(d)
End Sub

هذا الماكرو عبارة عن نمط، وليس برنامجًا جاهزًا للاستخدام. قد تختلف سياسات أمان الماكرو وقواعد مسار نظام التشغيل وتخطيطات القوالب في إصدارات LibreOffice. من أهم مفاهيم واجهة برمجة التطبيقات (API) التي تم التحقق منها أن Writer يعرض مجموعة كائنات الرسومات الخاصة به، وأن LibreOffice يستطيع تعيين رسم من عنوان URL خارجي. بالنسبة لعمليات النشر واسعة النطاق، يُنصح بتحميل الرسم من خلال Graphicواجهة برمجة التطبيقات الحديثة بدلاً من الاعتماد على سلوك التوافق GraphicURL. المراجع الرسمية هي XTextGraphicObjectsSupplier و TextGraphicObject .

الخطوة 5: قم بتشغيل دفعة صغيرة وتحقق من النتيجة

قبل معالجة مصدر البيانات بالكامل، قم بتشغيل صفين أو ثلاثة صفوف مختلفة عمدًا: صف واحد بصيغة JPG، وصف واحد بصيغة PNG، ويفضل صورة واحدة بنسبة عرض إلى ارتفاع مختلفة. تأكد من كل ما يلي قبل تكبير الصورة:

  • اسم المستلم في المستند يطابق الصورة من نفس صف جدول البيانات.
  • لا يظهر مسار الصورة كنص حرفي في المستند النهائي.
  • اسم ملف الإخراج يطابق السجل المقصود ولا يقوم بالكتابة فوق سجل مستلم آخر.
  • تتناسب الصورة مع المساحة المحجوزة دون دفع النص إلى صفحة جديدة أو تغطية عنصر آخر.
  • يفتح ملف PDF أو ODT المُنشأ بشكل مستقل بعد إغلاق LibreOffice و Calc.

يُعدّ هذا الفحص الأخير مهمًا لأنّ الرسومات المرتبطة والرسومات المضمنة تتصرفان بشكل مختلف. يشرح دليل Writer الحالي أنّ الصورة المرتبطة تبقى مرجعًا منفصلاً للملف، بينما تُصبح الصورة المضمنة جزءًا من المستند. إذا كنت تُرسل ملفات ODT إلى جهاز آخر، فتأكد من أنّ النتيجة لا تعتمد على مسار محلي موجود فقط على الجهاز الذي أجرى عملية الدمج.

الأعطال الشائعة وأسرع الحلول

يُظهر الناتج مسار الملف بدلاً من الصورة

لقد أدرجتَ ImagePathحقل دمج بريد عاديًا، ومن المتوقع أن ينتج عن ذلك نص. احتفظ بالمسار في مصدر البيانات، ولكن دع الماكرو يُحمّله في الكائن الرسومي المُسمى.

كل سجل يحصل على نفس الصورة

لم يتم تغيير صورة القالب بين السجلات، أو أن حلقة التكرار تقرأ خلية ثابتة. سجّل رقم الصف ImagePathأثناء اختبار سجلين. إذا تغير المسار ولكن الصورة لم تتغير، فافحص اسم الكائن الرسومي باستخدام أدوات المطور.

يُشير الماكرو إلى أن برنامج MergeImage غير موجود.

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

تختفي الصور على جهاز كمبيوتر آخر

ربما قمت بحفظ مستند لا يزال يحتوي على إشارات إلى ملفات خارجية. إذا كانت قابلية النقل مهمة، فتأكد من تضمين الصورة في الملف المُخرَج، أو قم بتصديره إلى PDF بعد تحميل الصورة. يشرح دليل الصور في LibreOffice الفرق بين الرسومات المرتبطة والرسومات المُضمَّنة، وكيفية كسر الروابط لتضمين الملفات.

يؤدي دمج البريد بتنسيق HTML إلى فقدان الصور

هذا قيد موثق يُنصح بالتحقق منه قبل اختيار طريقة إرسال البريد الإلكتروني. تشير تعليمات LibreOffice إلى أنه عند استخدام تنسيق HTML للرسالة النموذجية، لا تُرسل الصور المضمنة أو المرتبطة مع البريد الإلكتروني. إذا كانت الصورة ضرورية، فاستخدم مرفق PDF أو جرّب طريقة إرسال أخرى بدلاً من افتراض أن دمج البريد بتنسيق HTML سيحفظها. راجع قسم " إنشاء رسالة نموذجية" .

متى يُنصح باستخدام خدمة دمج البريد UNO من LibreOffice بدلاً من ذلك؟

إذا كانت حقول النصوص لديك تستخدم بالفعل دمج المراسلات الأصلي لقاعدة بيانات Writer، وتحتاج إلى تحكم برمجي في المخرجات، فإن LibreOffice يوفر MailMergeخدمةً لذلك. تتضمن خصائصها الموثقة ما يلي DataSourceName: Commandو و DocumentURLو OutputURLو FileNameFromColumnو و SaveAsSingleFile. تُعد واجهة برمجة التطبيقات هذه مفيدةً عندما ترغب في أتمتة دمج المراسلات القياسي من خلال التعليمات البرمجية. مع ذلك، لا توثق هذه الواجهة حقل مسار ملف الصورة لكل سجل، لذا قد تحتاج إلى دمج تنفيذ دمج المراسلات مع معالجة الكائنات الرسومية. راجع مرجع خدمة دمج المراسلات الرسمي .

قائمة التحقق النهائية

  • استخدم دمج البريد العادي في برنامج Writer عندما تكون الصورة ثابتة لكل مستلم.
  • استخدم ImagePathعمودًا واحدًا نظيفًا عندما تختلف الصورة باختلاف السجل.
  • قم بتسمية العنصر النقطي للرسم البياني الخاص بالكاتب وحافظ على ثبات أبعاده.
  • قم بحل مسار الصورة في عملية التشغيل الآلي؛ لا تتوقع أن يصبح حقل دمج النص صورة تلقائيًا.
  • اختبر سجلين أو ثلاثة قبل تشغيل دفعة كاملة.
  • افتح الملفات المصدرة بعد إغلاق المستندات المصدرية للتأكد من أن المخرجات مكتفية ذاتيًا.

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

اترك تعليقاً

كيفية تحريك صورة في برنامج مايكروسوفت وورد

كيفية تحريك صورة في برنامج مايكروسوفت وورد

تعلم كيفية سحب صورة في برنامج Word، واختيار التفاف النص، وإبقائها مع فقرة أو تثبيتها على الصفحة، واستكشاف أخطاء الصور التي لا تتحرك وإصلاحها.

كيفية إدراج خانة اختيار في برنامج إكسل: طريقتان سهلتان

كيفية إدراج خانة اختيار في برنامج إكسل: طريقتان سهلتان

تعرف على كيفية إدراج خانة اختيار في برنامج Excel باستخدام أداة الخلية، أو حساب العناصر المحددة باستخدام الصيغ، أو إضافة عنصر تحكم نموذج مرتبط في إصدارات سطح المكتب القديمة.

كيفية ملء الأحرف تلقائيًا في برنامج إكسل: من الألف إلى الياء وما بعدها

كيفية ملء الأحرف تلقائيًا في برنامج إكسل: من الألف إلى الياء وما بعدها

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

كيفية وضع خط يتوسط النص في برنامج إكسل: اختصارات وطرق خطوة بخطوة

كيفية وضع خط يتوسط النص في برنامج إكسل: اختصارات وطرق خطوة بخطوة

تعلم كيفية وضع خط يتوسط النص في برنامج Excel على نظامي التشغيل Windows و Mac والويب، وتنسيق جزء من الخلية، وإزالة الخط دون حذف قيمته.

ما هو برنامج مايكروسوفت أكسس؟ وكيف تعمل أدوات قواعد البيانات الخاصة به؟

ما هو برنامج مايكروسوفت أكسس؟ وكيف تعمل أدوات قواعد البيانات الخاصة به؟

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

استيراد وتصدير البيانات في Office Outlook 2010: نقل البيانات باستخدام ملف PST

استيراد وتصدير البيانات في Office Outlook 2010: نقل البيانات باستخدام ملف PST

تعرّف على كيفية استيراد ملف PST إلى Outlook 2010 أو تصدير البريد وجهات الاتصال والتقويم والمهام. اتبع الخطوات الصحيحة وتجنب فقدان المجلدات أو وجود ملفات مكررة.

تغيير ارتفاع وعرض خطوط الشبكة في برنامج Word 2010

تغيير ارتفاع وعرض خطوط الشبكة في برنامج Word 2010

تعلم كيفية ضبط ارتفاع وعرض خطوط الشبكة في برنامج Word 2010، وتغيير تردد الخطوط المرئية، وتعيين تباعد شبكة الرسم الأفقية والرأسية الأساسية.

استعادة كلمة مرور ملف Outlook PST باستخدام نواة Nucleus

استعادة كلمة مرور ملف Outlook PST باستخدام نواة Nucleus

استرجع كلمة مرور ملف Outlook PST المفقودة باتباع الخطوات الحالية لبرنامج Kernel، بما في ذلك كيفية تحديد الملف الصحيح، وإنشاء نسخة احتياطية، والتحقق من حدود الأداة.

كيفية إدراج صفحة ويب مباشرة في شريحة باوربوينت

كيفية إدراج صفحة ويب مباشرة في شريحة باوربوينت

استخدم وظيفة LiveWeb الإضافية لوضع موقع ويب على شريحة PowerPoint، وتعيين حجمه وسلوك التحديث، والتحقق من التوافق قبل العرض.

أضف العطلات الوطنية إلى تقويم Outlook الخاص بك

أضف العطلات الوطنية إلى تقويم Outlook الخاص بك

أضف العطلات الرسمية الخاصة بكل دولة في Outlook الجديد، أو Outlook على الويب، أو Outlook الكلاسيكي. تعرّف على كيفية تجنب الأحداث المكررة والتحقق من وجود تواريخ مفقودة لعامي 2026-2027.