当前位置: 首页 > 知识库问答 >
问题:

在“新建”选项卡中打开生成的pdf文件,而不是下载..Web API

壤驷志学
2023-03-14

.NET 4.6.1 C#

我在运行时生成一个pdf文件,并可以成功下载。我想在一个新的选项卡中打开新创建的pdf文件,而不是下载它。下面是我的代码(Web API 2.1方法):

  public HttpResponseMessage ToPDF(string cn)
    {

        var stream = new MemoryStream();
            stream = GeneratePDF();


        var result = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(stream.ToArray())
        };
        result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
        {
            FileName = "file.pdf"
        };
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");


        return result;


    }

我以为这会奏效,但行不通。我的锚标签上也有target=“_blank”。我如何在一个新的选项卡中打开我新生成的pdf文件,而不是浏览器想要下载到用户的硬盘驱动器?谢谢

共有1个答案

越鸿才
2023-03-14

除了David Mkheyan建议设置适当的MIME类型之外,您还需要将内容配置从附件更改为内联

result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue(System.Net.Mime.DispositionTypeNames.Inline)
    {
        FileName = "file.pdf"
    };

根据https://www.iana.org/assignments/cont-disp/cont-disp.xhtml附件表示“用户控制的显示”,内联表示“自动显示”。

 类似资料:
  • 场景: 我有一个应用程序,比如A:当我们登录到A时,我们有一个链接,比如B,点击它将打开一个新的浏览器。在browser B中,我们有一个链接可以打开PDF格式。一旦点击,该PDF将作为URL在第二个标签中打开,我们已经打开了A页。 } 场景2:我可以强制应用程序打开一个新的PDF浏览器窗口,但我无法打开新PDF URL的特定窗口。我将尝试以下内容并给出我的观察:

  • 问题内容: 我有一个选择框,当选择一个项目时会调用。Firefox默认会在新标签页中打开页面。但是,我希望页面在新窗口中打开,而不是在新标签页中打开。 我该怎么做? 问题答案: 给窗口一个“ specs”参数,该参数的宽度/高度为 有关所有可能的选项。 指定宽度/高度时,它将在新窗口(而不是选项卡)中打开它。

  • 我遇到了一个有用的PDF生成代码,用于在Spring MVC应用程序中向客户机显示文件(“使用Spring MVC返回生成的PDF”): 我添加了一个声明,该方法返回一个PDF文件(“Spring 3.0 Java REST return PDF Document”):。 我的问题是,当上面的代码执行时,它立即要求客户机保存PDF文件。我希望PDF文件首先在浏览器中查看,这样客户端就可以决定是否保

  • 问题内容: 我正在使用Selenium WebDriver。每个链接都会在新的浏览器窗口中打开。这对我来说不方便。如何更改它以便仅在新选项卡中打开? 问题答案: 硒目前无法切换标签。因此,我们迫使浏览器在新窗口中打开链接,但是由于我们能够切换窗口,因此我们迫使浏览器采用这种方法。这 可能 会在更高版本中修复

  • 我正在使用Selenium WebDriver。每个链接都在一个新的浏览器窗口中打开。对我来说不方便。我如何更改它,使它只在新选项卡中打开?

  • 我使用的是pdfbox图书馆2.0版本。我需要在新的浏览器选项卡,即打印视图中打开PDF。 就像我们正在从iText迁移到PDFBox,下面是iText的现有代码。 在下面的代码中,有PDPATION类来实现同样的功能。是的, 并且要在doc上应用print Javascript, 引用链接 请用这个指引我。