gpt4 book ai didi

c# - 从内存 ASP.Net 加载 PDF

转载 作者:行者123 更新时间:2023-11-30 17:22:58 25 4
gpt4 key购买 nike

我正在使用 ITextSharp 即时生成 pdf,然后将其保存到磁盘并使用 Frame 显示它。

Frame 有一个名为 src 的属性,我在其中传递生成的文件名。

一切正常,我想要实现的是将生成的 pdf 文件传递​​给 Frame,而不将其保存到磁盘。

HtmlToPdfBuilder builder = new HtmlToPdfBuilder(PageSize.LETTER);
HtmlPdfPage first = builder.AddPage();

//import an entire sheet
builder.ImportStylesheet(Request.PhysicalApplicationPath + "CSS\\Stylesheet.css");
string coupon = CreateCoupon();
first.AppendHtml(coupon);

byte[] file = builder.RenderPdf();
File.WriteAllBytes(Request.PhysicalApplicationPath+"final.pdf", file);
printable.Attributes["src"] = "final.pdf";

最佳答案

我已经完全按照您的要求做了。您需要创建一个处理程序 (.ashx)。创建 PDF 后,使用以下代码将其加载到处理程序中:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class MapHandler : IHttpHandler, IReadOnlySessionState
{

public void ProcessRequest(HttpContext context) {
CreateImage(context);
}

private void CreateImage(HttpContext context) {

string documentFullname = // Get full name of the PDF you want to display...

if (File.Exists(documentFullname)) {

byte[] buffer;

using (FileStream fileStream = new FileStream(documentFullname, FileMode.Open, FileAccess.Read, FileShare.Read))
using (BinaryReader reader = new BinaryReader(fileStream)) {
buffer = reader.ReadBytes((int)reader.BaseStream.Length);
}

context.Response.ContentType = "application/pdf";
context.Response.AddHeader("Content-Length", buffer.Length.ToString());
context.Response.BinaryWrite(buffer);
context.Response.End();

} else {
context.Response.Write("Unable to find the document you requested.");
}
}

public bool IsReusable {
get {
return false;
}
}

关于c# - 从内存 ASP.Net 加载 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com