C# 如何使用iText7格式化列

C# 如何使用iText7格式化列,c#,visual-studio,pdf,itext7,C#,Visual Studio,Pdf,Itext7,我正在写一个程序,可以在我的保龄球专卖店打印销售标签。目前我正在手动操作,但我希望更容易创建。我用VS2015创建了一个程序,该程序要求输入所有字段并将其保存到Access数据库中,还将其打印到我创建的模板中。我遇到的问题是将文本的格式设置为在Photoshop中创建文本时的显示方式。即使它只是关闭了一点点,这是很好的,但目前我不知道如何写在模板上的方式,我想要的。是我要打印的模板,底部是用Photoshop格式化的,顶部是空白的。 我认为创建一张图片并将其添加到pdf(5次)可能是最简单的 这

我正在写一个程序,可以在我的保龄球专卖店打印销售标签。目前我正在手动操作,但我希望更容易创建。我用VS2015创建了一个程序,该程序要求输入所有字段并将其保存到Access数据库中,还将其打印到我创建的模板中。我遇到的问题是将文本的格式设置为在Photoshop中创建文本时的显示方式。即使它只是关闭了一点点,这是很好的,但目前我不知道如何写在模板上的方式,我想要的。是我要打印的模板,底部是用Photoshop格式化的,顶部是空白的。 我认为创建一张图片并将其添加到pdf(5次)可能是最简单的

这是我的密码:

    private void print()
    {
        string dest = @"C:\Users\bwilliams\Desktop\balltest1.pdf";
        string src = @"C:\Users\bwilliams\Desktop\BallTags.pdf";
        Rectangle[] columns = new Rectangle[]
        {
            new Rectangle(100,500,150,200),
            new Rectangle(250,500,150,200),
            new Rectangle(400,500,150,200),
            new Rectangle(550,500,150,200)

        };
        PdfWriter writer = new PdfWriter(dest);
        PdfDocument pdf = new PdfDocument(new PdfReader(src), writer);
        Document doc = new Document(pdf,PageSize.A4.Rotate());               
        doc.SetRenderer(new ColumnDocumentRenderer(doc, columns));          
        doc.Add(new Paragraph("Ebonite").SetPaddings(150, 60, 0, 0).SetFontSize(24).SetFont(Arial).SetFixedLeading(24));
        doc.Add(new Paragraph("GB2 MVP").SetPaddings(150, 0, 0, 0).SetFontSize(24).SetFixedLeading(24));
        doc.Add(new Paragraph("$114.95").SetPaddings(150, 0, 0, 0).SetFontSize(24).SetFixedLeading(24));
        doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24));
        doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24));
        doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24));
        doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24));
        doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24));
        doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24));
        doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24));







        doc.Close();
    }
我现在只是将信息硬编码,而不是使用文本框中的输入。。是单击“打印”时得到的结果

我不知道如何为CORE:COVER:FINISH:RG:DIFF:

我也不知道如何将Arial字体(黑色)添加到iText7字体工厂

谢谢,
布兰登

你的帖子里有不同的问题

字体:

您想在iText 7中创建一个
PdfFont
。与iText 5相比,这是以一种非常不同(并且更容易)的方式完成的。在iText 5中,您有一个
Font
类和一个
BaseFont
类。这些不再是必要的。你只要这样做:

PdfFont font = PdfFontFactory.CreateFont(pathToArialBlack, true);
在这行中,
pathToArialBlack
是指向
ARIBLK.TTF
的路径,例如
C:\WINDOWS\font\ARIBLK.TTF

列:


关于专栏的问题是错误的。查看期望的结果。我无法想象为什么要使用
ColumnDocumentRenderer
。我将为每个矩形创建一个
Canvas
对象,并将该
Canvas
对象传递给将内容添加到画布的方法。通过将
图像
对象传递给方法,而不是像创建
画布
对象那样多次在方法中创建
图像
,确保只添加一次图像字节。

如果不想创建列表,如何将文本添加到画布?您能否详细说明这个问题?你为什么要谈论
列表
?您认为为什么需要
列表
?你的问题听起来很奇怪。我提出这个问题的原因是因为我在你的网站上找到的唯一一个例子是在《星球大战》的例子中使用了IList。在您最初的回复中,您是否建议我为我想要的每个文本框创建一个画布?例如,电子版有自己的画布,Gamebreaker 2有自己的画布等等。我指的是讨论画布的章节:我不知道电子版和Gamebreaker 2是关于什么的。有没有办法将画布矩形内的垂直对齐改为“中间”,以便文本开始在画布矩形的绝对中心书写?