2016-06-07 87 views
-6

我想知道怎麼做可以:德爾福XE8加載PDF文件

  1. 點擊一個按鈕,從目錄中打開PDF文件。

  2. 在窗體上查看PDF文件。

+0

不客氣! –

+2

你並沒有試圖做這樣的事情。程序不返回值,所以沒有* Result *可用。你分配給* s *的是無稽之談;它與PDF文件的有效名稱沒有任何關係。以實際編譯的形式發佈您嘗試使用的**實際代碼**。此外,這是*問題和答案*網站,而不是*問題*。如果您有多個問題,請創建多個帖子來詢問他們,除非他們密切相關。在這種情況下,它們不是,因爲其中一個是關於打開一個可以在API中正常工作的PDF,另一個是關於嵌入的,而不是。 –

+0

您是否安裝了Adobe Acrobat的完整版本?我問的原因是,如果你這樣做,可以使用它的自動化對象來打開PDF文件並將其顯示在Delphi應用程序託管的窗口中。如果這就是你想要做的,發佈一個新的問題,具體問如何做到這一點。還有其他方法,但只有這個方法才能像Acrobat那樣呈現文檔。 – MartynA

回答

3

你並不需要所有的跳轉赴湯蹈火你在幹什麼。 Windows會爲您找到與PDF文件關聯的應用程序。

procedure TForm1.Button1Click(Sender: TObject); 
var 
    s: String;  
    Ret: DWord; 
begin 
    s := 'C:\MyFiles\MyFile.pdf'; 
    Ret := ShellExecute(Handle, nil, PChar(s), nil, nil, SW_SHOW); 
    if Ret < 32 then 
    ShowMessage(SysErrorMessage(GetLastError)); 
end; 

注:通常你應該從未呼叫而不檢查返回值的WinAPI的功能。在這種情況下,您將知道它是否無效,因爲PDF無法打開。

+0

錯誤處理已中斷。不能在ShellExecute中使用GetLastError。爲了正確報告,請使用ShellExecuteEx。 –

0

要嵌入PDF,第2個想法浮現在腦海中會

1)搜索,支持PDF文件的COM對象 - 製作一個快速的搜索:http://www.biopdf.com/guide/com_interface.php,但似乎其他。

2)最差的情況下,你可以嵌入具有沿着這些線路的HTML代碼中有一個網絡面板:

<object data="test.pdf" type="application/pdf" width="500" height="300"> alt : <a href="test.pdf">test.pdf</a> </object>

+0

這兩點都可悲地與問題無關。 –

+0

@ArnaudBouchez是不是指OP的第二個問題? –

+1

@RenéHoffmann我永遠不會使用HTML面板在應用程序中嵌入pdf。正確的方法是使用ActiveX IMHO,例如作爲https://www.youtube.com/watch?v=n8qDdal-6mY –

1

感謝您的答案,但我最終得到它(幾年來一直沒有使用德爾福,忘記了用途)。

這就是:「點擊按鈕後,從目錄打開PDF文件。」

uses shellApi; 

procedure TForm1.Button1Click(Sender: TObject); 

begin 
ShellExecute(Handle, 'open', 'C:\pathwaytopdf.pdf', nil, nil, SW_SHOWNORMAL); 
end; 
end. 

謝謝你的答案。