如何在C#中的文件夹或服务器上保存动态pdf生成器 [英] How to save dynamic pdf generator in folder or on server in C#

查看:91
本文介绍了如何在C#中的文件夹或服务器上保存动态pdf生成器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是我动态生成pdf但我想将生成的pdf存储在文件夹或服务器上。



我尝试过:



protected void Page_Load(object sender,EventArgs e)

{

if(!Page .IsPostBack)

{

// SendSMS(9766018423,亲爱的先生/妈妈,第二次上诉已成功注册登记号:MHSIC / NG / S / 2016 / 000005);

DataTable dt = new DataTable();

dt.Columns.AddRange(new DataColumn [3] {

new DataColumn (OrderId),

新DataColumn(产品),

新DataColumn(数量)});

dt。 Rows.Add(101,Sun Glasses,5);

dt.Rows.Add(102,Jeans,2);

dt.Rows.Add (103,裤子,12);

dt.Rows.Add(104,Shirts,9);

SendPDFEmail(dt);

}

}

private void SendPDFEmail(DataTable dt)

{

using(StringWriter sw = new StringWriter())

{

使用(HtmlTextWriter hw = new HtmlTextWriter(sw))

{

string companyName =ASPSnippets;

int orderNo = 2303;

StringBuilder sb = new StringBuilder();

sb.Append();

sb.Append();

sb.Append();

sb.Append();

sb .Append();

sb.Append(

< td colspan =2> 公司名称:);

sb.Append(companyName);

sb.Append(
订单表
订单号:);

sb.Append(orderNo);

sb.Append(
日期:);

sb.Append(DateTime.Now);

sb.Append(
);

sb.Append(
);

sb.Append( );

sb.Append();

foreach(dt.Columns中的DataColumn列)

{

sb.Append();

}

sb.Append();

foreach(数据行在dt中的行)。行)

{

sb.Append();

foreach(dt.Columns中的DataColumn列)

{

sb.Append();

}

sb.Append();

}

sb.Append(
);

sb.Append(column.ColumnName);

sb.Append(
);

sb.Append(row [column]);

sb.Append(
);

StringReader sr = new StringReader(sb.ToString());



文件pdfDoc =新文件(PageSize .A4,10f,10f,10f,0f);

HTMLWorker htmlparser = new HTMLWorker(pdfDoc);

using(MemoryStream memoryStream = new MemoryStream())

{

PdfWriter writer = PdfWriter.GetInstance(pdfDoc,memoryStream);

pdfDoc.Open();

htmlparser。 Parse(sr);

pdfDoc.Close();

byte [] bytes = memoryStre am.ToArray();

memoryStream.Close();

MailMessage mailMessage = new MailMessage();

MailAddress fromAddress = new MailAddress( ConfigurationManager.AppSettings [userName]);

mailMessage.From = fromAddress;

mailMessage.To.Add(ConfigurationManager.AppSettings [userName]);

mailMessage.Body =这是测试电子邮件;

mailMessage.IsBodyHtml = true;

mailMessage.Subject =Second Appeal;

System.Net.Mail.Attachment附件;





attachment = new附件(新的MemoryStream(字节), iTextSharpPDF.pdf);



mailMessage.Attachments.Ad d(附件);

SmtpClient smtpClient = new SmtpClient();

smtpClient.Host = ConfigurationManager.AppSettings [host];

smtpClient.Port = Convert.ToInt32(ConfigurationManager.AppSettings [port]);

smtpClient.Send(mailMessage);



< br $>


ScriptManager.RegisterStartupScript(this,this.GetType(),redirect,

alert('Mail Send');,真的);



}

}

}

}

my problem is that i m generating pdf dynamically but i want to store the generated pdf in folder or on server.

What I have tried:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// SendSMS("9766018423", "Dear Sir/Mam , Second Appeal Disposed successfully for Registration No :MHSIC/NG/S/2016/000005");
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] {
new DataColumn("OrderId"),
new DataColumn("Product"),
new DataColumn("Quantity")});
dt.Rows.Add(101, "Sun Glasses", 5);
dt.Rows.Add(102, "Jeans", 2);
dt.Rows.Add(103, "Trousers", 12);
dt.Rows.Add(104, "Shirts", 9);
SendPDFEmail(dt);
}
}
private void SendPDFEmail(DataTable dt)
{
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
string companyName = "ASPSnippets";
int orderNo = 2303;
StringBuilder sb = new StringBuilder();
sb.Append("");
sb.Append("");
sb.Append("");
sb.Append("");
sb.Append("");
sb.Append("

Order Sheet
Order No:");
sb.Append(orderNo);
sb.Append("
Date: ");
sb.Append(DateTime.Now);
sb.Append("
Company Name : ");
sb.Append(companyName);
sb.Append("
");
sb.Append("
");
sb.Append("");
sb.Append("");
foreach (DataColumn column in dt.Columns)
{
sb.Append("");
}
sb.Append("");
foreach (DataRow row in dt.Rows)
{
sb.Append("");
foreach (DataColumn column in dt.Columns)
{
sb.Append("");
}
sb.Append("");
}
sb.Append("
");
sb.Append(column.ColumnName);
sb.Append("
");
sb.Append(row[column]);
sb.Append("
");
StringReader sr = new StringReader(sb.ToString());

Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
using (MemoryStream memoryStream = new MemoryStream())
{
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
byte[] bytes = memoryStream.ToArray();
memoryStream.Close();
MailMessage mailMessage = new MailMessage();
MailAddress fromAddress = new MailAddress(ConfigurationManager.AppSettings["userName"]);
mailMessage.From = fromAddress;
mailMessage.To.Add(ConfigurationManager.AppSettings["userName"]);
mailMessage.Body = "This is Testing Email";
mailMessage.IsBodyHtml = true;
mailMessage.Subject = " Second Appeal";
System.Net.Mail.Attachment attachment;


attachment=new Attachment(new MemoryStream(bytes), "iTextSharpPDF.pdf");

mailMessage.Attachments.Add(attachment);
SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = ConfigurationManager.AppSettings["host"];
smtpClient.Port = Convert.ToInt32(ConfigurationManager.AppSettings["port"]);
smtpClient.Send(mailMessage);



ScriptManager.RegisterStartupScript(this, this.GetType(), "redirect",
"alert('Mail Send ');" , true);

}
}
}
}

推荐答案

你可以使用。



You could just use.

File.WriteAllBytes(@"C:\yourserverFolder\filename.pdf", bytes);


这篇关于如何在C#中的文件夹或服务器上保存动态pdf生成器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆