0

一般问题:我有一些代码需要 PDF 文件的 URL。它似乎适用于我在网上找到的 URL,但不适用于我自己创建的 URL。

例如,当我使用来自Xamarin的随机 URL 时,它可以正常工作,但是当我尝试从DropBoxAmazon 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 做了什么?正如评论中指出的那样,是因为httpvshttps吗?

我完全迷路了。我错过了一些简单的东西吗?你有没有其他方法来创建 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 ReaderURL 打开它。

感谢大家的帮助!

4

1 回答 1

1

在我看来,前两个 URL 直接链接到 PDF 文件,但后一个,即。Amazon Cloud Drive 上的那个链接到一个页面,该页面再次链接到 PDF。我建议以下潜在的解决方案:

  1. 找到一种可靠的方法来提取直接 url 到云驱动器上的文档。该文档的链接不是您提供的链接,而是:link。也许亚马逊有关于如何避免使用 html 界面以检索文件的文档。我根本不熟悉云驱动器。请注意,提供的 url 附加了一些时间限制的令牌。
  2. 将文档托管在您拥有更多控制权的基础架构上。IE。设置您自己的 Web 服务器并在那里托管文档。或者使用另一个云存储提供商,它使您能够直接链接到文件。
于 2013-10-10T08:20:34.377 回答