2009-06-05 70 views

回答

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; 

的問候,彼得

+0

感謝彼得,迄今爲止的最佳答案! (呃作爲* only *回答到目前爲止:-))。 我的系統上有Acrobat,所以我可以測試代碼。工作正常。 (但是Acrobat可能不在目標系統上)。 我們會看看有人提出了一個更便宜的選擇。同時,再次感謝。 HANWE – stevenvh 2009-06-05 14:56:07

+1

看起來很傻,並且浪費了很多時間通過剪貼板傳遞圖像。沒有辦法將它直接複製到位圖? – 2017-08-08 08:17:49

0

這可能是值得你花時間檢查The QuickPDF Library。我已經使用了大約5年的圖書館。它有一個很好的支持團隊,通過原始出版商的長期而痛苦的放棄,並且現在得到了多年來一直在PDF世界中成爲重要名字的人的支持,Karl De Abrew。他們在他們的下載頁面上有一個可下載的產品參考手冊,我認爲他們有像ClonePage之類的東西。無論如何,如果您在手冊中找不到答案,請聯繫他們的支持人員,您可能會完整地解釋如何完成您正在嘗試做的事情。

糟糕。我只注意到「免費」的要求。他們的工具箱售價爲249美元,如果你的項目是你要銷售的東西,至少它對你的用戶是免費的,或者至少不是單獨定價的。

傑克

+0

QuickPDF圖書館8年價值1500美元,這是6倍,至少對我來說太多了。 (這是每年25%的通貨膨脹率。) – 2017-08-08 08:21:51

4

您可以使用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無效格式化,但這似乎沒有影響輸出。

0

如果您不想查找高分辨率快照,可以使用Acrobat的ActiveX組件以特殊形式(全屏,無邊框)打開PDF文件,導航至頁面,然後獲取screenshot of the screen。你可以立即關閉該表單,這樣它就會閃爍,然後消失。

ImageMagick也可以在Windows上使用,它有非常簡單的命令,您可以調用(隱藏,使用ShellExec),創建一個JPEG(或任何其他圖像類型)。

0

Ghostscript的命令行(沒有的ActiveX compenent可用) gswin32c.exe ....參數.....(見文檔,它很容易)

1

這裏的一些德爾福相關的工具比較管理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可以足夠屏幕)/選擇你的頁碼/確定/選擇文件夾和文件名/保存,你就完成了。