1

Web サイト用の PDF を生成しようとしています。現在、データベースからデータを取得して PDF ファイルに表示しようとしていますが、実際には asp:label から値を取得して pdf 形式にエクスポートすることが主な優先事項でした。残念ながら、生成された PDF ファイルを開くと、このエラーが発生しました。

エラー : このドキュメントを開くときにエラーが発生しました。このファイルは既に開いているか、別のアプリケーションで使用されています

protected void btnPDF_Click(object sender, EventArgs e)
    {

        var doc1 = new Document();
        var filename = DDLCase.SelectedItem.Text + ".pdf";
        var output = new FileStream(Path.Combine("C:\\Users\\apr12mpsip\\Desktop", filename), FileMode.Create);
        doc1.Open();

        PdfPTable table = new PdfPTable(3);
        PdfPCell cell = new PdfPCell(new Phrase("Header spanning 3 columns"));
        cell.Colspan = 3;
        cell.HorizontalAlignment = 1; 
        table.AddCell(cell);
        table.AddCell("Col 1 Row 1");
        table.AddCell("Col 2 Row 1");

        doc1.Add(table);

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

        SqlCommand cm = new SqlCommand("Select typeofcrime, citizenreport from MemberReport where memberreportid='"+DDLCase.SelectedValue+"'", con);
        con.Open();
        SqlDataReader dr;
        dr = cm.ExecuteReader();
        while (dr.Read())
        {
            table.AddCell(dr[0].ToString());
            table.AddCell(dr[1].ToString());
        }
        dr.Close();


        doc1.Close();

    }

コードを確認しましたが、エラーを解決して値を正常に取得する方法が見つかりませんでした。

4

1 に答える 1

1

あなたがやる

var doc1 = new Document();
var filename = DDLCase.SelectedItem.Text + ".pdf";
var output = new FileStream(Path.Combine("C:\\Users\\apr12mpsip\\Desktop", filename), FileMode.Create);
doc1.Open();
[... fetching some data and adding that to`doc1 ...]
doc1.Close();

と をまったく関連付けていないことがわかりoutputますDocument doc1.。したがって、ファイルはまったく書き込まれませんが、閉じられることもありません。

ほとんどの場合、PdfWriter書き込みoutputおよび受信する をさらにインスタンス化する必要があります。doc1:

var doc1 = new Document();
var filename = DDLCase.SelectedItem.Text + ".pdf";
var output = new FileStream(Path.Combine("C:\\Users\\apr12mpsip\\Desktop", filename), FileMode.Create);
PdfWriter.GetInstance(doc1, output); // instantiate a PdfWriter for doc1 and output
doc1.Open();
[... fetching some data and adding that to`doc1 ...]
doc1.Close();
于 2013-06-03T07:20:44.707 に答える