Mi chiedevo se ci fosse una facile generazione di miniature di file PDF in Delphi. Fondamentalmente voglio rendere la prima pagina di un PDF in una piccola bitmap (diciamo 100x100 o simile).
Vedo due opzioni 1 utilizzare un componente PDF, 2 in qualche modo toccare in che modo explorer genera anteprime/miniature.Miniature PDF in Delphi
risposta
È possibile trovare un elenco di gestori di anteprima installati (in Vista e Windows 7) in HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ PreviewHandlers.
Se è installato qualsiasi gestore PDF (ad esempio, quando Acrobat Reader è installato), è possibile cercare il server COM cercando il GUID trovato in precedenza. Questo in combinazione con l'interfaccia IPreviewHandler può guidarti verso una soluzione.
Utilizzare una libreria come QuickPDF o Gnostice è davvero l'opzione più semplice. Sono abbastanza sicuro che le miniature PDF in explorer siano effettivamente generate da qualunque software PDF sia installato come Adobe. A meno che non si possa garantire che sia installato un lettore PDF appropriato su ogni workstation, l'idea di utilizzare le miniature potrebbe non essere valida.
Modifica: questa è un'applicazione completa che utilizza QuickPDF per eseguire il rendering della prima pagina di un determinato file PDF in un file BMP. A 10 DPI il mio file BMP di output è 85 pixel di larghezza per 110 pixel di altezza.
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.
O se avete "tempo" che si potrebbe provare a utilizzare GhostScript sia da riga di comando o embedding it. Mike W. ti ha dato una soluzione buona e facile. Io uso Gnostice ma ci sono molte altre soluzioni PDF VCL.
Sembra che anche i gestori di anteprime si trovino nella stessa posizione su XP. – Alister