【发布时间】:2017-12-20 20:37:40
【问题描述】:
我的应用程序充当带有文本框的文档模板供用户填写。完成后,他们可以使用 PDFsharp 将文档“打印”为 PDF。这是通过使用下面的代码将文本框所在的面板转换为位图图像来完成的;
ConditionReportConfig.PG1.Panel2.DrawToBitmap(Bitmap, New Rectangle(0, 0, Bitmap.Width, Bitmap.Height))
frm_MsgPrint.lbl_Page.Text = "Page: 1" : frm_MsgPrint.lbl_Page.Refresh()
frm_MsgPrint.PictureBox1.Image = Bitmap
frm_MsgPrint.PictureBox1.Refresh()
BXImage = Bitmap
GFX.ScaleTransform(0.82)
GFX.DrawImage(BXImage, 25, 0)
GFX.Dispose()
CDR1 = Nothing
不幸的是,当 PDF 与图像一起弹出时,整个图像,尤其是文本框中的文本,都是模糊的。它们不会模糊到您无法阅读的程度,但它们确实会使您的眼睛阅读文本变得异常紧张。
我尝试添加各种设置,例如:
Dim Bitmap2 = New Bitmap(894, 1367)
Using G As Graphics = Graphics.FromImage(Bitmap2)
G.InterpolationMode = Drawing2D.InterpolationMode.Bicubic
G.DrawImage(Bitmap, 0, 0, 120, 150)
End Using
我什至尝试更改字体、大小,甚至将位图保存为 TIFF、PNG,但它仍然显得模糊。我会更改打印方法,但要打印面板的全部内容。不仅如此,面板还包含图像,所以我不能只在 PDF 上打印文本。
编辑: 我已经尝试更改一些插值设置,它稍微清晰一些,但仍然对您的眼睛造成压力。 下面是作为 TIFF 的位图图像的 sn-p。注意文本框中的文本是“模糊的”,但旁边的垂直文本是完美的。真的没有办法让文本框内容像竖排文本一样清晰吗?
清晰的垂直文本的模糊图像:
【问题讨论】:
-
控件以在 LCD 显示器上有用的方式呈现其文本。通常使用 ClearType 抗锯齿,在字母形状周围使用红色和蓝色条纹。在显示器上效果很好。在纸上效果不佳。您必须停止使用 DrawToBitmap() 才能取得成功。
-
您对 DrawToBitmap() 的替代方案有什么建议吗?我似乎找不到任何可以将面板控件变成图像的东西
-
只要您将面板的绘制代码保存在一个单独的方法中,该方法接受一个 Graphics 参数,以便您也可以调用它进行打印,那么您就可以到达某个地方。
标签: vb.net pdf bitmap pdfsharp