小编Djo*_*vic的帖子

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

我正在使用 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

c# itext itext7

3
推荐指数
1
解决办法
1万
查看次数

CreateDelegate:“无法绑定到目标方法,因为其签名与委托类型的签名不兼容。”

我遇到了一个我不明白的奇怪问题。

我想做的事情非常简单:动态加载程序集,找到具有预定义名称的事件并挂钩到该事件。

执行此操作的代码很简单:

private void AttachToEvent(Type type)
{
    if (type == null) return;

    foreach (var @event in type.GetEvents())
    {
        if (@event.Name != EVENTNAME) continue;

        var eventHandler = typeof(Handler).GetMethod(DELEGATEMETHOD, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);

        if (@event == null || eventHandler == null) return;

        var @delegate = Delegate.CreateDelegate(@event?.EventHandlerType, eventHandler);

        @event.AddEventHandler(type, @delegate);
    }
}
Run Code Online (Sandbox Code Playgroud)

定义DELEGATEMETHOD如下:

public void LogHandler(DateTime dateTime, string connectorName, string severity, string details)
{
  // do something with the received log event...
}
Run Code Online (Sandbox Code Playgroud)

在加载的程序集中,事件定义如下:

public delegate void LogHandler(DateTime dateTime, …
Run Code Online (Sandbox Code Playgroud)

c#

2
推荐指数
1
解决办法
5121
查看次数

标签 统计

c# ×2

itext ×1

itext7 ×1