【问题标题】:Sharing the generated pdf in asp.net在asp.net中分享生成的pdf
【发布时间】:2013-12-18 16:55:15
【问题描述】:

我正在开发 asp.net 应用程序,它以多种形式从用户那里获取输入并保存为 pdf。我的想法是,用户可以通过二维码分享生成的 pdf。我已经完成,直到将 pdf 保存在数据库中。我不知道如何实现这一目标。

有了这个,我附上了在数据库中保存 pdf 的代码:-

    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView1.AllowPaging = false;
    GridView1.DataBind();
    GridView1.RenderControl(hw);
    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);

    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    MemoryStream memoryStream = new MemoryStream();
    PdfWriter.GetInstance(pdfDoc, memoryStream);
    pdfDoc.Open();

    pdfDoc.Add(new Paragraph("My first PDF"));
    htmlparser.Parse(sr);
    pdfDoc.Close();

    int id = 100;
    int ic = 1234;
    cmd = new SqlCommand("InsertPDF", con);
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("@ID", id.ToString());
    cmd.Parameters.AddWithValue("@Pdf", memoryStream.ToArray());
    cmd.Parameters.AddWithValue("@IC", ic.ToString());
    cmd.ExecuteNonQuery();

【问题讨论】:

  • 那么,您的问题到底是什么?
  • 我希望 pdf 可以使用 QR 码分享给任何人

标签: c# asp.net pdf


【解决方案1】:

这是说你已经成功保存到数据库了,你只需要知道如何分享?

本质上,二维码可以只是一个 URL。因此,您只需要该 PDF 的唯一 URL。这可以使用 PDF 的数据库标识符来完成。 (看起来您在代码中手动创建了一个标识符,这很奇怪,但只要它是唯一的,我们就可以对其进行上釉......)

如果您使用的是 WebForms,那么您希望创建这样的东西:

~/GetPDF.aspx?id=123

对于 MVC,类似这样:

~/PDF/Share/123

(或者,无论您想如何构建每个 URL,这都取决于您。诚然,我想不出真正有意义的 MVC 名称,但您对您的应用程序及其作用了解得更多,所以我想您应该能够想出合适的东西。)

因此,基本上,您需要创建一个页面,该页面接受 URL 中 PDF 的唯一 ID,使用该 ID 从数据库中获取 PDF,然后将该 PDF 返回给用户。

对于 WebForms,将 PDF 返回给用户是清除响应、写入正确的标题、写入文件数据和结束响应的问题。像这样的:

Response.Clear();
Response.ContentType = "application/pdf";
Response.Write(pdfData);
Response.End();

在 MVC 中它更简单一些,您可以使用从数据库中获取的二进制数据返回文件内容结果,可能很简单:

return File(pdfData, "application/pdf", "FileName.pdf");

一旦你有了这个,那么对于任何给定的 PDF 文件,你就会知道唯一的 URL 是什么。只需将 URL 中的 ID 替换为正在共享的给定文件即可。该字符串就是创建二维码所需的全部内容。事实上,谷歌为此提供了a handy API。事实上,你根本不需要为它做任何编码。

获得 ID 后,您可以使用带有该 ID 的 PDF URL 将图像添加到任何页面。图片的 URL 直接转到 Google 并生成 QR 码。像这样的:

http://chart.apis.google.com/chart?cht=qr&chs=200x200&chl=http://www.mysite.com/GetPDF.aspx?ID=123

例如,这里是这个 Stack Overflow 问题的二维码:

检查该图像的 URL(右键单击并在新选项卡中打开它,使用 FireBug,但您想这样做)以查看 URL 的格式。它只是 Google QR 生成器 API,后跟 QR 码的文本,在我们的例子中是一个 URL。

【讨论】:

  • 我现在理解这个概念,但不知道如何开始,因为我是这个 asp.net 的初学者
  • @NOORMOHAMED:您需要将整个问题分解为小的离散步骤。我不能真正为 ASP.NET 提供端到端的教程,但总的来说,Stack Overflow 擅长针对特定问题回答特定问题。当你实现这个时,你遇到的每个特定问题都可以是它自己的 Stack Overflow 问题。例如,如果您在将 PDF 保存到数据库时遇到错误,这与其余功能无关,是它自己需要解决的离散功能。与从数据库中取回 PDF、发送给用户等相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 2014-10-15
相关资源
最近更新 更多