如何在C#中的文件夹或服务器上保存动态pdf生成器 [英] How to save dynamic pdf generator in folder or on server in C#
问题描述
我的问题是我动态生成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(
订单表 | |
订单号:); 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屋!