iText 7 - HTML 到 PDF 写入 MemoryStream 而不是文件

2024-01-29

我正在使用 iText 7,特别是HtmlConverter.ConvertToDocument方法,将 HTML 转换为 PDF。问题是,我真的不想在我的服务器上创建 PDF 文件,我宁愿在内存中完成所有操作,然后将其发送到用户浏览器,以便他们可以下载它。

谁能向我展示如何使用这个库的示例,而不是写入文件写入 MemoryStream,以便我可以将其直接发送到浏览器?

我一直在寻找示例,我似乎能找到的只是那些引用文件输出的示例。

我已尝试以下操作,但不断收到有关无法访问关闭的内存流的错误。

public FileStreamResult pdf() {
    using (var workStream = new MemoryStream())
    using (var pdfWriter = new PdfWriter(workStream)) {
        pdfWriter.SetCloseStream(false);
        using (var document = HtmlConverter.ConvertToDocument(html, pdfWriter)) {
            //Returns the written-to MemoryStream containing the PDF.   
            byte[] byteInfo = workStream.ToArray();
            workStream.Write(byteInfo, 0, byteInfo.Length);
            workStream.Position = 0;

            return new FileStreamResult(workStream, "application/pdf");
        }
        //return new FileStreamResult(workStream, "application/pdf");
    }
}

你干涉workStream之前document and pdfWriter已完成在其中创建结果。此外,您干预的意图尚不清楚,首先您从内存流中检索字节,然后将它们写回其中......?

public FileStreamResult pdf()
{
    var workStream = new MemoryStream())

    using (var pdfWriter = new PdfWriter(workStream))
    {
        pdfWriter.SetCloseStream(false);
        using (var document = HtmlConverter.ConvertToDocument(html, pdfWriter))
        {
        }
    }

    workStream.Position = 0;
    return new FileStreamResult(workStream, "application/pdf");
}

顺便说一句,因为你基本上没有做任何特别的事情document由返回HtmlConverter.ConvertToDocument,你可能可以使用不同的HtmlConverter代码中开销较少的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iText 7 - HTML 到 PDF 写入 MemoryStream 而不是文件 的相关文章

随机推荐

  • UINavigationController 横向模式下的后退按钮问题?

    我的iPhone应用程序之前支持纵向模式 现在我想也支持横向模式 除了导航控制器后退按钮之外 我的应用程序中的一切都工作正常 我在导航控制器中使用了表格视图 当我在横向模式下单击后退按钮时 视图会弹出并加载以前的视图 但动画很奇怪 我已经给
  • Angularjs 列表和详细视图

    这是我的基本场景 对于项目列表 摘要视图 我想显示在同一页面上单击的项目的详细信息视图 我拿了这个jsfiddleexample http jsfiddle net pkozlowski opensource 65Cxv 7 并将其改造成这
  • 如何通过自动显式查看类型推断的结果?

    我最近正在研究C 11 14的自动功能 出于教育目的 我想明确显示我的代码的类型推断结果 我尝试了 typeid name 但我发现这种方法有两个问题 输出有时难以理解 例如 NSt3 16vectorIiNS 9allocatorIiEE
  • 如何用JQuery实现FLXHR进行跨域交互

    我正在使用 JQuery FLXHR 从跨浏览器获取数据 下面是示例jquery代码 set up the domain that we re going to call and tell flXHR not to try to parse
  • 创建全天活动失败

    我正在尝试创建一个全天活动 let foobar any subject calendarEvent Title v5 body contentType HTML content calendarEvent calendarEvent De
  • 代码覆盖率和分析之间的区别

    代码代码覆盖率和分析之间有什么区别 这是最好的代码覆盖率开源工具 代码覆盖率是对代码已运行量的评估 这用于查看测试对代码的执行情况 分析用于查看代码各个部分的执行情况 这些工具取决于您使用的语言和平台 我猜你正在使用Java 所以推荐代码覆
  • 什么是 stdole2.tlb

    stdole32 tlb 包含所有基本类型定义 如果我们使用 MIDL 则每个库都必须导入它 但是当我创建 ATL DLL 项目时 lib 文件看起来像这样 import oaidl idl import ocidl idl uuid 4C
  • SOA 服务设计/身份验证

    我对 SOA 相当陌生 因此正在尝试 目前 对我来说最大的问题是身份验证 我目前的想法涉及以下内容 客户端向身份验证 用户服务发送某种身份验证消息 该服务查询数据库 如果找到用户并且密码有效 它将使用会话 ID 进行响应 该 ID 将用于所
  • 在 IIS 中运行发布的网站时出现 NullReferenceException

    我有一个在将其添加到 IIS 之前发布的网站 之后我将发布的网站设置为 IIS 中的默认网站 当我通过表单插入值时 出现错误 对象引用未设置为对象的实例 网站在IIS中运行而不发布时没有问题 使用数据网格插入值时会发生错误 错误信息如下 应
  • mode=remoteOnly 的 ASP.NET customErrors 和 global.asax 处理异常

    我在 Web 配置文件中设置了自定义错误 如下所示
  • 使用正则表达式匹配记录中的名称、对话和动作

    给定如下所示的字符串对话 我需要找到与每个用户对应的句子 text CHRIS Hello how are you PETER Great you PAM He is resting PAM SHOWS THE COUCH PETER IS
  • 我可以生成没有绑定和服务信息的 WSDL 文件吗?

    我遇到一个问题 客户可以使用 net beans 以及在 NET 中打开 SAP WSDL 但不能在 SOAPUI 中打开 当我检查 WSDL 时 我发现服务和绑定标签未定义或不包含此类标签 WSDL 以端口类型信息结束 在 SOAPUI
  • 如何为Python制作一个具有良好图形效果的.exe?

    我有一个 Python 应用程序 我决定创建一个 exe 来执行它 这是我用来执行 exe 的代码 coding cp1252 from distutils core import setup import py2exe sys os sy
  • “workbooks.worksheets.activate”有效,但“.select”无效

    谁能告诉我为什么当我引用特定的工作表时我可以使用 workbooks A worksheets B activate but not workbooks A worksheets B select 您无法选择非活动工作簿中的工作表 您必须首
  • ASP.NET Core 在开发环境中禁用身份验证

    是否可以在 ASP NET Core 应用程序中 禁用 身份验证而不更改其逻辑 我有一个 net 网站 它使用外部身份服务器应用程序进行身份验证 无论如何 我希望能够在开发时模拟身份验证 ASPNETCORE ENVIRONMENT Dev
  • 使用 pm2 在同一节点上运行多个节点实例

    我想使用 pm2 在单个服务器上运行 2 个 node js 应用程序 这些应用程序需要通过 puppet 进行部署 请您告知这是否可能 问候 巴拉 您可以通过 pm2 将相同的 Nodejs 应用程序作为集群运行 https github
  • JsonPatchDocument 到复杂的实体框架跟踪对象上

    我正在尝试使用 Json 补丁来更新存储在实体框架数据上下文中的实体 我有像这样的实体类 public class Customer public Guid Id get set public string Name get set pub
  • application:openURL:options: 打开通用链接后未调用

    我已经使用 Branch SDK 设置了通用链接 这些链接可以正确打开应用程序 并且application continueUserActivity restorationHandler 被调用 但不是 application openUR
  • 如何从asp.net core 1.1项目生成类图

    我收到这个错误 打开 classdiagram cd 文件时 https i stack imgur com OKIyH png 使用以下命令手动创建 classdiagram cd 文件
  • iText 7 - HTML 到 PDF 写入 MemoryStream 而不是文件

    我正在使用 iText 7 特别是HtmlConverter ConvertToDocument方法 将 HTML 转换为 PDF 问题是 我真的不想在我的服务器上创建 PDF 文件 我宁愿在内存中完成所有操作 然后将其发送到用户浏览器 以