5

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

4

6 に答える 6

5

これは、pdftk と ImageMagick/Ghostscript を使用して 2 ステップで実行できます。

ステップ 1: 関心のあるページを含む新しい PDF ファイルを作成します。

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

ステップ 2: 新しい pdf を jpg に変換します。

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

convertは ImageMagick コマンドです。

ImageMagick を使用するには、Ghostscript をインストールする必要があります。これをテストしたところ、pdftk が原因で PDF のフォーマットが無効であると convert が訴えましたが、これは出力に影響を与えていないようでした。

于 2009-06-05T17:08:47.670 に答える
1

ここにPDFを管理するためのいくつかのDelphi関連ツールの比較があります:トップ9PDF管理ツール。今まで自分で使ったことがないのでお勧めできません。

オープンソースのPDFlibLiteもあります。

PS:「ワンショット」(手動)ソリューションとプログラムソリューションのどちらが必要かを明確にできますか?質問でDelphiについて言及していますが、Pieter van Wykへのコメントでは、手動による解決策に満足しているようです。手動のものについては、他の人と同様に、Ghostview(UI)を備えたGhostscript(エンジン) §をお勧めします。GhostscriptにはDelphiからアクセスできるAPIがありますが、商用プログラムでデプロイする場合は問題が発生する可能性があります(サイズ、ライセンスなど)。

§Ghostviewよりも最初にGhostscriptをインストールする必要があります。PDFを開き、メニューファイル/変換/デバイスとしてpdfwrite(または必要/優先する別の画像形式)を選択/解像度を選択(画面には72で十分)/ページ番号を選択/OK/フォルダとファイル名を選択/保存すれば完了です。

于 2009-10-18T22:07:08.473 に答える
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;

よろしく、ピーター

于 2009-06-05T12:55:34.363 に答える
0

The QuickPDF Libraryをチェックしてみてください。図書館を5年ほど利用しています。元の発行者による長く苦痛に満ちた見捨てを乗り越え、現在では長年 PDF の世界で重要な人物である Karl De Abrew によってサポートされている優れたサポート グループがあります。彼らの製品のダウンロード ページにはダウンロード可能なリファレンス マニュアルがあり、ClonePage のようなものがあると思います。とにかく、マニュアルで答えが見つからない場合は、サポートに連絡してください。おそらく、あなたがやろうとしていることを達成する方法の完全な説明が得られるでしょう.

おっとっと。「無料」の要件に気付きました。彼らのツールボックスの価格は 249 ドルとかなり高く、もしあなたのプロジェクトがあなたが販売するものであれば、少なくともあなたのユーザーには無料で提供されるか、少なくとも個別に価格が設定されることはありません.

ジャック

于 2009-06-05T16:42:00.090 に答える
0

高解像度のスナップショットを探していない場合は、Acrobat の ActiveX コンポーネントを含む PDF ファイルを特別な形式 (フルスクリーン、境界線なし) で開き、ページに移動して、画面のスクリーンショットを取得することができます。そのフォームをすぐに閉じて、点滅して消えるようにすることができます。

ImageMagick は Windows でも使用できます。非常に単純なコマンドを呼び出して (ShellExec を使用して隠して)、JPEG (またはその他の画像タイプ) を作成できます。

于 2009-06-05T21:52:58.137 に答える
0

コマンド ラインからの Ghostscript (利用可能な ActiveX コンポーネントはありません) gswin32c.exe .... パラメータ ..... (ドキュメントを参照してください。非常に簡単です)

于 2009-09-18T08:03:19.740 に答える