一般问题:我有一些代码需要 PDF 文件的 URL。它似乎适用于我在网上找到的 URL,但不适用于我自己创建的 URL。
例如,当我使用来自Xamarin的随机 URL 时,它可以正常工作,但是当我尝试从DropBox或Amazon Cloud Drive生成 URL 时,它就不起作用了。
示例网址:
这些链接会打开无害的 PDF 文件。请试一试:
如您所见,在浏览器(我使用 Chrome 进行测试)中,您将打开 PDF 文档,但并非没有某种上下文(Xamarin 除外)。
代码:我正在开发,MonoTouch
我正在使用一个名为mTouch PDF Reader的组件。代码很简单:
var documentViewController = new DocumentViewController (1, "Some name here", "http://someurlhere.pdf");
ActivateController (documentViewController);
这会在我的应用程序中打开一个不错的 PDF 阅读器,但是,由于我无法使用自己创建的 URL,这对我没有帮助。这是第 3 方库,所以我无法查看代码。顺便说一句,当我使用我的一个 URL 时,代码会System.NullReferenceException
因以下堆栈跟踪而崩溃:
MonoTouch.Foundation.NSArray.FromNativeObjects (items={MonoTouch.UIKit.UIViewController[1]}, count=1) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:109
MonoTouch.Foundation.NSArray.FromNativeObjects (items={MonoTouch.UIKit.UIViewController[1]}) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:96
MonoTouch.Foundation.NSArray.FromNSObjects (items={MonoTouch.UIKit.UIViewController[1]}) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:48
MonoTouch.UIKit.UIPageViewController.SetViewControllers (viewControllers={MonoTouch.UIKit.UIViewController[1]}, direction=MonoTouch.UIKit.UIPageViewControllerNavigationDirection.Forward, animated=false, completionHandler={MonoTouch.UIKit.UICompletionHandler}) in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIPageViewController.g.cs:144
mTouchPDFReader.Library.Views.Core.DocumentViewController.ViewDidLoad () in
MonoTouch.UIKit.UIApplication.UIApplicationMain () in
MonoTouch.UIKit.UIApplication.Main (args={string[0]}, principalClassName=(null), delegateClassName="AppDelegate") in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
Exam936.Application.Main (args={string[0]}) in /Users/EdGriMac/Dropbox/Quiz/Code/Exam926/Exam936/Main.cs:16
挫败感:
有没有一种特定的方法来创建以这种方式工作的 URL?看起来 DropBox 确实做了一些不同的事情,因为它有点像 iFrames 文档或其他东西。我不知道 Amazon Cloud Drive 是做什么的。Xamarin 做了什么?正如评论中指出的那样,是因为http
vshttps
吗?
我完全迷路了。我错过了一些简单的东西吗?你有没有其他方法来创建 URL 来建议?谷歌搜索这真的很困难,因为我继续点击如何在 DropBox 中共享 URL 的示例等等......
顺便说一句,我不希望将文档作为应用程序的一部分,因为这意味着我必须创建应用程序的新版本才能更改文档中的某些内容。
更新 1:我在上面添加了链接。稍后我会尝试其他一些建议,并会留下更多更新。提前感谢您提供任何进一步的建议!
更新 2:我使用Fiddler查看每个 URL 的响应。Xamarin URL 具有Content-Type: application/pdf
,而 DropBox 和 Amazon Cloud Drive 具有Content-Type: text/html; charset=UTF-8
. 这解释了很多。我将在今天晚些时候尝试 andersr 的建议,因为我确实有一个 Web 服务器可以放置文件。
更新 3当我将 PDF 文件放在我的 Amazon EC2 服务器上时,在 IIS 中我的网站下创建了一个虚拟目录,我网站的 URL + 虚拟目录 + 文件名有效!原来Content-Type
必须是application/pdf
通过mTouch PDF Reader
URL 打开它。
感谢大家的帮助!