2012-01-25 53 views
11

Me preguntaba si era fácil generar miniaturas de archivos PDF en Delphi. Básicamente quiero renderizar la primera página de un PDF en un pequeño mapa de bits (digamos 100x100 o similar).
Veo dos opciones 1 uso un componente PDF, 2 de alguna manera explico cómo explorer genera vistas previas/miniaturas.miniaturas en PDF en Delphi

Respuesta

1

Puede encontrar una lista de controladores de vista previa instalados (en Vista y Windows 7) en HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ PreviewHandlers.

Si se instala cualquier controlador de PDF (por ejemplo, cuando está instalado Acrobat Reader), puede buscar el servidor COM buscando el GUID encontrado anteriormente. Esto en combinación con la interfaz IPreviewHandler puede guiarlo a una solución.

+1

Parece que los controladores de vista previa están en la misma ubicación en XP también. – Alister

11

Usar una biblioteca como QuickPDF o Gnostice es realmente la opción más fácil. Estoy bastante seguro de que las miniaturas de PDF en el explorador en realidad se generan con cualquier software PDF instalado, como Adobe. A menos que pueda garantizar que se instala un lector de PDF adecuado en cada estación de trabajo, la idea de usar miniaturas podría no ser válida.

Editar: Aquí hay una aplicación completa que utiliza QuickPDF para representar la primera página de un archivo PDF dado en un archivo BMP. En 10 DPI, mi archivo BMP de salida tiene 85 píxeles de ancho por 110 píxeles de alto.

program PDFToBMP; 
{$APPTYPE CONSOLE} 
uses 
    SysUtils, QuickPDF; 
var 
    Q : TQuickPDF; 
begin 
    Q := TQuickPDF.Create; 
    try 
    Q.LoadFromFile(ParamStr(1), ''); 
    Q.RenderPageToFile(10 {DPI}, 1 {PageNumber}, 0 {0=BMP}, ChangeFileExt(ParamStr(1),'.bmp')); 
    finally 
    Q.Free; 
    end; 
end. 
1

O si tiene "tiempo" que podría tratar de usar GhostScript ya sea por línea de comandos o embedding it. Mike W. te dio una solución buena y fácil. Yo uso Gnostice pero hay muchas otras soluciones PDF VCL.

Cuestiones relacionadas