我想从PDF文档中的任意页面(即不一定是第一页)制作快照图像。任何免费工具吗?我正在使用Delphi
TIA
史蒂芬
答案 0 :(得分:4)
您可以使用pdftk和ImageMagick / Ghostscript
分两步完成此操作步骤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格式无效,但这似乎不会影响输出。
答案 1 :(得分: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,但是使用商业程序进行部署可能会有问题(大小,许可证等)。
§您需要先安装Ghostscript而不是Ghostview。打开你的PDF,菜单文件/转换/作为设备选择pdfwrite(或你需要/喜欢的其他图像格式)/选择你的分辨率(72可以足够的屏幕)/选择你的页码/确定/选择文件夹和文件名/保存,你就完成了。
答案 2 :(得分: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;
问候,彼得
答案 3 :(得分:0)
值得您花些时间查看The QuickPDF Library。我用了大约5年的图书馆。它拥有一个很好的支持小组,通过原始出版商的漫长而痛苦的放弃而站在它旁边,现在得到了多年来一直是PDF世界重要名字的人Karl De Abrew的支持。他们的下载页面上有他们产品的可下载参考手册,我认为他们有像ClonePage之类的东西。无论如何,如果你在手册中找不到答案,请联系他们的支持,你可能会得到一个完整的解释,说明如何完成你想要做的事情。
糟糕。我刚注意到“免费”的要求。他们的工具箱价格相当于249美元,如果您的项目是您要销售的产品,至少它对您的用户是免费的,或者至少不是单独定价的。
杰克
答案 4 :(得分:0)
如果您没有寻找高分辨率快照,您可以使用Acrobat的ActiveX组件以特殊形式(全屏,无边框)打开pdf文件,导航到该页面,然后获取{{3 }}。您可以立即关闭该表单,这样它就会闪烁,然后消失。
ImageMagick也可以在Windows上使用,它有非常简单的命令可以调用(隐藏,使用ShellExec),创建JPEG(或任何其他图像类型)。
答案 5 :(得分:0)
命令行中的Ghostscript(没有可用的ActiveX功能) gswin32c.exe ....参数.....(见文档,很容易)