2Pascal-新时代的Pascal

 找回密码
 立即注册
搜索
热搜: fastreport
查看: 1946|回复: 0
打印 上一主题 下一主题

fmx Delphi Android环境下打开PDF格式文件,如果你是高手就忽....

[复制链接]

3

主题

9

帖子

129

积分

注册会员

Rank: 2

积分
129
跳转到指定楼层
楼主
发表于 2019-2-17 06:10:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
京东购书支持本站
本帖最后由 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.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|新时代Pascal论坛

GMT+8, 2024-12-31 01:48 , Processed in 0.062683 second(s), 25 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表