4

显然,关于以 A4 和 A5 格式打印 HTML的问题与关于打印 RTF 格式文本的问题完全相同,所以这里有另一个问题,其中的细节更加详细。

我正在开发一个应该打印订单的C# (WinForms) 程序。该程序是为.NET 2.0框架编写的。该程序必须能够以A4 和 A5 纸张格式打印,没有任何用户干扰(无对话框)。打印的订单应该看起来与在网络浏览器中的完全一样。如果您想看看它应该是什么样子,您可以查看此示例。如您所见,非常基本的东西。

这是我到目前为止所尝试的:

  • 在StackOverflow上提问,因为重复而被关闭。从来没有找到重复的。
  • 使用WebBrowser元素打印。无法打印 A5,所以没有解决办法。
  • 将 HTML 放入RichTextBox并打印出来。它有效,但它没有像在网络浏览器中查看的那样显示 HTML,这是一项要求。代码可以在这里找到。
  • 我已经考虑在打印之前转换为 PDF,但这要么很昂贵,要么根本无法使用(对我来说,作为一个几乎没有 C# 经验的程序员)。这些工具通常依赖于安装在用户计算机上的软件(例如用于打印的 Acrobat Reader),我试图避免这种情况。
  • 在 Google 中查看了至少 13 页的每个相关链接,但运气不佳。我已经在这工作了大约 2 天半了。

如果有人有(免费)更好的方式来打印格式化的 HTML,就像在浏览器中查看的那样,没有用户干扰或外部依赖,请分享。我真的需要这个工作。

请不要关闭这个问题,当我说我积极搜索描述我的问题的解决方案或文章时,请相信我。有些是相关的,但没有解决我遇到的问题。我也使用了这个网站上的高级搜索,没有运气。

感谢您抽出时间来阅读。

注意:当我说我从未找到重复项时,我的意思是我从未找到真正描述我的问题的文章。

4

2 回答 2

1

您将不得不咬紧牙关并使用 PDF 库,您将无法完全控制具有如此多不同用户、浏览器和打印机的 HTML 的最终打印结果。我为内部业务应用程序打印到 A4,我们的用户群非常有限(可能 5 个)并且所有打印到特定打印机,即使那样它充其量也是片状的。我不相信有一种方法可以在没有用户干预的情况下区分 A4 和 A5,即他们必须从打印选项中选择纸张尺寸。

建议你看看PDF SharpSharp PDFiTextSharp,它们都是开源的。

这一切都可以从服务器完成,即不需要在用户机器上安装任何东西。应该可以使用它来选择纸张尺寸(我不是 100% 确定),但最终用户打印它最终取决于他们。

于 2013-01-16T15:38:03.123 回答
0

我已经使用此处描述的 PrintHelper 方法成功地完成了这项工作。我使用它使多个位置的用户能够从 CMS 系统打印条形码标签。标签对布局、字体大小和定位有严格的要求,所有这些都使用 HTML 和 CSS 进行管理。

PrinterHelper 类的工作原理是向其传递一个填充了打印数据的 web 控件(我使用了一个中继器来允许多个标签),并且 helper 类在内存中构建一个页面并打开打印对话框。你像这样注册你的CSS:

pg.ClientScript.RegisterStartupScript(pg.GetType(),"LabelCSS","<link href=\"Styles/labelPrint.css\" rel=\"stylesheet\" type=\"text/css\" />");

不过需要注意的是,它只适用于 Firefox,并且必须更改一些设置,例如将边距设置为零,但由于 CMS 需要使用该浏览器,所以这不是问题。

于 2013-01-16T16:00:39.397 回答