.net - 将 HTML 转换为 PDF

标签 .net html pdf pdf-generation abcpdf

引用较早的帖子 ( PDF Report generation )

我决定使用类似于 http://www.alistapart.com/articles/boom 的解决方案

对于那些不想阅读任何引用资料的人 - 我正在创建一份报告并需要它的 PDF 格式。我决定使用 .NET 走 HTML -> PDF 路线。

那么,假设我得到的 HTML 文件与我想要的完全一样。将所述页面转换为 PDF 的最佳方法是什么?本质上,我希望用户看到 HTML 格式的“预览”,然后能够将所述页面转换为 PDF。我目前正在试验的图书馆是 ABCPdf。

我的第一个想法是将页面保存到文件系统,并在页面本身的事件处理程序期间在转换例程中引用它的 URL。这有它的问题,因为每次渲染页面时我都必须保存页面以准备打印它。实际上,它只是看起来很落后。

我的下一个想法是使用页面的呈现方法将页面捕获为字节流并使用它(因为 ABCPdf 支持转换 HTML 流。)如果这是我的答案,我不知道如何实际提取它离开。有一个“打印”按钮,它的处理程序执行 Me.Render() 到字节流并将其发送到转换例程?这可能吗?

底线 - 一旦页面以漂亮的 HTML 呈现,您如何初始化该页面到 PDF 的转换?欢迎提出解决方法和其他解决方案。

我希望我遗漏了一些明显的东西,因为这一定是“简单的部分

最佳答案

好的,开始工作了——而且相当简单。只是将其传递给可能需要答案的下一个人。我只是使用了页面的 Url 属性并将其发送到 ABCPdf addImageUrl() 方法。还必须使用链接,因为它不止一页。感谢您提供的所有帮助。

Dim oPdfDoc As New Doc()
Dim iPageID As Int32
Dim MyUrl = Request.Url

iPageID = oPdfDoc.AddImageUrl(MyUrl.AbsoluteUri)

While True
    oPdfDoc.FrameRect()
    If Not oPdfDoc.Chainable(iPageID) Then
        Exit While
    End If
    oPdfDoc.Page = oPdfDoc.AddPage()
    iPageID = oPdfDoc.AddImageToChain(iPageID)
End While

For i as Int32 = 1 To oPdfDoc.PageCount
    oPdfDoc.PageNumber = i
    oPdfDoc.Flatten()
Next

oPdfDoc.Save(Server.MapPath("test.pdf"))
oPdfDoc.Clear()

关于.net - 将 HTML 转换为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1981503/

相关文章:

c# - 验证字符串是否存在于列表中

c# - 将类解释为文本

.net - 在 Visual Studio 中构建时有条件地使用 32/64 位引用

javascript - 滚动到列表中的特定项目,然后滚动到列表中的下一个特定项目

c# - 我应该使用哪个集合?

javascript - 超链接替代文本替换

java - 无法使用 Selenium Java 中的 sendKeys() 将文件上传到 "browse"按钮

php - 如何将数据从 Controller 传递到 dompdf?

ios - 写入: Operation not permitted issue while working pdf

css - 用于打印和 PDF 的单独样式表?