Asp.net 使用itextsharp创建PDF在客户端';s服务器
我尝试根据特定条件动态构建pdf,它在我们的机器和客户的一台机器上运行得非常好。但是对于另一个客户,当我们部署系统时,pdf没有正确生成。我有下面的代码来生成这个Asp.net 使用itextsharp创建PDF在客户端';s服务器,asp.net,itextsharp,Asp.net,Itextsharp,我尝试根据特定条件动态构建pdf,它在我们的机器和客户的一台机器上运行得非常好。但是对于另一个客户,当我们部署系统时,pdf没有正确生成。我有下面的代码来生成这个 public void pdf_ModerateData(string name, string dob, string gender, string age) { Phrase pat_name = new Phrase(); Phrase phr_paitient_name = new Phrase();
public void pdf_ModerateData(string name, string dob, string gender, string age)
{
Phrase pat_name = new Phrase();
Phrase phr_paitient_name = new Phrase();
Phrase phr_paitient_dob = new Phrase();
Paragraph pat_det = new Paragraph();
Paragraph paitient_name_dob = new Paragraph();
Paragraph mul_column = new Paragraph();
iTextSharp.text.Font fntNormalText = FontFactory.GetFont(FontFactory.TIMES, 12, iTextSharp.text.Font.NORMAL);
iTextSharp.text.Font fntBoldText = FontFactory.GetFont(FontFactory.TIMES, 12, iTextSharp.text.Font.BOLD);
iTextSharp.text.Font fntsmallText = FontFactory.GetFont(FontFactory.TIMES, 8, iTextSharp.text.Font.NORMAL);
phr_paitient_name = new Phrase(System.Environment.NewLine + System.Environment.NewLine + name + " " + dob, fntNormalText);
pat_name = new Phrase(System.Environment.NewLine + " " + System.Environment.NewLine + " ", fntsmallText);
pat_det.Add(phr_paitient_name);
pat_det.Add(pat_name);
Phrase emt = new Phrase();
Paragraph emty = new Paragraph();
emt = new Phrase(System.Environment.NewLine + " ", fntNormalText);
emty.Add(emt);
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
Document pdfDoc = new Document();
PdfWriter.GetInstance(pdfDoc, HttpContext.Current.Response.OutputStream);
pdfDoc.Open();
iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance("C:/trial/dms/img/moderatetool.jpg");
logo.ScaleAbsolute(475, 600);
PdfPTable table = new PdfPTable(1);
table.TotalWidth = 500f;
table.LockedWidth = true;
iTextSharp.text.Image barcode = iTextSharp.text.Image.GetInstance("C:/trial/dms/barcode/brcode.gif");
barcode.ScaleAbsolute(100, 50);
PdfPTable nested = new PdfPTable(2);
mul_column.Add(pat_det);
PdfPCell mul = new PdfPCell(mul_column);
mul.HorizontalAlignment = Element.ALIGN_LEFT;
mul.BorderWidth = 0;
nested.AddCell(mul);
//PdfPCell imag = new PdfPCell(barcode);
//imag.HorizontalAlignment = Element.ALIGN_RIGHT;
//imag.BorderWidth = 0;
//nested.AddCell(imag);
PdfPCell imag = new PdfPCell(barcode);
imag.HorizontalAlignment = Element.ALIGN_RIGHT;
imag.BorderWidth = 0;
nested.AddCell(imag);
PdfPTable nested1 = new PdfPTable(2);
//mul_column.Add(pat_det);
PdfPCell mul1 = new PdfPCell(emty);
mul1.HorizontalAlignment = Element.ALIGN_LEFT;
mul1.BorderWidth = 0;
nested1.AddCell(mul1);
PdfPCell imag1 = new PdfPCell(barcode);
imag1.HorizontalAlignment = Element.ALIGN_RIGHT;
imag1.BorderWidth = 0;
nested1.AddCell(imag1);
PdfPCell nesthousing = new PdfPCell(nested1);
nesthousing.Padding = 0f;
nesthousing.BorderWidth = 0;
table.AddCell(nesthousing);
PdfPCell image_header = new PdfPCell(logo);
image_header.HorizontalAlignment = Element.ALIGN_CENTER;
image_header.BorderWidth = 0;
table.AddCell(image_header);
Paragraph para = new Paragraph();
//string pat = get_patientDET();
//para = new Paragraph(pat);
PdfPCell header = new PdfPCell(para);
header.HorizontalAlignment = Element.ALIGN_CENTER;
header.Colspan = 4;
header.BorderWidth = 0;
//table.AddCell(header);
PdfPCell nesthousing1 = new PdfPCell(nested);
nesthousing.Padding = 0f;
nesthousing.BorderWidth = 0;
nesthousing1.BorderColor = BaseColor.WHITE;
table.AddCell(nesthousing1);
pdfDoc.Add(table);
pdfDoc.Close();
HttpContext.Current.Response.Write(pdfDoc);
HttpContext.Current.Response.End();
}
谁能指导我解决这个问题
服务器:windows 2008 R2数据中心64位servicepack1
当我们下载pdf时,它会作为
“Gridviewreoprt.pdf,附件”,无法正常工作。问题有99%的可能性是由以下原因引起的:
iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance("C:/trial/dms/img/moderatetool.jpg");
iTextSharp.text.Image barcode = iTextSharp.text.Image.GetInstance("C:/trial/dms/barcode/brcode.gif");
你的客户会疯狂地让你访问他们服务器的C:驱动器。开发人员应该避免在代码中为C:驱动器上的文件添加硬编码路径。您应该将所有资源(图像、条形码、PDF模板等)封装在web应用程序中,以便您的应用程序可以部署在每台服务器上,而无需考虑是否存在和访问存储在服务器上其他位置的文件。PDF文件本身的问题,或者PDF文件如何在浏览器中下载?对于您的具体问题/症状,这并不是一个明确的报告。您有任何错误消息吗?问题出在服务器还是客户端浏览器上?抱歉。。没有错误获取..问题是下载的pdf无法打开..它以“gridviewreport.pdf,附件”的形式下载..它的类型是文件,甚至我手动将名称更改为gridviewreport.pdf。它无法打开pdf。我认为pdf创建得不好..但同样的代码适用于其他客户端。请尝试一个简单的测试pdf(一页,一行文字),阅读这篇关于使文件可下载的文章,当你有足够的细节来问一个具体的问题时再回来。