Hoe maak je een geautomatiseerde samenvoeging van e-mails met afbeeldingen in LibreOffice Writer?

Je kunt in LibreOffice Writer een prima samenvoeging maken voor namen, adressen, datums en andere tekstvelden, maar zodra elke ontvanger een andere foto, handtekening, productafbeelding, QR-code of badge nodig heeft, blijkt de eenvoudige workflow ineens een stuk minder eenvoudig. De reden hiervoor is belangrijk: de gedocumenteerde samenvoegvelden van Writer zijn databasevelden die als tekstplaceholders worden gebruikt. LibreOffice ondersteunt ook ingesloten en gekoppelde afbeeldingen, maar de huidige helpfunctie beschrijft geen native 'afbeeldingsveld voor samenvoeging' dat automatisch een afbeelding uit een kolom met bestandspaden vervangt voor elk record.

Dat laat twee praktische opties over. Als elk samengevoegd document hetzelfde logo of dezelfde achtergrondafbeelding gebruikt, gebruik dan de normale samenvoegfunctie van Writer en laat die afbeelding vaststaan ​​in de sjabloon. Als de afbeelding voor elke rij moet veranderen, is de meer beheersbare aanpak om de tekst- en afbeeldingsgegevens in Calc te bewaren, een benoemd grafisch object in de Writer-sjabloon te reserveren en het samenvoegen te automatiseren met een macro in LibreOffice Basic. Deze handleiding gebruikt die tweede aanpak.

De instructies zijn afgestemd op de LibreOffice 26.2-documentatie die beschikbaar is in 2026. Menu's kunnen enigszins afwijken in andere versies of op macOS. De huidige Writer-handleiding van LibreOffice vermeldt dat afbeeldingen kunnen worden ingesloten of gekoppeld, terwijl de UNO API grafische objecten van Writer beschikbaar maakt XTextGraphicObjectsSupplieren automatisering het mogelijk maakt om een ​​afbeelding in te stellen vanaf een externe URL. Deze functies maken een workflow voor afbeeldingen per record mogelijk, ook al biedt de standaard wizard voor samenvoegen van e-mails deze functie niet aan als een apart afbeeldingsveld.

Kies de juiste workflow voordat je begint.

VereisteBeste aanpakBelangrijkste afweging
Hetzelfde logo of dezelfde foto op elke letter.Standaard Writer-mail samenvoegenEenvoudig, maar het beeld verandert nooit door de opname.
Een andere afbeelding voor elke ontvangerWriter-sjabloon + Calc + Basis-/UNO-automatiseringMeer instelwerk, maar voorspelbare controle over het beeld.
De database slaat de afbeelding zelf op, niet een pad.Database-/formulierworkflow of aangepaste UNO-codeBeter geschikt voor beheerde databases, maar zwaarder dan een samenvoeging op basis van spreadsheets.
Honderden of duizenden documenten in onbeheerde batches.Macro of extern UNO-scriptVereist testen, loggen en discipline in bestandspaden.

Als het alleen om een ​​vast bedrijfslogo gaat, stop dan hier en gebruik de normale LibreOffice-workflow voor standaardbrieven . De rest van dit artikel gaat over variabele afbeeldingen.

Stap 1: Bereid een schone Calc-gegevensbron voor.

Maak een Calc-blad met één kopregel en één record per regel. Plaats afbeeldingsverwijzingen in een aparte kolom. Een praktische indeling is CustomerID, FirstName, LastName, Email, ImagePath, en OutputName.

LibreOffice Calc-werkblad met klantvelden, afbeeldingspaden en uitvoernamen voor een geautomatiseerde Writer-samenvoeging.
Gebruik één afbeeldingspad en één uitvoerbestandsnaam per rij, zodat de automatisering elk record kan verwerken zonder te hoeven gissen.

Gebruik absolute paden tijdens het bouwen en testen van de samenvoeging. Deze zijn minder draagbaar, maar ze voorkomen ambiguïteit. C:\MailMerge\Imageslice.jpgOp Windows of /home/user/mailmerge/images/alice.jpgLinux is het bijvoorbeeld gemakkelijker om problemen te diagnosticeren dan bij een relatief pad, waarvan de basisdirectory verandert afhankelijk van hoe het document is geopend.

Gebruik geen gemengde padindelingen van Windows en Linux in hetzelfde productiebestand. De gemengde voorbeelden in de illustratie tonen alleen het type waarde dat de kolom kan bevatten. Uw daadwerkelijke gegevensbron moet paden gebruiken die geldig zijn op de machine waarop de samenvoeging wordt uitgevoerd.

Een goede OutputNamekolom voorkomt ook conflicten met bestandsnamen. Geef de voorkeur aan een stabiele ID of een gezuiverde naam boven een e-mailadres of willekeurige vrije tekst. Als dezelfde waarde twee keer voorkomt, bepaal dan van tevoren of de macro de bestaande waarde moet overschrijven, een achtervoegsel moet toevoegen of moet mislukken.

Stap 2: Controleer of Writer de bestanden kan lezen.

De standaard samenvoegfunctie van Writer maakt gebruik van een geregistreerde gegevensbron. U kunt de wizard voor samenvoegen, een adresgegevensbron of de gegevensbronbrowser gebruiken. De huidige helpdocumentatie van LibreOffice beschrijft Extra > Wizard voor samenvoegen en biedt ook de mogelijkheid om databasevelden in te voegen via Invoegen > Veld > Meer velden > Database . Zie de officiële referentie voor databasevelden .

LibreOffice Writer toont een gegevensbron met klantrijen en normale samenvoegvelden in een brief.
Gebruik de gegevensbronweergave van Writer om te controleren of de verwachte kolommen en records zichtbaar zijn voordat u beeldautomatisering toevoegt.

Deze controle is nuttig, zelfs als de uiteindelijke macro de spreadsheet direct leest. Het spoort veelvoorkomende problemen vroegtijdig op: het verkeerde werkblad, onverwachte kopnamen, lege records of een spreadsheet die na registratie is verplaatst.

Voor een gewone tekstsamenvoeging kunt u een kolomkop naar het document slepen of een samenvoegveld invoegen via het tabblad Database. De officiële help van Writer bevestigt dat deze velden worden vervangen door database-inhoud wanneer de samenvoeging wordt uitgevoerd. Voor de variabele afbeelding moet u er echter niet van uitgaan dat het slepen ImagePathnaar de pagina het pad in een afbeelding verandert. Het blijft data, tenzij code het interpreteert en een grafisch object bijwerkt.

Stap 3: Maak de Writer-sjabloon aan en geef de afbeeldingsplaceholder een naam.

Maak de lay-out voor de brief, het certificaat, de badge of het rapport in Writer. Gebruik voor de tekstwaarden normale samenvoegvelden of ondubbelzinnige tekens zoals {FirstName}, {LastName}, en {CustomerID}als uw macro deze zelf vervangt.

Voeg vervolgens een voorbeeldafbeelding in op de plek waar de variabele afbeelding moet verschijnen. Stel de gewenste grootte, tekstterugloop en verankering in voordat u het proces automatiseert. LibreOffice beschrijft het formaat, de positionering, de verankering, de tekstterugloop en het gedrag van gekoppelde afbeeldingen in het huidige hoofdstuk 'Afbeeldingen en grafieken' van Writer 26.2 .

LibreOffice Writer-sjabloon met samenvoegvelden voor tekst en een geselecteerde afbeeldingsplaceholder met de naam MergeImage.
Reserveer de uiteindelijke afbeeldingspositie in de sjabloon en geef het grafische object een stabiele naam, bijvoorbeeld MergeImage.

Geef het grafische object een stabiele naam, bijvoorbeeld MergeImage. Het exacte eigenschappendialoogvenster kan per versie verschillen. Als u niet zeker weet welk object Writer beschikbaar stelt, kunt u daarom Extra > Ontwikkeltools gebruiken . De Ontwikkeltools van LibreOffice kunnen grafische objecten, eigenschappen, methoden en interfaces in het huidige document inspecteren. Dit maakt het een veiliger diagnostisch hulpmiddel dan het raden van een interne objectnaam.

Voor een voorspelbare lay-out kunt u dezelfde beeldverhouding gebruiken voor alle bronafbeeldingen of bepalen hoe u ze wilt bijsnijden. Writer kan een afbeelding aanpassen aan de afmetingen van de placeholder, maar een portretfoto die in een breed, bannerachtig kader wordt geplaatst, ziet er nog steeds verkeerd uit, tenzij u de bestanden eerst normaliseert.

Stap 4: Automatiseer de export van variabele afbeeldingen en documenten

De belangrijkste automatiseringsbewerking is eenvoudig: open de sjabloon, vervang de tekstplaceholders, zoek het benoemde grafische object, laad het afbeeldingsbestand van de rij in dat object en exporteer vervolgens het resultaat. De UNO API-documentatie van LibreOffice getGraphicObjects()beschrijft de toegang tot ingesloten en gekoppelde afbeeldingen en de TextGraphicObjectservice voor grafische eigenschappen. De GraphicURLeigenschap is verouderd voor algemene objectopslag ten gunste van Graphic, maar de huidige API vermeldt expliciet dat het instellen van een externe URL die afbeelding in het grafische object laadt. Dat maakt het handig voor een eenvoudige Basic-macro die lokale bestandspaden gebruikt.

LibreOffice Basic IDE toont een macro voor het samenvoegen van e-mails die een afbeeldingspad leest en een grafisch object in Writer bijwerkt.
De automatiseringslaag zet een ImagePath-waarde om in de daadwerkelijke afbeelding die in elk gegenereerd document wordt weergegeven.

Het volgende voorbeeld is opzettelijk klein. Wijzig de drie paden, de bladnaam, de kolomindexen en de plaatsaanduidingen zodat ze overeenkomen met uw eigen bestanden. Test het eerst met twee records voordat u een grote batch uitvoert.

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

Deze macro is een voorbeeld, geen universeel in te vullen programma. LibreOffice-installaties kunnen verschillende macrobeveiligingsbeleidsregels, padregels van het besturingssysteem en sjabloonindelingen hebben. De belangrijkste geverifieerde API-concepten zijn dat Writer zijn verzameling grafische objecten beschikbaar stelt en dat LibreOffice een afbeelding kan instellen vanaf een externe URL. Voor grotere implementaties is het raadzaam de afbeelding te laden via de moderne GraphicAPI in plaats van te vertrouwen op het compatibiliteitsgedrag van de standaardmethode GraphicURL. De officiële referenties zijn XTextGraphicObjectsSupplier en TextGraphicObject .

Stap 5: Voer een kleine batch uit en controleer het resultaat.

Voordat u de volledige gegevensbron verwerkt, voert u twee of drie rijen met een afwijkende beeldverhouding in: één JPG, één PNG en idealiter één afbeelding met een andere beeldverhouding. Controleer alle onderstaande punten voordat u de afbeelding opschaalt:

  • De naam van de ontvanger in het document komt overeen met de afbeelding in dezelfde rij van het spreadsheet.
  • In het uiteindelijke document wordt geen enkel afbeeldingspad als letterlijke tekst weergegeven.
  • De naam van het uitvoerbestand komt overeen met het beoogde record en overschrijft geen andere ontvanger.
  • De afbeelding past binnen het gereserveerde gebied zonder tekst naar een nieuwe pagina te verplaatsen of een ander object te bedekken.
  • Het gegenereerde PDF- of ODT-bestand wordt zelfstandig geopend nadat LibreOffice en Calc zijn gesloten.

Die laatste controle is belangrijk omdat gekoppelde afbeeldingen en ingesloten afbeeldingen zich anders gedragen. De huidige Writer-handleiding legt uit dat een gekoppelde afbeelding een aparte bestandsverwijzing blijft, terwijl een ingesloten afbeelding onderdeel wordt van het document. Als u ODT-bestanden naar een andere computer verzendt, controleer dan of het resultaat niet afhankelijk is van een lokaal pad dat alleen bestaat op de computer die de samenvoeging heeft uitgevoerd.

Veelvoorkomende problemen en de snelste oplossing

De uitvoer toont het bestandspad in plaats van de afbeelding.

Je hebt het ingevoegd ImagePathals een normaal samenvoegveld. Dat zou tekst moeten opleveren. Houd het pad in de gegevensbron, maar laat de macro het in het benoemde grafische object laden.

Elke plaat krijgt dezelfde afbeelding.

De sjabloonafbeelding is tussen de records niet gewijzigd, of uw lus leest een vaste cel. Registreer het rijnummer ImagePathtijdens een test met twee records. Als het pad verandert maar de afbeelding niet, controleer dan de naam van het grafische object met de ontwikkelaarstools.

De macro geeft aan dat MergeImage niet bestaat.

De afbeelding is hernoemd, vervangen of wordt niet weergegeven onder de naam die u verwacht. Selecteer de afbeelding en inspecteer deze met Extra > Ontwikkeltools . De UNO API geeft grafische objecten weer op naam, dus de macro en de sjabloon moeten exact overeenkomen.

De afbeeldingen verdwijnen op een andere computer.

U hebt waarschijnlijk een document opgeslagen dat nog steeds verwijzingen naar externe bestanden bevat. Als draagbaarheid belangrijk voor u is, zorg er dan voor dat het gegenereerde document de afbeelding insluit of exporteer naar PDF nadat de afbeelding is geladen. De handleiding voor afbeeldingen in LibreOffice legt het verschil uit tussen gekoppelde en ingesloten afbeeldingen en hoe koppelingen kunnen worden verbroken om bestanden in te sluiten.

HTML-mailmerge verliest afbeeldingen

Dit is een gedocumenteerde beperking die het overwegen waard is voordat u de e-mailuitvoer kiest. De LibreOffice-help vermeldt dat ingesloten of gekoppelde afbeeldingen niet met de e-mail worden meegestuurd wanneer een standaardbrief in HTML-formaat is. Als de afbeelding essentieel is, gebruik dan een PDF-bijlage of test een andere verzendworkflow in plaats van ervan uit te gaan dat HTML-mailmerge de afbeelding behoudt. Zie Een standaardbrief maken .

Wanneer moet je in plaats daarvan de MailMerge UNO-service van LibreOffice gebruiken?

Als uw tekstvelden al gebruikmaken van de ingebouwde database-samenvoegfunctie van Writer en u programmatische controle over de uitvoer nodig hebt, biedt LibreOffice ook een MailMergeservice aan. De gedocumenteerde eigenschappen hiervan zijn onder andere DataSourceName, Command, DocumentURL, OutputURL, FileNameFromColumn, en SaveAsSingleFile. Deze API is handig wanneer u standaard samenvoegbewerkingen vanuit code wilt automatiseren. De API zelf documenteert echter nog geen veld voor het pad naar een afbeeldingsbestand per record, dus mogelijk moet u de uitvoering van de samenvoegbewerking combineren met de verwerking van grafische objecten. Zie de officiële referentie voor de MailMerge-service .

Definitieve checklist

  • Gebruik de normale Writer-samenvoegfunctie wanneer de afbeelding voor elke ontvanger vaststaat.
  • Gebruik één overzichtelijke ImagePathkolom als de afbeelding per record verschilt.
  • Geef de plaatsaanduiding voor de afbeelding van de schrijver een naam en zorg ervoor dat de afmetingen constant blijven.
  • Los het afbeeldingspad op in de automatisering; ga er niet vanuit dat een samenvoegveld voor tekst automatisch een afbeelding wordt.
  • Test twee of drie records voordat u een volledige batch verwerkt.
  • Open de geëxporteerde bestanden nadat u de brondocumenten hebt gesloten om te controleren of de uitvoer op zichzelf staat.

Voor de meeste kleine en middelgrote opdrachten biedt een Calc-spreadsheet in combinatie met een Writer-sjabloon en een korte Basic-macro de beste balans tussen transparantie en controle. Het vereist meer voorbereiding dan een gewone tekstsamenvoeging, maar u kunt precies zien welke rij welke afbeelding levert, de uitvoerbestandsnaam kiezen en het resultaat controleren voordat u honderden gepersonaliseerde bestanden verzendt.

Laat een reactie achter

Hoe verbind ik ONLYOFFICE Desktop Editors met een ownCloud-server?

Hoe verbind ik ONLYOFFICE Desktop Editors met een ownCloud-server?

Verbind ONLYOFFICE Desktop Editors met uw eigen cloudserver, meld u aan, open cloudbestanden, beheer de verbinding en los veelvoorkomende installatieproblemen op.

How to Fix Collabora Online High CPU Usage from loolwsd / coolwsd

How to Fix Collabora Online High CPU Usage from loolwsd / coolwsd

Troubleshoot high Collabora Online CPU usage by identifying busy kit processes, checking metrics and logs, tuning concurrency and cleanup, and verifying fixes safely.

Hoe u ONLYOFFICE-documenten kunt personaliseren met uw logo en kleuren

Hoe u ONLYOFFICE-documenten kunt personaliseren met uw logo en kleuren

Leer hoe je ONLYOFFICE Docs kunt personaliseren met een logo in de header en interfacekleuren, inclusief licentielimieten, het instellen van thema-JSON, Docker-paden en testen.

Los problemen met de tekstzichtbaarheid in de donkere modus van LibreOffice Calc op.

Los problemen met de tekstzichtbaarheid in de donkere modus van LibreOffice Calc op.

Verbeter de leesbaarheid van tekst in LibreOffice Calc door het thema van de app, het lettertype en de opvulkleuren van de cellen, de stijlen en de voorwaardelijke opmaak te controleren en vervolgens de afdruk te verifiëren.

Los de foutmelding "Document is vergrendeld door een onbekende gebruiker" in LibreOffice op.

Los de foutmelding "Document is vergrendeld door een onbekende gebruiker" in LibreOffice op.

Verwijder de waarschuwing voor vergrendeling door onbekende gebruiker in LibreOffice op een veilige manier. Controleer actieve sessies, beveilig een kopie, verwijder alleen een geverifieerde, verouderde vergrendeling en test het document.

Corrigeer de rechts-naar-links leesrichting van Arabische en Hebreeuwse tekst in LibreOffice Writer.

Corrigeer de rechts-naar-links leesrichting van Arabische en Hebreeuwse tekst in LibreOffice Writer.

Corrigeer Arabische of Hebreeuwse tekst die niet goed doorloopt, uitgelijnd is of vermengd is met Engels in LibreOffice Writer. Schakel de complexe tekstlay-out in, stel de alinearichting in en controleer het resultaat.

LibreOffice Calc VLOOKUP vs XLOOKUP: A Beginner-Friendly Functions Guide

LibreOffice Calc VLOOKUP vs XLOOKUP: A Beginner-Friendly Functions Guide

Learn VLOOKUP and XLOOKUP in LibreOffice Calc, including exact matches, left lookups, not-found results, reverse search, INDEX/MATCH alternatives, and common errors.

Hoe los ik de foutmelding "WOPI Proof Validation Failed" op in Collabora Online?

Hoe los ik de foutmelding "WOPI Proof Validation Failed" op in Collabora Online?

Los problemen met de WOPI-bewijsvalidatie van Collabora Online op door de ontdekkingssleutels, sleutelrotatie, proxy-URL's, tijdstempels en host-whitelists te controleren.

Hoe schakel ik 'Wijzigingen bijhouden' standaard in in OnlyOffice-documenten?

Hoe schakel ik 'Wijzigingen bijhouden' standaard in in OnlyOffice-documenten?

Schakel 'Wijzigingen bijhouden' in voor iedereen in een ONLYOFFICE-document, zorg ervoor dat deze functie actief blijft na het opnieuw openen en begrijp de beperkingen van een algemene standaardinstelling.

Hoe configureert u time-outs voor inactiviteit tijdens Collabora-bewerkingssessies?

Hoe configureert u time-outs voor inactiviteit tijdens Collabora-bewerkingssessies?

Vergelijk de time-outs per weergave, onscherpte, inactieve documentstatus, automatisch opslaan en proxy-time-outs van Collabora Online, en kies en controleer vervolgens de instellingen voor uw implementatie.