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

Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top