【问题标题】:WPF Write Text to Image and send to PrinterWPF 将文本写入图像并发送到打印机
【发布时间】:2020-05-19 06:20:54
【问题描述】:

我想创建一个包含徽标和多行文本的小图像并将其直接发送到打印机。但是我在文本质量方面遇到了问题。

目前我正在创建一个位图并通过 g.DrawString 向其渲染文本:

Bitmap bitmap = new Bitmap(240, 240);
Graphics g = Graphics.FromImage(bitmap);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;  // or AntiAlias
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.DrawString("Charge: 1911", new Font("Arial Narrow", 8.0F, System.Drawing.FontStyle.Regular), Brushes.Black, new PointF(6,119));

PrintDocument pd = new PrintDocument();
[...]
pd.PrintPage += PrintPage;
    pd.Print();
g.Dispose();

到目前为止,此代码可以正常工作,但文本质量太差而无法实际打印。
这是目前的结果:

使用 AntiAliasGridFit:

使用抗锯齿:

这(或更好)是我想要达到的结果:

现在我的问题是,有没有办法获得更好的文本质量,也许以某种方式使用 TextRenderer 而不是 Graphics? 它不必是我打印的位图。我只需要能够在其中写入一个预先存在的图像,然后将整个文档发送到打印机。

【问题讨论】:

  • 那台打印机上的 DPI 是多少?
  • 我只能在几天内检查它,但它是一个标签打印机,已经打印了非常小的文本。
  • 你知道这台打印机的型号吗?
  • 嘿,我刚才可以检查。我需要能够打印到 Zebra TLP3842 和 Brother QL-560。
  • 您可以尝试与that post check how to send ZPL to printer 和this site 不同的方法您可以将图像转换为ZPL,at this site You can check how label will look like。这将花费您一段时间,但将原始 ZPL 发送到打印机将让您获得更好的质量

标签: c# bitmap drawstring text-rendering


【解决方案1】:

经过更多挖掘,我找到了解决问题的方法。
我没有创建位图并向其绘制文本,而是直接将文本绘制到 PrintPage 方法的 PrintPageEventArgs 对象:

private void PrintPage(object o, PrintPageEventArgs e) {
    e.Graphics.DrawImage(logoImg, xCoordinate, yCoordinate, xSize, ySize);
    e.Graphics.DrawString("Charge: 19011", textFont, Brushes.Black, 0, 0, new StringFormat());
}

我不是 100% 确定为什么会这样,但我现在有非常清晰的文本,就像矢量图形一样。

Example

【讨论】:

    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多