l'image instantané du document PDF
Question
Je veux faire une image instantanée d'une page arbitraire (à savoir pas nécessairement la première) dans un document PDF. Tous les outils gratuits pour cela? J'utilise Delphi.
TIA
Steven
La solution
Steven
J'ai eu le même problème il y a quelques années et la seule solution fiable était d'acheter Acrobat Professional (7) et l'utiliser pour extraire la page, le copier dans le presse-papiers, puis créer une miniature de cela. Je serais très curieux de voir s'il existe des méthodes disponibles gratuitement pour extraire des pages d'un document PDF.
procedure TFormMain.LoadPDFDoc(Filename: TFilename; var Bitmap: TBitmap);
var
PDPage : variant;
PdApp, PdDoc, PdRect: variant;
begin
try
PdApp := CreateOleObject('AcroExch.App');
PdDoc := CreateOleObject('AcroExch.PDDoc');
PdRect := CreateOleObject('AcroExch.Rect');
//Open the pdf document
PDDoc.Open(FileName);
PDPage := PDDoc.AcquirePage(0);
//Define the rectangle to fit the page
PDRect.Top := 0;
PDRect.Left := 0;
PDRect.Right := PDPage.GetSize.x;
PDRect.Bottom := PDPage.GetSize.y;
//Set the bitmap proportions
with Bitmap do
begin
Width := PDRect.Right;
Height := PDRect.Bottom;
end;
//Copy the rectangle to the ClipBoard
PDPage.CopyToClipboard(PDRect, 0, 0, 100);
if not VarIsEmpty(PDPage) then
PDPage := UnAssigned;
//Close the pdf document
PDDoc.Close;
//Paste the image from the clipboard
with Bitmap do
begin
LoadFromClipboardFormat(CF_BITMAP, ClipBoard.GetAsHandle(CF_BITMAP), 0);
PixelFormat := pf24Bit;
HandleType := bmDIB;
end;
Except on E: Exception do
ShowMessage(E.Message);
end;
end;
Cordialement, Pieter
Autres conseils
Vous pouvez le faire en 2 étapes en utilisant pdftk et ImageMagick / Ghostscript
Étape 1: Créer un nouveau fichier pdf avec la page qui vous intéresse:
pdftk.exe file.pdf cat 2 output page2_only.pdf
Étape 2: Convertir le nouveau pdf jpg:
convert -geometry 1600x1600 -density 200x200 -quality 100 page2_only.pdf page_snapshot.jpg
convertir est une commande ImageMagick.
ImageMagick nécessite Ghostscript à installer pour que cela fonctionne. Quand je testé, converti se plaignait de la mise en forme invalide du PDF, causée par pdftk, mais cela ne semble pas affecter la sortie.
Voici une comparaison de certains outils liés à Delphi pour gérer PDF: Top 9 PDF Outils Gestion . Jusqu'à présent, je jamais utilisé moi-même, donc je ne peux pas donner une recommandation.
Il y a aussi PDFlib Lite qui est open source.
P.S:. Pouvez-vous préciser si vous voulez un "one-shot" (manuel) solution ou un programmatique? Vous mentionnez Delphi dans votre question, mais dans votre commentaire à Pieter van Wyk vous semblez heureux avec une solution manuelle. Pour un manuel, je suggère, comme d'autres, Ghostscript (moteur) avec Ghostview (UI) §. Ghostscript a une API qui peut être consulté par Delphi , mais peut potentiellement être problématique (taille, licence, etc.) pour déployer un programme commercial.
§ Vous devez installer Ghostscript premier que Ghostview. Ouvrez votre PDF, menu Fichier / Convertir / comme dispositif de sélection pdfwrite (ou un autre format d'image que vous avez besoin / préférez) / choisir votre résolution (72 peut être suffisant pour l'écran) / choisissez votre numéro de page / OK / sélectionnez le dossier et le nom du fichier / enregistrer et vous avez terminé.
Il pourrait être utile de votre temps de consulter Bibliothèque QuickPDF. Je l'ai utilisé la bibliothèque pendant environ 5 ans. Il a un bon groupe de soutien qui a résisté par elle par un abandon à long et pénible par l'éditeur original et est maintenant pris en charge par quelqu'un qui a été un nom important dans le monde PDF depuis de nombreuses années, Karl De Abrew. Ils ont un manuel de référence téléchargeable à leur produit sur leur page de téléchargement et je pense qu'ils ont quelque chose comme ClonePage ou quelque chose. Quoi qu'il en soit, si vous ne trouvez pas la réponse dans le manuel, contacter leur soutien et vous obtiendrez probablement une explication complète de la façon d'accomplir ce que vous essayez de faire.
Oops. Je viens de remarquer que cette exigence « libre ». Leur boîte à outils est assez au prix de 249 $ et si votre projet est quelque chose que vous vendriez, au moins il serait libre de vos utilisateurs ou du moins pas au prix séparément.
Jack
Si vous cherchez pas un instantané haute résolution, vous pouvez simplement ouvrir le fichier pdf avec le composant ActiveX d'Acrobat, sous une forme spéciale (Fullscreen, Sans frontières), accédez à la page, puis obtenir un capture d'écran de l'écran . Vous pouvez immédiatement fermer cette forme, il serait juste clignoter et disparaître.
ImageMagick pourrait également être utilisé sous Windows, il a très simples commandes que vous pouvez invoquer dans (caché, en utilisant ShellExec), créez un fichier JPEG (ou tout autre type d'image).
Ghostscript à partir de la ligne de commande (pas compenent ActiveX disponibles) gswin32c.exe .... paramètres ..... (voir fiches, il est très facile)