我想从PDF文档中的任意页面(即不一定是第一个)制作快照图像。任何免费的工具呢?我正在使用Delphi。
TIA
史蒂芬来自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;
的问候,彼得
这可能是值得你花时间检查The QuickPDF Library。我已经使用了大约5年的图书馆。它有一个很好的支持团队,通过原始出版商的长期而痛苦的放弃,并且现在得到了多年来一直在PDF世界中成为重要名字的人的支持,Karl De Abrew。他们在他们的下载页面上有一个可下载的产品参考手册,我认为他们有像ClonePage之类的东西。无论如何,如果您在手册中找不到答案,请联系他们的支持人员,您可能会完整地解释如何完成您正在尝试做的事情。
糟糕。我只注意到“免费”的要求。他们的工具箱售价为249美元,如果你的项目是你要销售的东西,至少它对你的用户是免费的,或者至少不是单独定价的。
杰克
QuickPDF图书馆8年价值1500美元,这是6倍,至少对我来说太多了。 (这是每年25%的通货膨胀率。) – 2017-08-08 08:21:51
您可以使用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无效格式化,但这似乎没有影响输出。
如果您不想查找高分辨率快照,可以使用Acrobat的ActiveX组件以特殊形式(全屏,无边框)打开PDF文件,导航至页面,然后获取screenshot of the screen。你可以立即关闭该表单,这样它就会闪烁,然后消失。
ImageMagick也可以在Windows上使用,它有非常简单的命令,您可以调用(隐藏,使用ShellExec),创建一个JPEG(或任何其他图像类型)。
Ghostscript的命令行(没有的ActiveX compenent可用) gswin32c.exe ....参数.....(见文档,它很容易)
这里的一些德尔福相关的工具比较管理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可以足够屏幕)/选择你的页码/确定/选择文件夹和文件名/保存,你就完成了。
- 1. 来自图像阵列的重叠图像的快照
- 2. 来自android中地图的快照
- 3. 来自异步文档的图像
- 4. 自动检测来自PDF的图像
- 5. 来自PDF文档的目录使用CGPDFDocumentGetCatalog的文档
- 6. 来自PDF的高分辨率图像
- 7. Flash As2图像快照
- 8. Codeigniter - 视图快照 - 生成PDF
- 9. 转换PDF文档到图像
- 10. 来自MPMoviePlayerController视频的快照
- 11. 使用ReportLab(Python)的PDF文档中的PDF图像
- 12. 来自网络摄像头的快照白色边框
- 13. php上传图像和文档,如pdf,文档,ppt
- 14. Flutter Firestore - 查找`文档快照“ID
- 15. 具有图像的imagview的快照
- 16. 使用DirectShow来快照映像
- 17. 使用来自mysql数据库的图像生成PDF文件
- 18. 自动填充PDF文档
- 19. 飞快移动:索引MS文档,PDF
- 20. 根据来自文本字段的输入打开PDF文档
- 21. 显示来自Umbraco Media的图像文档
- 22. 将Microsoft Office文档和PDF文档转换为使用Java的图像文件
- 23. 从iOS的pdf文档中读取文本和图像
- 24. 高分辨率图像快照,在Java
- 25. 快照webview返回空白图像
- 26. GCE第三方自动化(快照/图像等)
- 27. 加载pdf作为来自跨文档消息的event.data获取
- 28. 来自预定义模板的多页PDF文档
- 29. VM的自动快照
- 30. 获取未应用视图快照的视图快照
感谢彼得,迄今为止的最佳答案! (呃作为* only *回答到目前为止:-))。 我的系统上有Acrobat,所以我可以测试代码。工作正常。 (但是Acrobat可能不在目标系统上)。 我们会看看有人提出了一个更便宜的选择。同时,再次感谢。 HANWE – stevenvh 2009-06-05 14:56:07
看起来很傻,并且浪费了很多时间通过剪贴板传递图像。没有办法将它直接复制到位图? – 2017-08-08 08:17:49