我尝试在本地存储设备上打开移动设备上的PDF文件。
我把文件放到:
适用于iOS的StartUp \ Documents \
assets \ internal \ for Android
使用此代码:
filename := TPath.Combine(TPath.GetDocumentsPath, 'file.pdf');
WebBrowser1.Navigate('file://' + filename);
iOS上的工作正常...正确打开pdf
在Android上...没有..没有错误..没有pdf ...如果我尝试打开一个html文件..工作正常。
有什么建议吗?
安东内
答案 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公开发布所需的许可,但即使在此之前我必须找到时间进行清理,制作一个真实的组件,例子......