我想从 PDF 文档中的任意页面(即不一定是第一页)制作快照图像。有什么免费的工具吗?我正在使用德尔福。
TIA
史蒂文
6 回答
您可以使用 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 才能使其工作。当我对此进行测试时,convert 抱怨由 pdftk 引起的 PDF 格式无效,但这似乎并没有影响输出。
这里比较一些与 Delphi 相关的 PDF 管理工具:Top 9 PDF 管理工具。到目前为止,我自己从来没有使用过,所以我无法给出推荐。
还有开源的PDFlib Lite 。
PS:您能否澄清一下您想要“一次性”(手动)解决方案还是程序化解决方案?您在问题中提到了 Delphi,但在您对 Pieter van Wyk 的评论中,您似乎对手动解决方案感到满意。对于手册,我建议和其他人一样,使用带有 Ghostview (UI) § 的 Ghostscript(引擎)。Ghostscript 有一个可供 Delphi 访问的 API ,但使用商业程序部署可能会出现问题(大小、许可证等)。
§ 你需要先安装 Ghostscript 而不是 Ghostview。打开您的PDF,菜单文件/转换/作为设备选择pdfwrite(或您需要/喜欢的其他图像格式)/选择您的分辨率(72足以用于屏幕)/选择您的页码/确定/选择文件夹和文件名/保存,你就完成了。
史蒂文
几年前我遇到了同样的问题,唯一可靠的解决方案是购买 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;
问候,彼得
可能值得您花时间查看QuickPDF 库。我已经使用图书馆大约 5 年了。它有一个很好的支持团队,他们在原出版商长期而痛苦的放弃中一直支持它,现在得到了多年来在 PDF 世界中享有盛誉的人 Karl De Abrew 的支持。他们的下载页面上有他们产品的可下载参考手册,我认为他们有类似 ClonePage 之类的东西。无论如何,如果您在手册中找不到答案,请联系他们的支持,您可能会获得有关如何完成您正在尝试做的事情的完整说明。
哎呀。我刚刚注意到“免费”要求。他们的工具箱价格合理,为 249 美元,如果您的项目是您要出售的东西,至少它对您的用户是免费的,或者至少不单独定价。
杰克
如果您不是在寻找高分辨率快照,您可以使用 Acrobat 的 ActiveX 组件以特殊形式(全屏,无边框)打开 pdf 文件,导航到页面,然后获取屏幕截图。您可以立即关闭该表单,因此它只会闪烁并消失。
ImageMagick 也可以在 Windows 上使用,它有非常简单的命令,您可以调用(隐藏,使用 ShellExec),创建 JPEG(或任何其他图像类型)。
命令行中的 Ghostscript(没有可用的 ActiveX 组件) gswin32c.exe .... 参数.....(请参阅文档,这很容易)