-2

我有一个 pdf 文件,在管理员中,所有 pdf 文件都转换为存储在数据库中的字节数组。

public void Getfile()
{
    byte[] file;
    string varFilePath = @"D:\PDFConvertion\pdf\100CountryHouses.pdf";
    try 
    {
        using (var stream = new FileStream(varFilePath, FileMode.Open, FileAccess.Read))
        {
            using (var reader = new BinaryReader(stream))
            {
                file = reader.ReadBytes((int)stream.Length);
            }
        }
        SqlConnection sqlCon;
        sqlCon = new SqlConnection("server details");               
        sqlCon.Open();
        using (var sqlWrite = new SqlCommand("INSERT INTO pdftest Values(@File)", sqlCon))
        {
            sqlWrite.Parameters.Add("@File", SqlDbType.VarBinary, file.Length).Value = file;
            sqlWrite.ExecuteNonQuery();
        }
        sqlCon.Close();
        MessageBox.Show("Converted Success - Length " + Convert.ToString(file.Length));
    }
    catch (Exception Ex)
    {
        throw Ex;
    }   
}

上传文件后,用户查看文件后,我使用 adobe reader 组件加载 pdf 文件。

        private void button1_Click(object sender, EventArgs e)
        {
            string varPathToNewLocation = @"D:\PDFConvertion\converted\test.pdf";
            try
            {
                SqlConnection sqlCon;
                sqlCon = new SqlConnection("");
                sqlCon.Open();
                using (var sqlQuery = new SqlCommand(@"SELECT test FROM [dbo].[pdftest] ", sqlCon))
                {

                    using (var sqlQueryResult = sqlQuery.ExecuteReader())
                        if (sqlQueryResult != null)
                        {
                            sqlQueryResult.Read();
                            var blob = new Byte[(sqlQueryResult.GetBytes(0, 0, null, 0, int.MaxValue))];
                            sqlQueryResult.GetBytes(0, 0, blob, 0, blob.Length);
                            using (var fs = new FileStream(varPathToNewLocation, FileMode.Create, FileAccess.Write))
                                fs.Write(blob, 0, blob.Length);
                        }
                }
                sqlCon.Close();
                axAcroPDF1.LoadFile(@"D:PDFConvertion\converted\test.pdf");

            }
            catch (Exception Ex)
            {
                throw Ex;
            }
        }

但我想直接在 adobe reader 组件中加载文件而不存储在位置。

4

2 回答 2

0

如果是 Web 应用程序,您可以将 pdf 文件放入网页的 Response 对象中。然后浏览器会自动打开 acrobat reader。这是 C# 代码段:

Response.Buffer = true;
Response.Clear();
Response.ContentType = "application/pdf";

// if blob is the byte array of the pdf file
Response.BinaryWrite(blob);  
Response.Flush();
Response.End();
于 2013-04-29T05:28:09.503 回答
0

您想要的是类似于 LoadStream api 的东西。快速搜索 Acrobat SDK 似乎没有发现任何问题。

于 2013-04-29T05:15:06.793 回答