Asp.net 使用itextsharp创建PDF在客户端';s服务器

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();

我尝试根据特定条件动态构建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();
    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(一页,一行文字),阅读这篇关于使文件可下载的文章,当你有足够的细节来问一个具体的问题时再回来。