2009-06-05 6 views
4

PDF 문서에서 임의의 페이지 (즉, 반드시 첫 페이지가 아닐 수도 있음)에서 스냅 샷 이미지를 만들고 싶습니다. 이것에 대한 무료 도구가 있습니까? 나는 델파이를 사용하고있다.
TIA
스티븐PDF 문서의 스냅 샷 이미지

답변

0

스티븐

나는 몇 년 전에 같은 문제를 가지고하고 신뢰할 수있는 유일한 해결책은 클립 보드에 복사, (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

감사 Pieter, 지금까지 최고의 답변! (어 .. 단 한가지 * 지금까지 대답 :-)). 시스템에 Acrobat이 있으므로 코드를 테스트 할 수 있습니다. 잘 작동합니다. (그러나 Acrobat은 대상 시스템에 없을 수도 있습니다). 누군가가 저렴한 대안을 제시하는지 알 수 있습니다. 그 동안 다시 감사드립니다. HANWE – stevenvh

+1

바보 같이 보이고 클립 보드를 통해 이미지를 전달하는 데 많은 시간을 낭비합니다. 직접 비트 맵에 복사하는 방법이 없습니까? –

0

그것은 The QuickPDF Library을 확인하기 위해 당신의 시간 가치가있을 수도 있습니다. 나는 약 5 년 동안이 도서관을 사용했다. 이 책에는 원 발행인이 오랫동안 고통스럽게 포기한 서포트 그룹이 있으며 PDF 월드에서 중요한 이름을 지닌 사람 (Karl De Abrew)이 후원합니다. 그들은 그들의 다운로드 페이지에서 그들의 제품에 다운로드 할 수있는 참조 매뉴얼을 가지고 있고 나는 ClonePage 또는 무언가가 있다고 생각한다. 어쨌든 설명서에서 답을 찾을 수 없다면 지원 센터에 문의하십시오. 그러면 수행하려는 작업을 수행하는 방법에 대한 완전한 설명을 얻을 수 있습니다.

방금 "자유로운"요구 사항에 주목했습니다. 도구 상자의 가격은 249 달러로 상당히 높습니다. 프로젝트가 판매 될 것이라면 적어도 사용자에게는 무료이거나 적어도 별도로 책정되지 않을 것입니다.

당신은 pdftk와 ImageMagick이/고스트 스크립트를 사용하여 2 단계에서이 작업을 수행 할 수 있습니다
+0

8 년 동안 QuickPDF 라이브러리 비용이 1500 달러로 6 배나 많았고, 적어도 나를 위해. (이는 연 25 %의 인플레이션입니다.) –

4

1 단계 :

pdftk.exe file.pdf cat 2 output page2_only.pdf 

단계 : 관심있는 페이지로 새 pdf 파일 만들기 2 : 새 PDF 파일을 jpg로 변환 :

convert -geometry 1600x1600 -density 200x200 -quality 100 page2_only.pdf page_snapshot.jpg 

convert은 ImageMagick 명령입니다.

ImageMagick이 작동하려면 Ghostscript가 설치되어 있어야합니다. 이 테스트를 거쳤을 때 convert는 pdftk로 인한 PDF의 잘못된 형식에 대해 불평했지만 출력에 영향을 미치지는 않았습니다.

+0

imageMagick에게 '[]]로 원하는 페이지 만 변환 할 수 있습니다. 예를 들어 convert -geometry 1600x1600 -density 200x200 -quality 100 file.pdf [2] page_snapshot과 같습니다. jpg' – isalgueiro

0

고해상도 스냅 샷을 찾고 계시지 않으시려면 Acrobat의 ActiveX 구성 요소를 사용하여 특수한 형태 (전체 화면, 테두리 없음)로 PDF 파일을 열고 페이지로 이동 한 다음 screenshot of the screen을 가져올 수 있습니다. 그 양식을 즉시 닫을 수 있습니다. 그러면 단지 깜박 거리고 사라질 것입니다.

ImageMagick은 Windows에서 사용할 수도 있고, ShellExec을 사용하여 숨길 수있는 매우 간단한 명령을 가지고 있으며 JPEG (또는 다른 이미지 유형)를 만들 수 있습니다. 명령 줄에서

0

고스트 (사용할 수없는 액티브 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이 있지만 상업용 프로그램을 배포 할 때 문제가 될 수 있습니다 (크기, 라이센스 등).

§ 먼저 Ghostview보다 Ghostscript를 설치해야합니다. pdfwrite (또는 원하는/선호하는 다른 이미지 형식)/해상도 선택 (화면에 충분할 수 있음)/페이지 번호 선택/확인/폴더 및 파일 이름 선택/저장하고 완료되었습니다.