Estoy trabajando en un proyecto para OSX donde el usuario puede elegir una colección de documentos (desde cualquier aplicación) de la que necesito generar PDF. El cuadro de diálogo Imprimir de Macintosh estándar tiene un botón de PDF que tiene una serie de comandos relacionados con PDF que incluyen "Guardar como PDF ...". Sin embargo, necesito generar el archivo PDF sin requerir interacciones del usuario. Lo ideal es que esto funcione con cualquier tipo de documento.¿Cómo generar programáticamente un PDF desde cualquier documento en OSX?
He aquí las opciones que he explorado hasta ahora:
- acciones de Automator. Hay una biblioteca en PDF para Automator pero proporciona acciones para trabajar con archivos PDF, no generarlos. Hay una acción de Finder para imprimir cualquier archivo pero solo a una impresora real.
- AppleScript. Algunas aplicaciones tienen la capacidad de generar archivos PDF (por ejemplo, si envía 'guardar documento en' test.pdf '' a Páginas, generará un PDF (pero esto solo funciona para Páginas, necesito soporte para cualquier tipo de documento) .
- personalizados de impresora. yo podría crear un controlador de impresora virtual y luego utilizar la acción de Automator, pero no me gusta la idea de confundir al usuario con una impresora adicional en la lista de impresión.
Mi esperanza es que hay alguna forma de interactuar con la aplicación activa como si el usuario estuviera llevando a cabo los siguientes pasos:
- Hacer Cmd-P (abre el cuadro de diálogo de impresión)
- Haga clic en el botón "PDF"
- selecciona "Guardar como PDF ..." (segundo ítem en el menú)
- Tipo de nombre de archivo en cuadro de diálogo Guardar
- Haga clic en "Guardar"
Si ese es el mejor enfoque (¿verdad?), entonces el problema real es: ¿cómo envío eventos de IU a una aplicación externa (pulsaciones de teclas, eventos de mouse, selecciones de menú)?
Actualización: sólo para aclarar un punto: los documentos que necesito para convertir a PDF son documentos que son creados por otras aplicaciones . Por ejemplo, el usuario puede elegir un documento de Word o una hoja de cálculo de Numbers o un dibujo de OmniGraffle o una página web. El denominador común es que cada uno de estos documentos tiene una aplicación asociada y esa aplicación sabe cómo imprimirlo (y OSX sabe cómo renderizar la salida de impresión en un archivo PDF).
Por lo tanto, las muestras en Cocoa Dev Central no ayudan porque se trata de generar un PDF desde mi aplicación.
Gracias! Ese fue exactamente el puntero que estaba buscando. –
-1 Este parece ser un buen enfoque si abres un archivo en safari pero estoy seguro de que no quieres el código correcto para cada aplicación posible – mcgrailm