2

我真的对让其他人为我做我的工作不感兴趣,我真的很感激朝着正确的方向发展。

我有几个表格需要打印。所有这些都由多个数据网格视图和其他控件组成。工作卡,制造表,库存切割清单,报价等。

我在互联网上尝试了很多可能的解决方案。PrintForm 组件实际上是无用的,因为分辨率很差。我尝试了 Crystal Report,并取得了一些成功,我用它来生成和打印我的报价单和发票。

“捕获”表单(位图)......(我猜在我的情况下,女巫是 printForm 的一个更好的替代品)不要把它剪掉。

MSDN 打印表单 (Visual C#)

我相当沮丧,因为这是测试前我的应用程序的最后一部分。我真的很想了解和学习有关 PrintDocument 组件的所有内容,以便我最终解决这个问题并获得一些 VS 打印经验。

作为最后的手段,我现在将深入了解 iText-Sharp。所以请告诉我它是否会被证明是徒劳的(至少在我的情况下;)那将不胜感激。

感谢您的好心先生或女士您的时间和您的知识

最亲切的问候

Herman Vercuiel 新订单 报价表也在 Crystal Reports 中生成类似 在此处输入图像描述

我需要打印的表格... 表格的数量取决于订购产品的类型和数量。

在此处输入图像描述

编辑:

我目前正在解决这个问题..

我怎样才能确保这适合一页?目前缺少表格右侧的一部分。

private void CaptureScreen()
        {
            Graphics mygraphics = this.CreateGraphics();
            Size s = this.Size;
            memoryImage = new Bitmap(s.Width, s.Height, mygraphics);
            Graphics memoryGraphics = Graphics.FromImage(memoryImage);
            IntPtr dc1 = mygraphics.GetHdc();
            IntPtr dc2 = memoryGraphics.GetHdc();
            BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);
            mygraphics.ReleaseHdc(dc1);
            memoryGraphics.ReleaseHdc(dc2);
        }
4

1 回答 1

0

表单上的控件经过优化,可以在低分辨率光栅设备(屏幕)上呈现。
打印经过优化,可以在高分辨率光栅设备(打印机)上呈现。

因此,如果您将表单渲染到打印机,您可能会得到一个非常小的打印件,或者一个低分辨率的大打印件(如屏幕)。

我不是打印专家......但我能想到的唯一方法是在没有低分辨率大丑像素的情况下在纸上打印表单是重新渲染所有表单对象:枚举表单上的所有控件,并以您想要的方式自行绘制控件,因此您可以准确决定如何以高分辨率渲染它们。所以你可以决定按钮、组合框等边框的外观......

实现这样的事情看起来是一项非常艰巨的工作......

更新
另一个更简单的选项可能是使用位图到光栅转换器。
您可以将屏幕作为位图抓取,将位图传递到光栅到矢量转换器,获得位图的矢量化版本,然后您可以直接打印此基于矢量的图像。

但是自动光栅到矢量的转换可能有效……也可能无效。
你的旅费可能会改变。

也许您可以尝试“手动”抓取屏幕并使用一些免费工具进行位图到矢量的转换,例如Inkscape(启动 Inkskape,导入位图,然后进入菜单 Path\Trace Bitmap,然后尝试各种选项(颜色、BW、平滑...))。
然后,如果你有好的结果,也许你可以找到一个光栅到位图工具来集成到你的应用程序中。

于 2013-05-13T10:05:57.380 回答