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对象-快速搜索生成了以下内容:,但似乎还

我想知道如何做:

  • 单击按钮,从目录中打开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对象-快速搜索生成了以下内容:,但似乎还有其他内容

    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面板最终会提供所请求的功能——因此我在它前面加上“最坏情况”前缀。