引用之前的文章(PDF Report generation)
我决定使用一种类似于http://www.alistapart.com/articles/boom的解决方案
对于那些不想读任何一个参考资料的人来说,-我正在创建一个报告,并需要它作为一个PDF。我决定使用HTML路径使用-> .。
所以,假设我得到的HTML文件与我想要的完全一样。将页面转换为PDF的最佳方法是什么?本质上,我希望用户在HTML中看到一个“预览”,然后能够将该页面转换为PDF。我目前正在试验的库是ABCPdf。
我的第一个想法是将页面保存到文件系统,并在页面本身的一个均衡器中引用它在转换例程中的URL。这有问题,因为我必须保存每一次它是为了准备打印它的页面。实际上,这看起来有点落后。
我的下一个想法是使用页面的呈现方法将页面捕获为字节流并使用它(因为ABCPdf支持转换HTML流)。如果这是我的答案,我就不知道该怎么做了。有一个"Print“按钮,它的处理程序对字节流执行Me.Render()操作,并将其发送到转换例程中?这可能吗?
底线--一旦一个页面在漂亮的HTML中呈现,你如何初始化该页面的PDF转换?解决办法和其他解决方案是受欢迎的。
我希望我错过了一些显而易见的东西,因为这一定是"the easy “
发布于 2010-01-04 03:51:59
好吧,让它起作用了-而且很简单。把这个交给下一个可能需要答案的人。我刚刚使用了页面的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()发布于 2010-01-22 09:21:14
我与您处于相同的情况,在评估了包括iTextSharp和ABC在内的许多选项之后,我得到了wkhtmltopdf:http://code.google.com/p/wkhtmltopdf/。
发布于 2009-12-30 18:35:23
你是怎么从C#做的?你没有(直接)。
生成一个工作人员PRINCE.EXE进程可能是您唯一的选择。
PRINCE.EXE将从HTML“标准输入”中读取/写入数据,并将PDF发送到“标准输出”。使用没有输出文件名的命令行"%dir%\PRINCE -“。
您可能会发现您需要一个单独的COM组件来生成PRINCE,因为System.Management类可能不适合您。使用Visual或C++生成COM组件。
在数据库中放置HTML通常是个坏主意,但在您的情况下可能是可以的,因为它听起来基本上是静态的。
编辑
将“子PRINCE.EXE”更改为“辅助PRINCE.EXE进程”。我有一个有趣的感觉,PRINCE.EXE不需要是一个孩子的过程。
https://stackoverflow.com/questions/1981503
复制相似问题