1

iTextSharpを使用してpdfを作成し、それをバイトに変換して、保存ダイアログでpdfファイルをダウンロードしようとしています。MemoryStream を使用して pdf をバイトに変換し、HttpResponse Page メソッドを使用して pdf ファイルをダウンロードしましたが、機能していないようです。ボタンをクリックしてもエラーは発生せず、何も起こりません。ありがとう!

protected void btnPDF_Click(object sender, EventArgs e)
{
byte[] pdfBytes;
using (var ms = new MemoryStream())c
{
    var doc1 = new Document();
    PdfWriter writer = PdfWriter.GetInstance(doc1, ms);
    doc1.Open();

    PdfPTable table = new PdfPTable(1);

    table.TotalWidth = 585f;
    table.LockedWidth = true;

    iTextSharp.text.pdf.PdfPCell imgCell1 = new iTextSharp.text.pdf.PdfPCell();

    var logo = iTextSharp.text.Image.GetInstance(Server.MapPath("~/image/logo.jpg"));
    doc1.Add(logo);

    var titleFont = FontFactory.GetFont("Arial", 15, Font.BOLD);
    doc1.Add(new Paragraph("Official Report. Member Report ID : " + DDLCase.SelectedValue, titleFont));

    var normalFont = FontFactory.GetFont(FontFactory.HELVETICA, 14, Font.BOLD);
    var phrase = new Phrase();

    SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = project; Integrated Security = SSPI");

    SqlCommand cm = new SqlCommand("Select lro.fullname, lro.contact, mr.typeofcrime, mr.location,mr.crdatetime, mr.citizenreport, pr.policeid,  pr.prdatetime, pr.policereport, aor.officialreport,  mr.image1, mr.image2, mr.image3, mr.image4, mr.image5,  pr.image1, pr.image2, pr.image3, pr.image4, pr.image5 from MemberReport mr, PoliceReport pr, LoginRegisterOthers lro, AdminOfficialReport aor where mr.memberreportid = '" + DDLCase.SelectedValue + "' and mr.memberreportid=pr.memberreportid and pr.policereportid=aor.policereportid", con);
    con.Open();
    SqlDataReader dr;

    dr = cm.ExecuteReader();

    if (dr.Read())
    {

        phrase.Add(new Chunk("Full Name :", normalFont));
        phrase.Add(dr[0].ToString());

        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);

        phrase.Add(new Chunk("Contact :", normalFont));
        phrase.Add(dr[1].ToString());

        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);

        phrase.Add(new Chunk("Type Of Crime :", normalFont));
        phrase.Add(dr[2].ToString());

        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);

        phrase.Add(new Chunk("Location :", normalFont));
        phrase.Add(dr[3].ToString());

        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);

        phrase.Add(new Chunk("Citizen Report Date Time :", normalFont));
        phrase.Add(dr[4].ToString());

        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);

        phrase.Add(new Chunk("Citizen Report :", normalFont));
        phrase.Add(dr[5].ToString());

        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);
        phrase.Add(Chunk.NEWLINE);

        phrase.Add(new Chunk("Citizen Images :", normalFont));

        phrase.Add(new Chunk("1.", normalFont));
        Byte[] bytes1 = (Byte[])dr[10];
        iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance(bytes1);
        image1.ScaleToFit(1150f, 1150f);
        Chunk imageChunk1 = new Chunk(image1, 0, 0);
        phrase.Add(imageChunk1);

        phrase.Add(new Chunk("2.", normalFont));
        Byte[] bytes5 = (Byte[])dr[11];
        iTextSharp.text.Image image5 = iTextSharp.text.Image.GetInstance(bytes5);
        image5.ScaleToFit(1150f, 1150f);
        Chunk imageChunk5 = new Chunk(image5, 0, 0);
        phrase.Add(imageChunk5);

        phrase.Add(new Chunk("3.", normalFont));
        Byte[] bytes6 = (Byte[])dr[12];
        iTextSharp.text.Image image6 = iTextSharp.text.Image.GetInstance(bytes6);
        image6.ScaleToFit(1150f, 1150f);
        Chunk imageChunk6 = new Chunk(image6, 0, 0);
        phrase.Add(imageChunk6);

        phrase.Add(new Chunk("4.", normalFont));
        Byte[] bytes7 = (Byte[])dr[13];
        iTextSharp.text.Image image7 = iTextSharp.text.Image.GetInstance(bytes7);
        image7.ScaleToFit(1150f, 1150f);
        Chunk imageChunk7 = new Chunk(image7, 0, 0);
        phrase.Add(imageChunk7);

        phrase.Add(new Chunk("5.", normalFont));
        Byte[] bytes8 = (Byte[])dr[14];
        iTextSharp.text.Image image8 = iTextSharp.text.Image.GetInstance(bytes8);
        image8.ScaleToFit(1150f, 1150f);
        Chunk imageChunk8 = new Chunk(image8, 0, 0);
        phrase.Add(imageChunk8);

        table.AddCell(phrase);
    }
    dr.Close();
    doc1.Add(table);
    doc1.NewPage();
    doc1.Add(table2);
    doc1.Close();

    pdfBytes = ms.ToArray();
}

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}", "Report.pdf"));
Response.OutputStream.Write(pdfBytes, 0, pdfBytes.Length);  
}

IE を使用してテストすると、次のエラーが発生します。

JScript 匿名関数 [MicrosoftAjax.js] 6 行目のスクリプト

申し訳ありませんが、コードにエラーはありません。このコードは AJAX コントロールの UpdatePanel では機能しません。ご覧いただきありがとうございます。

4

1 に答える 1

0

これを使って

 string fileName = string.Format(Guid.NewGuid()+".pdf");
 htmlToPdf(Server.MapPath(@"~\temp\") + fileName);
 Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
 Response.ContentType = "application/pdf";
 Response.TransmitFile(filePath);
 Response.End();
于 2013-07-11T05:55:04.640 に答える