如何为printdocument类呈现带有图像的html文档,以便我可以打印它?

时间:2016-07-19 18:21:32

标签: html vb.net printdialog

Private Sub document_PrintPage(ByVal sender As Object, _
   ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
       Handles docToPrint.PrintPage

    ' Insert code to render the page here.
    ' This code will be called when the control is drawn.

    ' The following code will render a simple
    ' message on the printed document.
    'Dim text As String = "In document_PrintPage method."
    'Dim printFont As New System.Drawing.Font _
    '    ("Arial", 35, System.Drawing.FontStyle.Regular)

    '' Draw the content.
    'e.Graphics.DrawString(text, printFont, _
    '   System.Drawing.Brushes.Black, 10, 10)
End Sub

我有代码显示一个打印机对话框,该对话框将调用此过程来呈现要打印的文档。我想要打印的文档可以从URL作为HTML网页访问,并且该网页被理解为可用于打印。上面的示例代码仅用于渲染字符串,不能满足我的需要。我正在考虑使用system.drawing.graphics.drawimage,如果可以使用它。有任何想法吗?我无法完全描绘将HTML页面转换为图像数据类型的过程。如果没有必要,那就更好了。

2 个答案:

答案 0 :(得分:0)

你有什么理由不能使用System.Windows.Forms.WebBrowser吗?

它有一个Print()方法,似乎可以让您的任务更轻松。 。 。 8 - )

将HTML渲染到图像中进行打印并非易事。无论如何,您需要利用知道如何操作的库。

答案 1 :(得分:0)

首先,我更改了我的打印机对话框调用,以便它通过使用javascript函数运行客户端。那很简单。接下来是将要打印的区域与包含作为源加载的卫星地图的矩形隔离到iframe中。正如我的理解是javascript打印机对话框将整个页面转储到打印机,我尝试了几件事,并最终将iframe包含在asp面板上的自己的div部分中,该面板具有调用打印机对话框和iframe的html按钮标签。这足以只打印地图。允许这样做可能需要做的一件事是你需要使用子域来欺骗浏览器认为iframe主机和文档主机在同一个域上 - 我已经与映射公司和我们的本地托管公司合作完成那部分。当我单击打开打印机对话框时,唯一要做的就是让iframe保持地图的选定缩放状态。我将发布另一个问题,以获得关于如何让asp面板冻结其视图的意见,或者其他任何技巧可以实现这一点。