2Pascal-新时代的Pascal

标题: fmx Delphi Android环境下打开PDF格式文件,如果你是高手就忽.... [打印本页]

作者: wangshun_pj    时间: 2019-2-17 06:10
标题: fmx Delphi Android环境下打开PDF格式文件,如果你是高手就忽....
本帖最后由 wangshun_pj 于 2019-2-18 06:44 编辑

在Android环境下打开PDF格式文件,网上有专门的控件可以直接打开需要花钱买,在ios中也可以用Webbrowse打开,
我研究了一下,最后采用的一个免费的,虽然打开时需要借助第三方,毕竟是实现了功能。
首先,从服务器上下载文件到手机,
然后,打开手机中的文件。
------------------------------------------------------------------------------
第三方提供的是 UExternalFileViewer, 还有openUrl()方法,但我实验没有成功。


unit Unit1;
interface
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation,
  FMX.StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    function downloadFile(sUrl, fileName: string): string;
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.fmx}
uses
  System.IOUtils,UExternalFileViewer,IdHTTP;
procedure TForm1.Button1Click(Sender: TObject);
var
  sUrl,sFile, fileName: string;
  FViewer: TExternalFileViewer;
begin
  FViewer := TExternalFileViewer.Factory(self, self);
  //服务器中的文件
  sUrl := 'http://192.168.0.159/pj/qx/public/upload/2019-02-15/ww.pdf' ;
  sFile := downloadFile(sUrl,fileName); //将文件保存手机中
  //打开手机中的本地文件
  FViewer.OpenFile(sFile);
end;
function TForm1.downloadFile(sUrl,fileName: string): string;
var
  sFile: string;
  FIdHttp : TIdHTTP;
  filestream:TFileStream;
  Stream: TStream;
begin
  //sUrl := 'http://192.168.0.159/pj/qx/public/upload/2019-02-15/5c66376b76560.pdf' ;
  FIdHttp := TIdHTTP.Create(nil);
  Stream := TStringStream.Create('');
  sFile := TPath.Combine(TPath.GetDocumentsPath, fileName);  //存在手机的文件位置
  filestream := TFileStream.Create(sFile, fmCreate or fmShareDenyWrite);
  try
    FIdHttp.Get(sUrl,Stream);
    Stream.Position := 0;
    filestream.CopyFrom(Stream, Stream.Size);  //保存
    result := sFile;//返回本地的路径和文件名
  finally
    FreeAndNil(filestream);
    Stream.Free;
    FIdHttp.Disconnect;
  end
end;
end.







欢迎光临 2Pascal-新时代的Pascal (http://2pascal.com/) Powered by Discuz! X3