Home
» PC-tips
»
Converteer DOCX-bestanden in batch naar PDF met LibreOffice CLI.
Converteer DOCX-bestanden in batch naar PDF met LibreOffice CLI.
Als u een map met Word-bestanden hebt, kan LibreOffice deze in één keer converteren. Maak vanuit de map met de DOCX-bestanden een lege uitvoermap aan en voer het commando uit libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx. Dit maakt gebruik van het PDF-exportfilter van Writer en laat de originele bestanden intact.
Gebruik een nieuwe uitvoermap, controleer of LibreOffice is geïnstalleerd en controleer de resulterende PDF's in plaats van een succesvolle afsluiting van de opdracht als bewijs te beschouwen dat elke pagina er goed uitziet. De opdrachtregel is een praktisch batchprogramma; het garandeert geen identieke paginering als Microsoft Word en kan beschadigde documenten niet herstellen.
Voer een eenvoudige batchconversie uit.
Open in Linux een terminal in de map waarin de bestanden zich bevinden. Maak eerst de uitvoermap aan:
mkdir -p pdf
libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx
--headlessHet programma wordt uitgevoerd zonder het normale bureaubladvenster te openen. --convert-toHet selecteert PDF als bestemmingsformaat, writer_pdf_Exportgeeft het PDF-exportfilter van LibreOffice Writer een naam en --outdir pdfslaat de resultaten op in de pdfmap. De shell vult *.docxde overeenkomende bestanden aan voordat LibreOffice start. LibreOffice documenteert deze conversiesyntaxis en filternaam in de referentie voor opdrachtregelparameters en de lijst met bestandsconversiefilters .
Voorbeeld van terminaluitvoer nadat een kleine batch DOCX-bestanden naar LibreOffice is verzonden met het PDF-exportfilter van Writer.
Kies het juiste batchpatroon
Het gebruik van een wildcard werkt het beste wanneer alle DOCX-bestanden zich direct in één invoermap bevinden. Het zoekt niet in submappen. Op Linux is het patroon standaard hoofdlettergevoelig, waardoor *.docxbestanden die eindigen op .DOCX mogelijk worden overgeslagen .DOCX. Als de shell meldt dat het patroon niet overeenkomt, controleer dan de bestandsextensies voordat u de opdracht wijzigt.
Voor documenten die zich in submappen bevinden, kan een lus de mappenstructuur behouden en conflicten voorkomen wanneer twee mappen een bestand met dezelfde naam bevatten. Stel inputde bronstructuur in en pdfeen aparte doelstructuur:
-print0De matchingfunctie read -d ''verwerkt spaties en de meeste ongebruikelijke tekens in bestandsnamen op een veilige manier. Het aparte profiel voorkomt dat deze batchtaak concurreert met een LibreOffice-sessie op de desktop die hetzelfde gebruikersprofiel gebruikt; LibreOffice's opstartreferentiedocumenten -env:UserInstallation. Gebruik een uniek profielpad als er twee conversietaken tegelijkertijd kunnen worden uitgevoerd. Houd de uitvoerstructuur buiten de invoerstructuur, zodat de zoekopdracht niet in eerdere resultaten terechtkomt.
Voorbeeld van een recursieve zoeklus die PDF's naar een submap met de naam 'pdf' schrijft naast elke bronmap, waardoor bestanden met dezelfde naam in verschillende mappen gescheiden blijven.
Wanneer LibreOffice al geopend is
Een opdracht kan ogenschijnlijk voltooid zijn zonder bestanden te produceren, of kan verbinding maken met een bestaand LibreOffice-proces. Een actieve desktop-instantie kan het standaardgebruikersprofiel bevatten. Sluit LibreOffice af en probeer het opnieuw; voor taken die niet automatisch worden uitgevoerd, -env:UserInstallationis de geïsoleerde optie in het recursieve voorbeeld een nuttige beveiliging. Geef elke gelijktijdige taak een eigen profielmap en wacht tot een taak is voltooid voordat u die map opnieuw gebruikt.
Als de opdracht aangeeft dat libreoffice: command not foundLibreOffice geïnstalleerd moet worden, installeer het dan via de ondersteunde pakketbronnen van uw besturingssysteem of gebruik het volledige pad naar het uitvoerbare bestand. In Windows PowerShell kan een eenvoudig, niet-recursief batchbestand als volgt worden geschreven:
Pas dit aan $sofficeals LibreOffice elders is geïnstalleerd. Voer de opdracht uit vanuit de bronmap en gebruik een nieuwe uitvoermap. PowerShell Get-ChildItem -Filedoorzoekt alleen die map, tenzij recursie is aangevraagd; recursieve taken vereisen een lus die voor elk bronpad een overeenkomstige bestemmingsmap aanmaakt.
Wat kan het resultaat beïnvloeden?
Bij het converteren naar PDF blijft de lay-out behouden die LibreOffice kan interpreteren, maar Word en LibreOffice pagineren documenten niet altijd identiek. Ontbrekende lettertypen, niet-ondersteunde ingesloten objecten, bijgehouden wijzigingen, velden of complexe tabellen kunnen leiden tot verschuivingen in regeleinden en paginanummers. Installeer de benodigde lettertypen voor een consistente typografie vóór de conversie. Beveiligde of met een wachtwoord versleutelde bestanden moeten mogelijk met de juiste inloggegevens worden geopend of handmatig worden verwerkt. Een beschadigd DOCX-bestand kan bovendien zelfstandig vastlopen, zelfs als andere bestanden wel correct worden geconverteerd.
Voer de batch niet herhaaldelijk uit naar een map die waardevolle PDF's met overeenkomende namen bevat. Gebruik een schone bestemming of maak eerst een back-up van de bestaande uitvoer. Als een bestand bijzonder belangrijk is, open het dan in LibreOffice Writer en controleer het voordat u op de PDF vertrouwt. Als exacte paginering volgens Microsoft Word een contractuele vereiste is, is LibreOffice mogelijk niet de juiste renderer; vergelijk een representatief voorbeeld in de toepassing die de vereiste lay-out definieert.
Voorbeeldopdracht waarbij een apart LibreOffice-gebruikersprofiel wordt gebruikt voor een conversie die niet door de gebruiker wordt uitgevoerd.
Controleer de uitvoer voordat je deze deelt.
Vergelijk eerst het aantal bronbestanden met het aantal PDF's. Op Linux tellen deze commando's de bestanden in een platte map:
find . -maxdepth 1 -type f -iname '*.docx' | wc -l
find pdf -maxdepth 1 -type f -iname '*.pdf' | wc -l
Bij recursieve conversie kunt u de aantallen in de volledige invoer- en uitvoerstructuur vergelijken. Een overeenkomend aantal is een nuttige controle, maar geen kwaliteitsgarantie: een beschadigd document of een overschreven duplicaat moet mogelijk nog steeds worden gecontroleerd. Controleer het terminallogboek op fouten en bevestig dat elke verwachte bestandsnaam in de bestemming voorkomt.
Bekijk representatieve PDF's in een PDF-viewer. Controleer de eerste en laatste pagina, het aantal pagina's, de marges, tabellen, kop- en voetteksten, afbeeldingen en eventuele pagina-einden die van belang zijn. Als pdfinfoPDF-viewer is geïnstalleerd, pdfinfo pdf/Report.pdfworden metadata zoals het aantal pagina's en de paginagrootte weergegeven; de visuele kwaliteit wordt echter niet beoordeeld. Converteer de PDF's pas opnieuw nadat een specifiek probleem is opgelost, zoals het installeren van een ontbrekend lettertype of het wijzigen van de uitvoermap, en bekijk de betreffende PDF's vervolgens opnieuw.
Voorbeeld van een verificatieweergave met PDF-metadata zoals paginatelling en papierformaat.
De batch is klaar wanneer alle verwachte PDF-bestanden aanwezig zijn, zonder fouten openen en de relevante pagina's de beoogde lay-out behouden. Bewaar voor grote archieven de originele DOCX-bestanden en conversielogboeken, zodat een individuele fout kan worden opgespoord en de conversie opnieuw kan worden uitgevoerd zonder dat ongerelateerde uitvoer wordt vervangen.