wangshun_pj 发表于 2019-2-17 06:10:45

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.


页: [1]
查看完整版本: fmx Delphi Android环境下打开PDF格式文件,如果你是高手就忽....