我想从PDF文档中的任意页面(不一定是第一页)制作快照图像。 有免费的工具可以做到这一点吗? 我正在使用Delphi。
谢谢
史蒂文
pdftk.exe file.pdf cat 2 output page2_only.pdf
convert -geometry 1600x1600 -density 200x200 -quality 100 page2_only.pdf page_snapshot.jpg
convert是ImageMagick的一个命令。
要使用此命令,需要安装Ghostscript。在我的测试中,convert会抱怨PDF格式无效,这是由pdftk引起的,但似乎不会影响输出结果。
这里有一些关于管理PDF的Delphi相关工具的比较: 前9名PDF管理工具。 到目前为止,我自己从未使用过其中任何一个,因此无法给出建议。
还有PDFlib Lite是开源的。
P.S.:你能否澄清一下你想要一个"一次性"(手动)解决方案还是编程解决方案?你在问题中提到了Delphi,但在对Pieter van Wyk的评论中,你似乎对手动解决方案感到满意。对于手动解决方案,像其他人一样,我建议使用Ghostscript(引擎)与Ghostview(UI)。Ghostscript有一个API可以被Delphi访问,但将其部署到商业程序中可能存在问题(大小、许可证等)。
§ 首先需要安装Ghostscript,然后再安装Ghostview。打开你的PDF文件,选择菜单栏中的“文件”/“转换”/“设备”选项,选择pdfwrite(或其他你需要或喜欢的图像格式),选择分辨率(72对于屏幕足够),选择页码,点击“确定”,选择文件夹和文件名,保存即可完成。
Steven
我几年前也遇到了同样的问题,唯一可靠的解决方案是购买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;
敬礼,Pieter
使用命令行运行Ghostscript(没有ActiveX组件可用) gswin32c.exe .... 参数.....(请参阅文档,非常容易)
你可以考虑一下The QuickPDF Library。我已经使用这个库大约5年了。它有一个很好的支持群体,他们在原始出版商长期痛苦的放弃之后一直支持着它,现在由PDF世界中多年重要人物Karl De Abrew支持。他们在下载页面上提供了可下载的产品参考手册,我想他们还有类似于ClonePage之类的东西。无论如何,如果您在手册中找不到答案,请联系他们的支持,您可能会得到一个完整的解释,以实现您想要做的事情。
哎呀。我刚刚注意到需要“免费”。他们的工具箱价格相当合理,249美元,如果你的项目是你将要销售的东西,那么至少对你的用户来说是免费的或者不必另外收费。
杰克
如果您不需要高分辨率的快照,您可以使用Acrobat的ActiveX组件在特殊表单(全屏,无边框)中打开pdf文件,导航到页面,然后获取屏幕截图。您可以立即关闭该表单,以便它只是闪现并消失。
在Windows上也可以使用ImageMagick,它具有非常简单的命令,您可以在(隐藏的情况下,使用ShellExec)中调用这些命令,创建JPEG(或任何其他图像类型)。
[]
告诉imageMagick只转换你想要的页面,类似于convert -geometry 1600x1600 -density 200x200 -quality 100 file.pdf[2] page_snapshot.jpg
。 - isalgueiroconvert -density 600 input.pdf output.jpg
就足够了。 - Joerg S