Delphi从ios / Android本地存储打开PDF

时间:2015-02-24 15:20:47

标签: android ios delphi pdf

我尝试在本地存储设备上打开移动设备上的PDF文件。

我把文件放到:

适用于iOS的StartUp \ Documents \

assets \ internal \ for Android

使用此代码:

filename := TPath.Combine(TPath.GetDocumentsPath, 'file.pdf');
WebBrowser1.Navigate('file://' + filename);
iOS上的

工作正常...正确打开pdf

在Android上...没有..没有错误..没有pdf ...如果我尝试打开一个html文件..工作正常。

有什么建议吗?

安东内

2 个答案:

答案 0 :(得分:4)

{$IFDEF ANDROID}
Uses
   Androidapi.JNI.GraphicsContentViewText,
   Androidapi.Helpers,
   Androidapi.JNI.JavaTypes,
   Androidapi.JNI.Net;
{$ENDIF}

procedure btnPdfClick(Sender: TObject);
var
   fName       : String;
{$IFDEF ANDROID}
   Intent      : JIntent;
   URI         : Jnet_Uri;
{$ENDIF}
begin
    fName := TPath.GetSharedDownloadsPath + PathDelim + 'test.pdf';

    {$IFDEF ANDROID}
      URI := TJnet_Uri.JavaClass.parse(StringToJString('file:///' + fName));
      intent := TJIntent.Create;
      intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
      intent.setDataAndType(URI,StringToJString('application/pdf'));
      SharedActivity.startActivity(intent);
    {$ENDIF}
end;

答案 1 :(得分:0)

可以通过XE7中的JNI birdge使用Android PDFView组件。 https://github.com/JoanZapata/android-pdfview Java2op工具可以生成所需的接口pas文件,IDE可以管理classes.dx文件中的更改,这是最简单的部分。 把它带到Delphi需要一点点工作,但它是可行的。为此,您几乎可以从delphi“webview”实现中获取代码1:1,该实现可以在FMX.Webbrowser.pas文件中的以下两个类TCustomWebBrowser和FMX.WebBrowser.Android.pas文件中的TAndroidWebBrowserService中找到。对于我的概念证明,我确实使用来自两个提及类的代码编写了一个源自TControl的TPDFViewAndroid类。因此,我正在获得Embarcaderro公开发布所需的许可,但即使在此之前我必须找到时间进行清理,制作一个真实的组件,例子......