2009-06-05 6 views
4

PDFドキュメントの任意のページ(必ずしも最初のものではない)からスナップショットイメージを作成したいとします。これのための任意の無料のツールですか?私はDelphiを使用しています。
TIA
スティーブンPDFドキュメントのスナップショットイメージ

答えて

0

スティーブン

私は数年前に同じ問題を抱えていたし、唯一の信頼性の高いソリューションは、Acrobat Professionalの(7)を購入し、ページを抽出するためにそれを使用することでした、クリップボードにコピーそれからサムネイルを作成します。私は非常に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; 

よろしく、ピーター

+0

ありがとうございますピーテル、これまでの最高の答え! (ええええええええええええええええええええええええええっと) 私は自分のシステムにAcrobatを持っているので、コードをテストすることができます。正常に動作します。 (しかし、Acrobatはターゲットシステム上にない可能性があります)。 誰かが安い選択肢を提示するかどうかを確認します。その間、再び感謝します。 HANWE – stevenvh

+1

愚かなように見え、クリップボード経由で画像を渡すのに多くの時間を無駄にします。それを直接ビットマップにコピーする方法はありませんか? –

0

The QuickPDF Libraryをチェックアウトするあなたの時間の価値があるかもしれません。私は約5年間この図書館を使いました。オリジナルの出版社が長く苦しい放棄によってそれを支持した優れたサポートグループを持ち、現在PDFワールドで重要な名前を持つ人であるKarl De Abrewによってサポートされています。彼らは自分のダウンロードページで自分の製品にダウンロード可能なリファレンスマニュアルを持っており、私は彼らがClonePageのような何かを持っていると思う。とにかく、マニュアルで回答が見つからない場合は、サポートにお問い合わせください。あなたがしようとしていることを達成する方法についての完全な説明が得られます。

私はちょうど "無料"の要件に気づいた。彼らのツールボックスは249ドルでかなり値段が付けられています。あなたのプロジェクトがあなたが売るものならば、少なくともあなたのユーザーは無料でも、少なくとも別々の価格でもないでしょう。

ジャック

あなたはpdftkとImageMagickの/ Ghostscriptを使用して2つの段階でこれを行うことができます
+0

QuickPDFライブラリの8年は1500ドル、それは6倍、そしてあまりにも、少なくとも私のために。 (それは年間25%のインフレです) –

4

ステップ1:

pdftk.exe file.pdf cat 2 output page2_only.pdf 

ステップ:興味のあるページを使用して新しいPDFファイルを作成します。 2:新しいpdfをjpgに変換する:

convert -geometry 1600x1600 -density 200x200 -quality 100 page2_only.pdf page_snapshot.jpg 

convertはImageMagickコマンドです。

ImageMagickを使用するには、Ghostscriptをインストールする必要があります。これをテストしたところ、convertはpdftkに起因するPDFの無効な書式設定について不平を言ったが、これは出力には影響していないようだ。

+0

imageMagickに '[]'を使ってほしいページだけを変換することができます。これは 'convert -geometry 1600x1600 -density 200x200 -quality 100 file.pdf [2] page_snapshotのようなものです。 jpg' – isalgueiro

0

高解像度のスナップショットを探していない場合は、AcrobatのActiveXコンポーネントを使用して特別な形式(全画面、境界線なし)でpdfファイルを開き、ページに移動してからscreenshot of the screenを取得します。そのフォームをすぐに閉じることができるので、ただ点滅して消えてしまいます。

ImageMagickは、Windowsで使用することもできます。非常に簡単なコマンド(ShellExecを使用して非表示にする)、JPEG(またはその他のイメージタイプ)を作成できます。コマンドラインから

0

Ghostscriptの(なしのActiveX compenent) gswin32c.exe ....パラメータ.....(それは非常に簡単です、ドキュメンテーションを参照してください)

1
ここ

いくつかのDelphi関連ツールの比較PDFを管理する:Top 9 PDF Managing Tools。 これまで、私は自分自身を使用したことはありませんでしたので、私は推薦を与えることはできません。

また、オープンソースであるPDFlib Liteもあります。

P.S .: "ワンショット"(手動)ソリューションまたはプログラムによるソリューションを使用するかどうかを明確にすることはできますか?あなたはあなたの質問にDelphiについて言及していますが、Pieter van Wykへのあなたのコメントでは、手動の解決策に満足しているようです。マニュアルの場合、私は他の人たちと同様に、Ghostscript (engine) with Ghostview (UI)を提案します。 GhostscriptにはAPI that can be accessed by Delphiがありますが、商用プログラムで展開するには問題があります(サイズ、ライセンスなど)。

§Ghostviewよりも先にGhostscriptをインストールする必要があります。 pdfwrite(または必要な/希望する画像形式)を選択する/解像度を選択する(画面には72で十分です)/ページ番号を選択/ OK /フォルダとファイル名を選択/保存して、完了です。

関連する問題