PDFドキュメントの任意のページ(必ずしも最初のページである必要はありません)からスナップショット画像を作成したいと思います。このための無料のツールはありますか?Delphiを使用しています。
TIA
スティーブン
6 に答える
これは、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 が訴えましたが、これは出力に影響を与えていないようでした。
ここにPDFを管理するためのいくつかのDelphi関連ツールの比較があります:トップ9PDF管理ツール。今まで自分で使ったことがないのでお勧めできません。
オープンソースのPDFlibLiteもあります。
PS:「ワンショット」(手動)ソリューションとプログラムソリューションのどちらが必要かを明確にできますか?質問でDelphiについて言及していますが、Pieter van Wykへのコメントでは、手動による解決策に満足しているようです。手動のものについては、他の人と同様に、Ghostview(UI)を備えたGhostscript(エンジン) §をお勧めします。GhostscriptにはDelphiからアクセスできるAPIがありますが、商用プログラムでデプロイする場合は問題が発生する可能性があります(サイズ、ライセンスなど)。
§Ghostviewよりも最初にGhostscriptをインストールする必要があります。PDFを開き、メニューファイル/変換/デバイスとしてpdfwrite(または必要/優先する別の画像形式)を選択/解像度を選択(画面には72で十分)/ページ番号を選択/OK/フォルダとファイル名を選択/保存すれば完了です。
スティーブン
数年前に同じ問題が発生しました。信頼できる唯一の解決策は、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;
よろしく、ピーター
The QuickPDF Libraryをチェックしてみてください。図書館を5年ほど利用しています。元の発行者による長く苦痛に満ちた見捨てを乗り越え、現在では長年 PDF の世界で重要な人物である Karl De Abrew によってサポートされている優れたサポート グループがあります。彼らの製品のダウンロード ページにはダウンロード可能なリファレンス マニュアルがあり、ClonePage のようなものがあると思います。とにかく、マニュアルで答えが見つからない場合は、サポートに連絡してください。おそらく、あなたがやろうとしていることを達成する方法の完全な説明が得られるでしょう.
おっとっと。「無料」の要件に気付きました。彼らのツールボックスの価格は 249 ドルとかなり高く、もしあなたのプロジェクトがあなたが販売するものであれば、少なくともあなたのユーザーには無料で提供されるか、少なくとも個別に価格が設定されることはありません.
ジャック
高解像度のスナップショットを探していない場合は、Acrobat の ActiveX コンポーネントを含む PDF ファイルを特別な形式 (フルスクリーン、境界線なし) で開き、ページに移動して、画面のスクリーンショットを取得することができます。そのフォームをすぐに閉じて、点滅して消えるようにすることができます。
ImageMagick は Windows でも使用できます。非常に単純なコマンドを呼び出して (ShellExec を使用して隠して)、JPEG (またはその他の画像タイプ) を作成できます。
コマンド ラインからの Ghostscript (利用可能な ActiveX コンポーネントはありません) gswin32c.exe .... パラメータ ..... (ドキュメントを参照してください。非常に簡単です)