c# - 使用 PDFsharp 添加文本行
问题描述
我正在使用 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,一个可用于布局器的区域的 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);
http://development.wellisolutions.de/generating-pdf-with-pdfsharp/
推荐阅读
- c++ - 如何更新 QT 中的窗口?
- inheritance - ocaml 如何使用具体类型测试模块
- amazon-web-services - aws ec2 describe-instance-status 按标签过滤不起作用
- java - 删除链接的特定部分
- android - 如何从 Kotlin 中的 Firebase Cloud Firestore 获取数据
- linux - 将 Carbone 添加到 Docker 映像
- regression - 多元回归的中心变量 - 对组效应感兴趣
- python - 空列表上的python if语句
- python - 如何在python中用字节字符串打包大型结构
- hadoop - 如何在 S3 上合并数百万个小 (<1MB) 文件?