新しい行を取得しようとしていますが、\n
を使用すると機能しません。
\r\n
のような文字列に何かを追加して改行する方法(これも機能しません)
gfx.DrawString("Project No \n" + textBoxProjNumber.Text, fontUnder, XBrushes.Black, 230, 95);
(サンプルスニペットは、私が試したものを示していますが、機能しません)。
XTextFormatterクラスを試しましたか?
ここを参照してください: http://www.pdfsharp.net/wiki/TextLayout-sample.ashx
コードスニペット:
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Times New Roman", 10, XFontStyle.Bold);
XTextFormatter tf = new XTextFormatter(gfx);
XRect rect = new XRect(40, 100, 250, 220);
gfx.DrawRectangle(XBrushes.SeaShell, rect);
tf.DrawString(text, font, XBrushes.Black, rect, XStringFormats.TopLeft);
これは、Rectクラスの使用を伴わない私が行ったことです。
右側の制限を定義し、現在の文字列が設定された境界よりも大きくなるかどうかを判断しました。もしそうなら、私はそれを書きました。それ以外の場合は、追加を続けました。
foreach (string field in temp)
{
if (field == string.Empty)
{
continue;
}
else
{
tempSB.Clear();
tempSB.Append(sb.ToString());
tempSB.Append(field).Append(", "); //append the incoming value to SB for size testing
if (gfx.MeasureString(tempSB.ToString(), defaultFont).Width > 500) //if the incoming string is bigger than the right bounds, write it and clear SB
{
gfx.DrawString(sb.ToString(), defaultFont, blackBrush, 50, currentLine + defaultSpacing);
currentLine += 15;
sb.Clear();
sb.Append(" " + field).Append(","); //add the overflow to the beginning of the next line
}
else
{
sb.Append(field).Append(", "); //if it is not too big, append it
}
}
}
if (sb.Length > 0 && sb[sb.Length - 1] == ',') sb.Length--;
gfx.DrawString(sb.ToString(), defaultFont, blackBrush, 50, currentLine + defaultSpacing); //write out whatever has not already been written out
私はこの質問に遅れていることを知っていますが、それが誰かを助けることができることを願っています。