【问题标题】:Can't View PDF Embedded Url From Azure Storage无法从 Azure 存储查看 PDF 嵌入式 URL
【发布时间】:2014-01-04 15:15:01
【问题描述】:

所以我出于某种原因无法查看此工作 url 到 pdf:

<object data="https://allpro.blob.core.windows.net/temp/9212-9292MiramarRd-Prelim-12-17-2013.pdf" type="application/pdf" width="100%" height="100%"></object>

<embed src="https://allpro.blob.core.windows.net/temp/9212-9292MiramarRd-Prelim-12-17-2013.pdf" width="500" height="375">

我正在使用 PdfObject 库将我的网址嵌入到我的网页中。如您所见,网址可以正常工作: https://allpro.blob.core.windows.net/temp/9212-9292MiramarRd-Prelim-12-17-2013.pdf

【问题讨论】:

    标签: javascript azure azure-storage


    【解决方案1】:

    试试看。

    <iframe src="http://docs.google.com/gview?url=Your pdf URL &embedded=true" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen style="width: 100%; height: 100%;">
    </iframe>
    

    【讨论】:

    • 这行得通,虽然我不明白为什么我不能使用 PDFObject,但如果用户没有 Google 帐户怎么办?如果您没有注意到,那么 docs.google.com 将无法正常工作。我花了一段时间才意识到这一点。
    【解决方案2】:

    我注意到关于 PDF 文件的一件事是它的内容类型设置为application/octet-stream(我在 Fiddler 中检查过)。

    当我在 Chrome 或 Mozilla 中直接输入 PDF 文件的 URL 时,它会提示我保存文件,而不是在浏览器中显示它。尝试在 IE 中打开您的页面,它应该可以正常工作(从这个意义上说,IE 更宽容)。要使其在其他浏览器中正常工作,只需将 blob 的内容类型更改为 application/pdf,您应该会看到 embedobject 标记正常工作。

    【讨论】:

    • 我无法将 pdf 托管在 Azure 存储上,我没有那种控制权。我使用谷歌文档查看器来解决我的问题,不过感谢您提供的信息。
    • 不是针对现有文件,而是针对未来文件,您可以确保在上传文件时正确设置内容类型属性。最常用的 Blob 存储管理工具应该能够为您妥善处理。
    【解决方案3】:

    据我所知,无论是否有 Google 帐户。 以下是使用对象标签的来源。尝试参考它。

    <object data="YOUR PDF URL#status=1&menubar=0&toolbar=0&location=0&resizable=1&scrollbars=1" type="application/pdf" width="100%" height="100%">
            <param name="src" value="YOUR PDF URL#status=1&menubar=0&toolbar=0&location=1&resizable=1&scrollbars=1" />
    </object> 
    

    【讨论】:

    • 正如你在我的问题中看到的那样, 对我不起作用
    【解决方案4】:

    我放弃了这个问题,因为我在使用 Object/Embed 时遇到了同样的问题,并且在使用 PdfObject 时遇到了一些奇怪的行为。

    事实证明,我没有使用正确的 ContentType 将上传的文件标记到 Azure Blob。上传已将文件设置为“application/octet-stream”,需要为“application/pdf”

    我不得不添加一些额外的代码来强制它为正确的内容类型 - 之后我可以毫无问题地嵌入。 PdfObject 现在也可以正确显示它,而不是下载文件。

    // Set correct ContentType
    var blobHttpHeader = new BlobHttpHeaders();
    blobHttpHeader.ContentType = "application/pdf";
    destBlobClient.SetHttpHeaders(blobHttpHeader);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2016-02-05
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多