【问题标题】:Print a Word document from VARBINARY(MAX) column从 VARBINARY(MAX) 列打印 Word 文档
【发布时间】:2012-11-12 19:21:46
【问题描述】:

我创建了一个动态表单网站,例如 Google 表单,其中一个要求是我可以在每次调查中附加一个 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 文档。

您好, 克拉克

【问题讨论】:

    标签: c# sql-server database printing binaryfiles


    【解决方案1】:

    您当前的代码将文件下载到客户端计算机。您无法控制打印。这一切都取决于客户。您是真的想在打印机上打印还是您的意思有所不同?
    编辑:
    无法向用户显示打印对话框,因为它是特定于浏览器的。
    您可以尝试的一件事是为 Chrome 18+ 使用 --kioskand--kiosk-printing 前缀。

    注意,您不能在 Response.End() 之后运行任何代码而不引起用户的请求。如果您想在 Response.End() 之后运行任何代码,则必须使用 IFrame 或 WebHandler。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多