¿Existe alguna herramienta de línea de comandos para convertir archivos DOC y DOCX a PDF? Si no, ¿puede automatizarse mediante algún script de Automator (abrir-imprimir a PDF-cerrar)?
Respuestas
¿Demasiados anuncios?Puede utilizar la función docx2pdf
herramienta de línea de comandos para convertir docx a pdf de forma masiva. Utiliza Microsoft Word para convertir directamente a pdf, por lo que necesitarás tenerlo instalado. En MacOS, utiliza JXA (AppleScript para JavaScript) para comunicarse con Word y en Windows utiliza win32com.
pip install docx2pdf
# single file
docx2pdf myfile.docx
# entire folder
docx2pdf myfolder/
Descargo de responsabilidad: Yo escribí docx2pdf
tras frustrarme por la falta de herramientas multiplataforma para convertir docx a pdf directamente con Microsoft Word, ya que necesitaba una réplica perfecta sin problemas de formato. https://github.com/AlJohri/docx2pdf
En Office 2016 el enfoque Automator se encontrará con problemas debido a sandboxing de seguridad . (El síntoma: Word permanece abierto y aparece el cuadro de diálogo "Error al imprimir").
Una solución consiste en instalar LibreOffice que puede utilizarse para convertir archivos desde la línea de comandos . En MacOS, el comando es:
/Applications/LibreOffice.app/Contents/MacOS/soffice \
--headless \
--convert-to pdf \
myfile.docx
El PDF sólo será tan bueno como la conversión de LibreOffice desde MS Office, por supuesto, pero es adecuado para muchos propósitos.
Otro enfoque, si realmente no le importa el formato, es utilizar pandoc
y LaTeX:
pandoc -t latex myfile.docx -o myfile.pdf
Tendrá que instalar pandoc y LaTeX como se describe en esta respuesta Sin embargo, el PDF tendrá el aspecto de un documento LaTex: se conservará el formato básico, los encabezados, las listas, etc., pero no cosas como las fuentes y los márgenes.
Si tiene Office:Mac 2008 Business Edition u Office:Mac 2011 Home/Business Edition, las acciones de Automator están incluidas en esas ediciones. Una de las acciones de Automator incluidas en esas versiones de Office:Mac es "Convertir formato de documentos de Word", y una de las opciones de esa acción de Automator es PDF. Esta página tiene gran información sobre Automator y Office:Mac.
Si tienes Home/Student Edition en lugar de Business Edition, o no tienes Office, puedes hacerlo mediante AppleScript. Mac OS X Hints tiene un artículo sobre conversión masiva de archivos de texto a PDF mediante AppleScript y los comentarios a ese artículo ofrecen algunas opciones para convertir DOC/DOCX a PDF mediante RTF. Si los archivos DOC/DOCX son muy complejos, es posible que se pierda el formato o los enlaces, pero puede ser suficiente para archivos no muy complejos.
Para mi aplicación la solución de LibreOffice publicada por @David Moles es una gran solución. Tengo que usar esto desde dentro de una aplicación ya que mi versión de Word no se ejecuta en MacOS 12.3.1 (bueno, es de 32 bits por lo que se detuvo después de 10.14.6.). Yo había estado usando AppleScript para decirle a Word para convertir a pdf). Aprendí que cada parte delimitada por espacios de los argumentos necesita ser un objeto en el array de argumentos pasados a NSTask. eg
NSTASK *task = [[NSTask alloc] init];
task.executableURL = [NSURL fileURLWithPath:@"/Applications/LibreOffice.app/Contents/MacOS/soffice"];
NSString *filename = ...;
task.currentDirectoryURL = [NSURL fileURLWithPath: ...];
task.arguments = @[@"--headless"
, @"--convert-to", @"pdf", filename];