-1

我有这个代码工作,它将PDF文档上传到SQL Server express,并将其显示给DataGridView。如何下载或查看(默认为 pdf 阅读器)上传的文件?

我发现的大多数代码片段都是针对 ASP.NET 的;这是Winforms。谢谢你。

private void btnSave_Click(object sender, EventArgs e)
{
    if (docnoTextBox.Text == "" && docfromTextBox.Text == "")
    {
        MessageBox.Show("Cannot save empty strings");            
    }
    else
    {
        try
        {
            iteisDataContext das_db = new iteisDataContext();
            Document newDoc = new Document();
            newDoc.docid = docnoTextBox.Text;
            newDoc.docdate = docdateDateTimePicker.Value;
            newDoc.postdate = DateTime.Now;
            newDoc.doctype = cboDocType.Text;
            newDoc.docfrom = docfromTextBox.Text;

            //Convert string to linq.binary
            Binary pdfFile = new ASCIIEncoding().GetBytes(ofdMain.FileName);

            // And back to string - dae pa ini confirmado!
            //string fileUpload = Encoding.ASCII.GetString(pdfFile.ToArray());

            newDoc.docupload = pdfFile;
            newDoc.docsubject = docsubjectTextBox.Text;
            newDoc.notes = notesTextBox.Text;

            // Update database
            das_db.Documents.InsertOnSubmit(newDoc);
            das_db.SubmitChanges();

            MessageBox.Show("Document Saved.", "Success",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
4

1 回答 1

2

在 WinForms 中,您可以使用 Acrobat reader ActiveX 控件(添加参考 -> COM 组件 -> AcroPDF.PDF)直接在应用程序中显示 PDF 文件。这需要在客户端计算机上安装 Adob​​e Reader:

var pdf = new AxAcroPDF();
pdf.LoadFile(@"c:\test.pdf");

另一种可能性是使用 Process.Start 方法在客户端计算机上使用默认程序打开 PDF:

Process.Start(@"c:\test.pdf");

在这两种情况下,您都需要在从数据库中读取 PDF 后将其存储在临时文件中。

于 2012-05-21T06:14:27.627 回答