2011-07-06 55 views
6

Estoy trabajando en un proyecto en el que necesito analizar imágenes; La fuente principal de estas imágenes es la cámara web, pero recientemente nos pidieron que agreguemos soporte para los archivos y escáneres cargados. Esto está bien, en su mayor parte, excepto que les gustaría que podamos usar documentos en formato PDF.¿Qué biblioteca C++ puedo usar para convertir un PDF a una imagen en Windows?

Necesito un mapa de bits en bruto para el procesamiento; en Mac, puedo usar CoreGraphics para cargar el PDF en un buffer de imagen, pero no estoy seguro de cómo hacerlo en Windows.

En resumen: Necesito una biblioteca C++ (preferiblemente con una licencia como BSD ya que es de código cerrado, pero potencialmente podría funcionar LGPL) que puedo usar para abrir un archivo PDF y exportar cada página como un búfer de imagen renderizada mapa de bits

+0

@taxillian ¿se le ocurrió una solución para esto? ¿Qué terminaste usando? –

+1

Nunca encontré una buena solución, me temo. En realidad, lo estaba usando en un complemento, y ahora uso pdf.js para representarlo en el navegador y luego enviar los datos de la imagen al complemento – taxilian

Respuesta

5

ImageMagick. De lejos la mejor biblioteca para la lectura y la escritura como muchos formatos como sea posible http://www.imagemagick.org/script/index.php

+0

Hmm. No me di cuenta de que ImageMagick podía leer archivos PDF. Esa es una posibilidad definitiva, aunque ImageMagick es una gran dependencia para agregar a un proyecto; Consideraré este. Gracias. – taxilian

+3

Creo que ImageMagick usa Ghostscript para la conversión. Veo que ha considerado Ghostscript, ¿también ha considerado MuPDF? Solo maneja PDF, a diferencia de GS, pero tiene una huella mucho más pequeña. Se usa en SumatraPDF y en forma de biblioteca en otros lugares. – KenS

+0

si termino por tener que iniciar un proceso, echaré un vistazo a MuPDF como una opción. ¡Gracias! – taxilian

3

Ejemplo:

pdf2swf --pages 1 -T9 PDF_FILE.pdf -o temp.swf 
swfrender temp.swf --output 1.png 
  • Con poppler

Exampl e usando Qt http://bit.ly/8UksK6

+0

+1 Bienvenido a SO;) –

+0

¡Gracias! Estoy de regreso para retribuir lo que aprendí aquí :-) – Skhaz

+0

Hmm; Creo que podría llamar esto desde C++, pero preferiría usar una biblioteca que pueda usar directamente en la aplicación; en realidad es un complemento del navegador FireBreath, lo que significa que iniciar otros procesos puede ser ... problemático. También consideré usar Ghostscript de una manera similar a la que sugieres. – taxilian

Cuestiones relacionadas