How to save or open a pdf file in pdf Viewer from response titanium

ⅰ亾dé卋堺 提交于 2019-12-25 09:43:02

问题


I want to open pdf file on click.

I tried below code but it didn't help me. It is giving error could not read file

var xhr = Ti.Network.createHTTPClient({
    onload : function(e) {
        var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, 'file.pdf');
        Ti.API.info('file == ' + f);
        Ti.API.info('response = ' + this.responseData);
        Ti.API.info('response = ' + JSON.stringify(this.responseData));
        f.write(this.responseData);
        Ti.API.info('write file == ' + f.write(this.responseData));
        Ti.API.info('filepath == ' + f.nativePath);
        Ti.API.info('get filepath == ' + f.getNativePath());
        Ti.Android.currentActivity.startActivity(Ti.Android.createIntent({
            action : Ti.Android.ACTION_VIEW,
            type : 'application/pdf',
            data : f.nativePath
        }));
    },
    onerror : function(e) {
        Alloy.Globals.loading.hide();
        alert("Cannot retrieve PDF form web site");
    },
    timeout : 5000
});

xhr.open('GET', "https://www.mbta.com/uploadedfiles/Documents/Schedules_and_Maps/Rapid%20Transit%20w%20Key%20Bus.pdf");
xhr.send();

But I am getting Error as The document path is not valid.

I tried different way also using webview still not getting pdf on my app.

var win = Ti.UI.createWindow({
    backgroundColor : '#fff'
});

var pdfViewer = Ti.UI.createWebView({
    url : "http://lkn.ccomsys.com/assets/media/datafiles/gov/vvvv_Shehnai_Order1.pdf",
    width : Titanium.UI.SIZE,
    height : Titanium.UI.SIZE
});
Ti.API.info('pdfviewer == ' + JSON.stringify(pdfViewer));
win.add(pdfViewer);

win.open();

Thanks in advance.


回答1:


I sorted this out

Step 1 : Created directory and file.

Step 2 : Write response to created file.

Step 3 : Open pdf with android intent.

Below is the complete code

var xhr = Ti.Network.createHTTPClient({
    onload : function(e) {
        Alloy.Globals.loading.hide();
        var Settings = Titanium.Filesystem.getFile(Titanium.Filesystem.tempDirectory, 'Settings');
        Ti.API.info("Created Settings: " + Settings.createDirectory());
        Ti.API.info('Settings ' + Settings);
        var newFile = Titanium.Filesystem.getFile(Settings.nativePath, 'Setting.pdf');
        Ti.API.info('new file == ' + newFile);
        if (newFile.exists() === false) {
            // you don't need to do this, but you could...
            newFile.write(this.responseData);
        }

        Ti.API.info('response = ' + this.responseData);
        Ti.API.info('response = ' + JSON.stringify(this.responseData));

        if (newFile.exists()) {
            newFile.write(this.responseData);
            Ti.API.info('newfile: ' + newFile.read());
        }
        Ti.Android.currentActivity.startActivity(Ti.Android.createIntent({
            action : Ti.Android.ACTION_VIEW,
            type : 'application/pdf',
            data : newFile.nativePath
        }));
    },
    onerror : function(e) {
        Alloy.Globals.loading.hide();
        alert("Cannot retrieve PDF form web site");
    },
    timeout : 5000
});

xhr.open('GET', "https://www.mbta.com/uploadedfiles/Documents/Schedules_and_Maps/Rapid%20Transit%20w%20Key%20Bus.pdf");
xhr.send();


来源:https://stackoverflow.com/questions/44328030/how-to-save-or-open-a-pdf-file-in-pdf-viewer-from-response-titanium

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!