C# 使用PDFsharp添加文本行

C# 使用PDFsharp添加文本行,c#,pdfsharp,C#,Pdfsharp,我正在使用PDFsharp创建PDF文件。我的问题是,当我把文本行放到PDF中时,我只得到一行。因此,自然地,第一行上的所有文本都是可见的,因为另一个文本溢出了边界。 请参阅下面我的代码: private void createPdf2() { var title = DateTime.Now.ToString("MM-dd-yyyy-hh-m-ss") + "-" + txtPlazaNumber.Text + "-" + txtLaneNumber.

我正在使用PDFsharp创建PDF文件。我的问题是,当我把文本行放到PDF中时,我只得到一行。因此,自然地,第一行上的所有文本都是可见的,因为另一个文本溢出了边界。

请参阅下面我的代码:

private void createPdf2()
        {
            var title = DateTime.Now.ToString("MM-dd-yyyy-hh-m-ss") + "-" + txtPlazaNumber.Text + "-" + txtLaneNumber.Text;
            var now = DateTime.Now;
            var sb = new StringBuilder();
            sb.AppendLine("Date: " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss")).AppendLine(Environment.NewLine);
            sb.AppendLine("Plaza Number: " + txtPlazaNumber.Text).AppendLine(Environment.NewLine);
            sb.AppendLine("Lane Number: " + txtLaneNumber.Text).AppendLine(Environment.NewLine);
            sb.AppendLine("RFID IP Address: " + txtRfidIpAddress.Text).AppendLine(Environment.NewLine);
            sb.AppendLine("RFID Port: " + nRfidPort.Text).AppendLine(Environment.NewLine);
            sb.AppendLine("TFI IP Address: " + txtTfiIpAddress.Text).AppendLine(Environment.NewLine);
            sb.AppendLine("QR Port: " + nQrPort.Text).AppendLine(Environment.NewLine);

            sb.AppendLine("Passed Tests").AppendLine();
            foreach(var p in passedList)
            {
                sb.AppendLine("\t").Append(p.Trim()).AppendLine();
            }
            sb.AppendLine("Failed Tests").AppendLine();
            foreach(var f in failedList)
            {
                sb.AppendLine("\f").Append(f.Trim()).AppendLine();
            }

            PdfDocument pdf = new PdfDocument();
            pdf.Info.Title = title;
            PdfPage pdfPage = pdf.AddPage();
            XGraphics graph = XGraphics.FromPdfPage(pdfPage);
            XFont font = new XFont("Verdana", 12, XFontStyle.Regular);
            graph.DrawString(sb.ToString(), font, XBrushes.Black, new XRect(0, 0, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft);
            string pdfFilename = title + ".pdf";
            pdf.Save(pdfFilename);
}

这是一个有点棘手的工作。您需要一个XTextFormatter,一个可用于layouter的区域的XRect,然后在格式化程序上调用DrawString(…),而不是XGraphics对象:

var formatter = new XTextFormatter(pageGraphics);
var layoutRectangle = new XRect(10, 10, page.Width, page.Height);
formatter.DrawString("Hello\r\nWorld", arial, XBrushes.Black, layoutRectangle);

格式化程序有一个增强版本:考虑使用MigRADOC来利用自动换行和自动分页。谢谢你。