【问题标题】:How to Export data in tabular format in Jpeg as A4 size?如何将 Jpeg 中表格格式的数据导出为 A4 大小?
【发布时间】:2017-08-06 03:21:40
【问题描述】:

我正在做一个项目,我想将记录保存为 Jpeg,采用 A4 大小的 2 行 4 列表格格式。 该格式包含几个标签和一个文本框,它将从数据库中获取它们的数据。我想添加一个主面板,其中包含大约 8 个子面板,形式为 2 行和 4 列,这些面板将填充来自数据库的数据。但我不知道如何将主面板保存为文件夹中的 A4 大小的 jpeg。

【问题讨论】:

  • 我建议编辑您的问题。据我了解,您的主要问题与 Winforms 或数据库完全无关,而是将二维数组渲染为 JPEG 文件。
  • 您可以通过Interop Word library将数据导出到Word,然后按照page中的建议将其转换为图像
  • 参见DrawToBitmap 方法。递归调用它到您的所有控件。另外你可能需要Bitmap类的方法,比如SetResolution

标签: c# .net winforms


【解决方案1】:

第一种选择:将表单位图复制到文件
您可以执行以下操作:

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;

....    

//  This code saves the current Form Control.
//  In order to save some other Control,
//  replace "this" by the Control object
Control ctl = this;
Bitmap bm = new Bitmap(ctl.Bounds.Width, ctl.Bounds.Height);

Graphics g = Graphics.FromImage(bm);

g.CopyFromScreen(ctl.Left, ctl.Top, 0, 0, bm.Size);

g.Dispose();

bm.Save("bitmap.jpg", ImageFormat.Jpeg);

....

请注意,生成的图片不会有表单的漂亮圆角。 需要一些装饰来删除角落周围的屏幕背景。由于表单的半透明性质,部分屏幕内容是可见的。 添加一些错误检查并计算所需的文件名。


第二种选择:将表单控件绘制到位图

正如@Alexander 在他的评论中所建议的那样:

 Control ctl = this;
 Rectangle rectangle = ctl.Bounds;
 Bitmap bm = new Bitmap(rectangle.Width, rectangle.Height);

 Graphics g = Graphics.FromImage(bm);
 Rectangle bmRectangle = new Rectangle(0, 0, bm.Width, bm.Height);
 ctl.DrawToBitmap(bm, bmRectangle);

 g.Dispose();

 bm.Save("bitmap.jpg", ImageFormat.Jpeg);

此变体可避免屏幕背景的可见部分出现问题。 似乎不需要递归调用。


第三种选择:创建 HTML 并使用外部渲染工具

您可以从您的C# 应用程序创建一个HTML 文本文件并调用external toolHTML 转换为JPG

HTMLJPG的渲染可以使用wkhtmltoimage来完成:

set IN=yyy.html
set OUT=xxx.jpg
set HEIGHT=640

wkhtmltoimage.exe --height %HEIGHT% %IN% %OUT%

打印尺寸 A4 是缩放问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    相关资源
    最近更新 更多