Pregunta

¿Convertir un .doc o .pdf a una imagen y mostrar una miniatura en Ruby?
¿Alguien sabe cómo generar miniaturas de documentos en Ruby (o C, Python...)?

¿Fue útil?

Solución

Un ejemplo simple de RMagick para convertir un PDF a PNG sería:

require 'RMagick'
pdf = Magick::ImageList.new("doc.pdf")
thumb = pdf.scale(300, 300)
thumb.write "doc.png"

Convertir un documento de MS Word, no será tan fácil.Su mejor opción puede ser convertirlo primero a PDF antes de generar la miniatura.Sus opciones para generar el PDF dependen en gran medida del sistema operativo que esté ejecutando.Una podría ser utilizar OpenOffice y el Convertidor de documentos abiertos de Python.También existen servicios de conversión en línea que puedes probar, incluidos http://Zamzar.com.

Otros consejos

Código de muestra para responder al comentario de @aisensiy anterior:

require 'rmagick'
pdf_path = "/path/to/interesting/file.pdf"
page_index_path = pdf_path + "[0]" # first page in PDF
pdf_page = Magick::Image.read( page_index_path ).first # first item in Magick::ImageList
pdf_page.write( "/tmp/indexed-page.png" ) # implicit conversion based on file extension

Basado en la pista de la ruta en respuesta a otra pregunta:

https://stackoverflow.com/a/6369524/765063

No estoy seguro de la compatibilidad con .doc en ninguna biblioteca de código abierto, pero ImageMagick (y la gema RMagick) se pueden compilar con compatibilidad con pdf (creo que está activado de forma predeterminada).

La compatibilidad con PDF tiene algunos errores en ImageMagick, pero es, con diferencia, la mejor forma de sistema operativo para Ruby.También hay un proyecto de código de verano de Google para compatibilidad pura con Ruby PDF.

He leído cosas sobre el uso de OpenOffice sin la GUI para transformar archivos .doc, pero en el mejor de los casos será complicado.

Como dijeron los dos carteles anteriores, ImageMagick es probablemente la forma más fácil de generar miniaturas.

Podrías ejecutar algo como:

´convert -size 300x300 doc.pdf doc.png´

(Las comillas le dicen a Ruby que lo desembolse).

Si no desea utilizar exec para realizar la conversión, puede utilizar la gema RMagick para hacerlo por usted, pero probablemente sea un poco más de código.

Si no te importa pagar por Imgix, maneja archivos PDF también.Con él obtienes todos los beneficios de una CDN rápida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top