ste*_*nvh 5 pdf delphi snapshot
我想从 PDF 文档中的任意页面(即不一定是第一页)制作快照图像。有这方面的免费工具吗?我正在使用德尔福。
蒂亚·
史蒂文
您可以使用 pdftk 和 ImageMagick/Ghostscript 分两步完成此操作
第 1 步:使用您感兴趣的页面创建一个新的 pdf 文件:
pdftk.exe file.pdf cat 2 output page2_only.pdf
Run Code Online (Sandbox Code Playgroud)
步骤2:将新的pdf转换为jpg:
convert -geometry 1600x1600 -density 200x200 -quality 100 page2_only.pdf page_snapshot.jpg
Run Code Online (Sandbox Code Playgroud)
转换是一个 ImageMagick 命令。
ImageMagick 需要安装 Ghostscript 才能正常工作。当我对此进行测试时,convert 抱怨由 pdftk 导致的 PDF 格式无效,但这似乎并没有影响输出。
史蒂文
几年前我遇到了同样的问题,唯一可靠的解决方案是购买 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;
Run Code Online (Sandbox Code Playgroud)
问候, 彼得
| 归档时间: |
|
| 查看次数: |
13775 次 |
| 最近记录: |