0

我有一个 C# 应用程序,可以打印发票和工资单。客户给我发了一个模板,用于日常操作。我不知道如何打印到它,尽管我已经知道如何打印一个以编程方式制作的包含来自访问数据库的信息的文本文件。

如何打印这种模板上的信息?(这只是我[在谷歌上找到][1] 并且是简单发票打印的好候选)我的文档模板也有一个 LOGO..

4

2 回答 2

1

我一直在使用 PrintDocument 和 PrintPreview 对象。即使用 Graphics 类。调用 print 时,您会得到一个“PrintEventArgs e”对象。然后您可以使用 e.Graphics 访问诸如 e.Graphics.DrawString、.DrawImage 等内容。

我构建了一个覆盖打印的整个打印对象类。所以我有一个详细信息框,它有不同的字体、标志、标题、法律术语等。每一个都有它自己的类。我将它们全部放在一个大列表中,然后调用 printThis(List); 它将获取每个打印功能和坐标并为我制作一个表格。

继承对象

class formHdr : printObject
{
    private string headerText;

    public formHdr(string hText)
        : base()
    {
        headerText = hText;

    }

    public override void printThis(System.Drawing.Printing.PrintPageEventArgs e)
    {
        Graphics g = e.Graphics;
        g.DrawString(headerText, FRHEADER, Brushes.Black, BaseX, BaseY);

    }
}

基类

abstract class printObject
{
    protected Font FTHEADER;
    protected Font NRML;
    protected Font DETAIL;
    protected Font FRHEADER;
    protected Font DETHEADER;
    protected Font LEGAL;
    protected Font LEGAL2;

    public int baseX, baseY;
    public int boxSX, boxSY;

    public printObject()
    {
        baseX = 0;
        baseY = 0;
        boxSX = 0;
        boxSY = 0;
        FTHEADER = new Font("Arial", 12, FontStyle.Bold);
        NRML = new Font("Calibri", 10);
        DETAIL = new Font("Consolas", 8);
        FRHEADER = new Font("Arial", 16, FontStyle.Bold);
        DETHEADER = new Font("Calibri", 10, FontStyle.Bold);
        LEGAL = new Font("Arial", 8);
        LEGAL2 = new Font("Arial", 10);
    }

    public virtual void printThis(PrintPageEventArgs e) { }

对象创建

                mainHead = new formHdr("Bill of Lading/Weigh slip Original");
                mainHead.BaseX = 225;
                mainHead.BaseY = 20;
                bol.Add(mainHead);

也许这可以让你开始?我仍在调整它,并且会对其他响应感兴趣。

于 2012-10-31T12:28:52.707 回答
1

通过 Word 中的邮件合并来完成。使用这种技术您可以创建 Word 文档。在文档内部,您可以为文本创建占位符。从代码中,你可以用你想要的任何东西填充占位符。

例如:

  1. 在word文档类型ctrl+F9
  2. 右键单击字段并Edit field
  3. 选择MergeField
  4. 关于字段名称类型FirstName
  5. 添加代码:

.

var document = new Document("document.docx");
var sqlCommand = "SELECT TOP 1 userName FirstName FROM Users";
var table = GetTable(sqlCommand, String.Empty);
document.MailMerge.Execute(table);
于 2012-10-31T13:04:06.417 回答