在Windows Phone中打开PDF文件

时间:2013-03-24 22:47:47

标签: windows-phone-7 cordova windows-phone

我正在为Windows Phone 7开发一个应用程序,我正在使用Phonegap模板。 一切看起来都很完美,但现在我一直试图在浏览器中打开PDF文件。 我尝试了以下但是这不起作用,因为PDF的url超过了2048个字符限制(它是一个数据URL)。此代码在触发deviceReady事件后运行。

var ref = window.open('http://www.google.com', '_blank', 'location=no');
ref.addEventListener('loadstart', function () { alert(event.url); });

现在,我正在尝试将PDF文件保存到存储中,然后我试图通过浏览器打开它,但浏览器没有显示任何内容。我正在编辑来自cordovalib的InAppBrowser.cs代码,并在调用browser.Navigate(loc);

之前添加了以下行。
private void ShowInAppBrowser(string url)
{
    IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
    FileStream stream = store.OpenFile("test.pdf", FileMode.Create);
    BinaryWriter writer = new BinaryWriter(stream);
    var myvar = Base64Decode("the big data url");
    writer.Write(myvar);
    writer.Close();

    if (store.FileExists("test.pdf")) // Check if file exists
    {
        Uri loc = new Uri("test.pdf", UriKind.Relative);
        ...
    }
}

此代码返回以下错误: 日志:“错误回调错误:InAppBrowser1921408518 = TypeError:无法获取属性'url'的值:object为null或undefined”

我不想使用ComponentOne。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

您无法从PDF文件的默认阅读器中的独立存储中打开pdf文件。如果文件在线,例如它有一个URI,您可以使用WebBrowserTask打开它,因为它将在Adobe Reader中下载并打开该文件。

在Windows Phone 8上,您实际上可以在该扩展程序的默认文件阅读器中打开自己的文件,但我不确定这对您有何帮助,因为您的目标是PhoneGap和Windows Phone 7。

答案 1 :(得分:1)

托尼是对的。您可以尝试构建自己的查看器(这与使用C1相同,但需要更多时间)。我在WP7的iTextSharp和PDFSharp端口上工作,但两者都不是PDF查看器。它们适用于创建PDF并对其进行解析(但要渲染它们需要更多工作)。这是我的个人追求,但老实说,我得到的最好的是能够从PDF中提取一些图像(而不是文本)

答案 2 :(得分:0)

试试这个

var installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
var assets = await installedLocation.GetFolderAsync("Assets");
var pdf = await assets.GetFileAsync("metro.pdf");
Windows.System.Launcher.LaunchFileAsync(pdf);

这在我的设备上正常工作。

相关问题