delphixe8加载PDF文件
我想知道如何做:delphixe8加载PDF文件,delphi,delphi-xe8,Delphi,Delphi Xe8,我想知道如何做: 单击按钮,从目录中打开PDF文件 uses shellApi; procedure TForm1.Button1Click(Sender: TObject); begin ShellExecute(Handle, 'open', 'C:\pathwaytopdf.pdf', nil, nil, SW_SHOWNORMAL); end; end. 查看表单上的PDF文件 要嵌入PDF,首先想到的两个想法是 1) 搜索支持PDF的COM对象-快速搜索生成了以下内容:,但似乎还
uses shellApi;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', 'C:\pathwaytopdf.pdf', nil, nil, SW_SHOWNORMAL);
end;
end.
要嵌入PDF,首先想到的两个想法是 1) 搜索支持PDF的COM对象-快速搜索生成了以下内容:,但似乎还有其他内容 2) 最糟糕的情况是,您可以嵌入一个web面板,其中包含以下行的HTML代码:
中高音:
你不需要所有你正在做的跳跃动作。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;
procedure TForm1.按钮1点击(发送方:TObject);
变量
s:字符串;
雷特:德沃德;
开始
s:=“C:\MyFiles\MyFile.pdf”;
Ret:=ShellExecute(句柄、零、PChar、零、零、开关显示);
如果Ret<32,则
ShowMessage(SysErrorMessage(GetLastError));
结束;
注意:通常情况下,在未检查返回值的情况下,不应调用WinAPI函数。在本例中,您将知道它是否因为PDF无法打开而无法正常工作。谢谢您的回答,但我最终找到了它(已经有几年没有使用Delphi了,忘记了它的用途) 这就是:“点击一个按钮,从一个目录中打开一个PDF文件。”
谢谢你的回答。你不是想做这样的事。过程不返回值,因此没有可用的结果。你分配给s的是胡说八道;它与PDF文件的有效名称相差甚远。以实际编译的形式发布您尝试使用的实际代码。此外,这是一个问答网站,不是问题。如果你有多个问题,创建多个帖子问他们,除非他们关系密切。在本例中,它们不是,因为一个是关于打开一个PDF,它可以与API一起工作,而第二个是关于嵌入,它不会。您是否安装了Adobe Acrobat的完整版本?我这样问的原因是,如果您这样做,就可以使用其自动化对象打开PDF文件,并在Delphi应用程序托管的窗口中显示它。如果这就是你想做的,发布一个新的q,特别询问如何做到这一点。还有其他方法,但只有此方法会像Acrobat那样呈现文档。错误处理已中断。无法对ShellExecute使用GetLastError。要正确报告,请使用ShellExecuteEx。@ArnaudBouchez他们不是指OP的第二个问题吗?@RenéHoffmann我永远不会使用HTML面板在应用程序中嵌入pdf。正确的方法是使用ActiveX IMHO,例如@ArnaudBouchez,但您同意错误答案并非无关答案。使用网络面板(我没有试过)或TWebBrowser(我知道它是有效的)可能不是最好的解决方案,但它们是一种解决方案。@RenéHoffmann看一下OP自己添加的答案。你会看到,他不是说要在应用程序中嵌入PDF,而是说要启动官方系统应用程序来打开PDF文件。@Rene Hoffmann在回答问题时没有代码-请参阅预编辑的OP问题。两人都提到了OP问题2。最后,我同意web面板是一个可怕的解决方案,但是如果由于某种原因OP找不到一个COM对象来呈现所述文档,HTML面板最终会提供所请求的功能——因此我在它前面加上“最坏情况”前缀。