ASP.NET MVC 从 byte[] 生成 PDF

2023-12-19

在发布此消息之前,我看了很多帖子,但很少有人直接关闭说他们需要查看常见问题解答,很少有人给出使用 iTextSharp 或其他东西的解决方案。但没有一个能解决我的问题。我的问题是我有一个byte[] 并且我需要在新的子窗口中生成 PDF. 我们只使用 ASP.NET MVC 4,没有 iTextSharp 或类似的。如果已经有与此完全匹配的帖子,请告诉我。我可以创建新的部分视图

我的部分视图中有一张 PDF 图标图像。当用户单击它时,我需要在新的浏览器窗口中显示 PDF。我可以成功调用 JavaScript 函数,该函数调用从另一台服务器获取文件的控制器。我什至可以将文件转换为字节数组。我想在新的浏览器窗口中以 PDF 格式显示这个字节数组。

在视图中我有如下所示的 PDF 图标

<img onclick="ShowCDinPDF('@Url.Action("ShowPDF", "MyController", new {personid= personid} )','', '920','500')" />

ShowCDinPDF 在我的 javascript 中,如下所示

function ShowCDinPDF(popUpURL, windowProperties, w, h) {    
var childWindow = window.showModelessDialog(popUpURL, "", "");   
}

在我的控制器中,我有以下 ShowPDF 方法

public ActionResult ShowPDF(string personid)
{ 
   //call service and get data
   string fileContent = response.FileContent;
   byte[] data = Convert.FromBase64String(fileContent);

   **// Here using data I need to show PDF in new window**

}

请告诉我如何创建 PDF。

UPDATE

我进步甚微。现在我的代码如下所示。将打开一个新窗口,并收到带有消息的错误弹出窗口文件不以“%PDF-”开头。我试图找到解决方案,但没有成功。

 public ActionResult ShowPDF(string personid)
 { 
     //call service and get data
     string fileContent = response.FileContent;
     byte[] data = Convert.FromBase64String(fileContent);

     using (MemoryStream memoryStream = new MemoryStream())
      {
          Response.ClearHeaders();
          Response.ClearContent();
          Response.Charset = "";
          Response.AddHeader("Content-Type", "application/pdf");
          memoryStream.Write(data, 0, data.Length);
          memoryStream.WriteTo(Response.OutputStream);
          Response.Flush();
          Response.Close();
          Response.End();
     }
    return View();
 } 

提前致谢。

UPDATE 2

我尝试了很多但没有用。由于我们临近生产截止日期,我们的团队决定在我们的服务器中创建 PDF 文件并在 IE 浏览器中启动该文件。

NOTE

我真的不知道为什么这被否决了。是否有人可以渲染 PDF 格式的文件,而无需在任何物理位置存储/创建 PDF 文件。 为什么投反对票?


假设您拥有的字节数组代表一个有效的 PDF,那么在您的控制器操作中,您可以通过返回具有正确 Content-Type 响应标头的正确 ActionResult 来提供此 PDF:

public ActionResult ShowPDF(string personid)
{ 
    //call service and get data
    string fileContent = response.FileContent;
    byte[] data = Convert.FromBase64String(fileContent);

    **// Here using data I need to show PDF in new window**
    return File(data, "application/pdf");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 从 byte[] 生成 PDF 的相关文章

  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 将复杂类型数组添加到 RouteValueDictionary

    我想知道是否有一种优雅的方法将复杂类型数组添加到 RouteValueDictionary 或兼容类型 例如 如果我有一个类和一个操作 public class TestObject public string Name get set p
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 私有模板函数

    我有一堂课 C h class C private template
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?

    我试图尝试将 Protobuf ValueProviderFactory 添加到 MVC3 以便我可以选择 MIME 类型并将原始数据反序列化为操作参数的对象 我还可以使用它来更改默认的 Json 序列化器 看着JsonValueProvi
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi

随机推荐

  • 使用 $in 查询更新 mongodb?

    我有三个数组 coupon ids id counter 和increase ctr 现在 任何索引处的 coupon id 值都出现在 id counter 和increase ctr 中的同一索引处 因此 对于 coupon id 58
  • 拖放 Datagridview Winform C# 的行

    我想将行从同一网格视图中的某个位置拖动到另一个位置 其他行应根据拖放自动调整 谢谢 在应用程序中进行拖放操作时 我更喜欢使用鼠标事件而不是实际的拖放事件 1 未绑定示例 这是一个简单的示例 使用鼠标事件在显示行时拖动行Cell值在一个Lab
  • 扩展 Doctrine Entity 以添加业务逻辑

    我正在尝试实践良好的设计并扩展 Doctrine 实体 我的扩展类 基本上是模型 将具有额外的业务逻辑 对实体基本数据的访问 我正在使用 Doctrine 2 2 1 和 Zend Framework 1 11 4 和 php 5 3 8
  • Google Sheet 脚本显然没有返回数字

    我正在用 Google Script 编写我的第一个自定义函数 一切都在调试中运行良好 我的代码运行 显然 完美 已经写了一个函数 CONVERT RACETIME TO SECONDS 它接受特定格式的字符串 然后返回秒数 然后 该函数应
  • 如何快速了解 SQLite 中的表结构?

    是否有类似 显示 TABLENAME 中的列 之类的命令 我只知道 dump 命令 但在这种情况下这真的很愚蠢 它还会输出所有数据 我需要一些东西来查看表结构 你需要使用一个PRAGMA http www sqlite org pragma
  • Angular 2:在所有组件中使用的函数

    我有一个 Angular 2 webpack 项目 其中目前有一些在多个组件中重复的功能 我想从 主 类或组件 以有效者为准 继承所有这些组件 以便能够从所有需要它们的组件中调用我的函数 举个例子 如果我在 3 个不同的组件中有一个函数 f
  • android studio 下载 windows XP

    我一直在尝试下载Android Studio过去一周左右 但一直没能做到 我还在奔跑windows XP on a Dell d430 如果有帮助的话 提取文件时发生错误 如果您可以提供一个可以下载 android studio 的链接Wi
  • 如何确定我们来自哪个活动?

    老体育你好 到目前为止 我有 3 项活动如下 活动A 活动B 活动C 在活动 A 中 我创建了前往活动 C 的意图 Intent intent new Intent getActivity C class startActivity int
  • 如何更新“更新程序”? (C#)

    我有一个由两个程序组成的程序 Updater 和 WorkMaker 每当 WorkMaker 有更新时 更新程序都会终止它 下载更新 然后再次运行它 但假设我想出了新的更新程序 我该如何更新它 通过WorkMaker 通过第三个程序 谢谢
  • 如何获取行中的所有非空单元格数据 - Google Sheets 脚本编辑器

    我不确定这是否可能 而且说实话 我没有尝试很多事情 因为我不知道从哪里开始 顺便说一句 我正在使用 Google Sheets 中的脚本编辑器 我知道有 SpreadsheetApp getRange 和另一个来获取值或类似的东西 但我想要
  • 在 WPF RichTextBox 中将特定文本设置为粗体

    我正在扩展 WPF Richtextbox 的功能 我希望某些文本在输入时变为粗体 我能够将某些文本变为粗体 但粗体单词后面的文本也会变为粗体 这是我的代码示例 private bool Running false void CustomR
  • Polly 重试单元测试

    我正在使用 polly 来处理重试 参见下面的代码 如何对 polly 重试进行单元测试 使用 xunit 和最小起订量 services AddHttpClient GitHub client gt client BaseAddress
  • include、require 和相对路径

    我不知道为什么我总是遇到很多问题 无论如何 这是我想要的文件的路径 var www vhosts mysite com htdocs Classes DBConnection php 这是包含 require 语句的文件的路径 var ww
  • 替换来自 android webservice 的数据中的图像

    Hi all How can i replace the text or symbol from web service with local images in drawable folder 我从网络服务中获取符号和文本 我需要用保存在
  • 如何在Azure中搜索包含引号的文本(转义单引号)?

    我有一个关于 azure 搜索的查询 如下所示 results indexClient Documents Search
  • 在写入文件时从文件中读取数据

    我正在使用一个专有的 Java 库 它将其数据直接保存到java io File 但我需要能够读取数据 以便直接进行流式传输 数据是二进制的 一些媒体文件 The java io File作为参数传递给这个库 但我不知道如何从中获取流 除了
  • 每 15 秒读取一次文本文件的内容

    我正在一个音乐网站工作 我在服务器上有一个文本文件 其中包含当前播放歌曲的名称 我想每十五秒读取一次文本文件 并更改我网站上显示的文本 无需刷新 现在 使用一点 jQuery 和 javascript 我实际上已经达到了第一次读取并显示文件
  • Maven 依赖 - org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Properties 上的 NoSuchMethodError

    我正在跟进这篇博文 http www baeldung com the persistence layer with spring and jpa overview设置 Hibernate 持久层 我当前的 pom xml 如下所示
  • 在 bash 中的文件末尾添加新行字符

    如何使用 bash 命令行在名为的文件末尾添加新行字符file txt 我尝试使用echo但这是不对的 你能告诉我该怎么做吗 echo gt gt file txt 在末尾添加换行符
  • ASP.NET MVC 从 byte[] 生成 PDF

    在发布此消息之前 我看了很多帖子 但很少有人直接关闭说他们需要查看常见问题解答 很少有人给出使用 iTextSharp 或其他东西的解决方案 但没有一个能解决我的问题 我的问题是我有一个byte 并且我需要在新的子窗口中生成 PDF 我们只