0

Google フォームのような動的フォーム サイトを作成しました。要件の 1 つは、各調査に、調査フォームを印刷した後に印刷する必要がある Word ファイルを添付できることです。

では、データベースからファイルをダウンロードした後、印刷するにはどうすればよいでしょうか?

コード例:

private void downloadFile()
{
    string item = Request.Form["__EVENTARGUMENT"].ToString();
    SQL sql_files = new SQL(ConnectionStringName.FilesSqlServer);

    sql_files.ExecuteStoreProcedure(SqlStoreProcedureNames.spFileStorage, SqlOutputType.DataReader, new SQLParameter[]{
        new SQLParameter(ParameterDirection.Input, SqlDbType.VarChar, "@IdRespuesta", Session["id_respuesta"].ToString()),
        new SQLParameter(ParameterDirection.Input, SqlDbType.VarChar, "@ItemID", item),
        new SQLParameter(ParameterDirection.Output, SqlDbType.VarChar, "@SpError")
    });

    if (sql_files.Reader.HasRows)
    {
        sql_files.Reader.Read();

        Response.ClearContent();
        Response.AddHeader("Content-Disposition", "attachment; filename=" + sql_files.Reader["name"].ToString());

        Response.ContentType = sql_files.Reader["contenttype"].ToString();
        byte[] fileBytes = (byte[])sql_files.Reader["bytes"];

        Response.AddHeader("Content-Length", fileBytes.Length.ToString());
        Response.BinaryWrite(fileBytes);
        Response.Flush();
        Response.End();
    }
    sql_files.Reader.Close();
}

このコードを使用してファイルをダウンロードするので、Word 文書を印刷できるようにコードを変更する必要があります。

ごきげんよう、クラーク

4

1 に答える 1

2

現在のコードは、クライアント マシンにファイルをダウンロードします。印刷を制御することはできません。それはすべてクライアント次第です。実際にプリンターで印刷したいですか、それとも別のことを意味しますか?
編集:
ブラウザ固有であるため、ユーザーに印刷ダイアログを表示する方法はありません。
試すことができることの 1 つは、Chrome 18 以降--kiosk--kiosk-printingプレフィックスを使用することです。

Response.End() の後には、ユーザーからのリクエストなしではコードを実行できないことに注意してください。Response.End() の後にコードを実行する場合は、IFrame または WebHandler を使用する必要があります。

于 2012-11-12T19:44:36.410 に答える