初心者です。
お手柔らかにお願いします。
前提・実現したいこと
DBからデータ(文字列)を取得してPDF(ブラウザ)に出力する処理を行っております。
文字列内には改行も含まれるため、String.ReadLine()で一行ずつ簡易に取得しております。
一行に表示できる文字数を制限したいのですがその部分が上手くいきません。
とりあえず文字数制限をかけていない状態のソース
vbnet
1'DBから文字列取得 2Dim contents As String 3contents = comment.Rows(dataloop)("moji").ToString 4Dim coment As New System.IO.StringReader(contents) 5While coment.Peek() > -1 6 '一行読み込んで表示する 7 objpdf.DrawText(nRtnCode, pageno, pagedirection, inX, inY + (-dispY), fontwidth, fonthieght, coment.ReadLine(), font) 8 'Y座標更新 9 dispY += 1 10End While
この場合の結果がこちらです。
見て頂けると分かると思うのですが、枠外にはみ出してしまっています。
これを文字数制限をしてMax文字になったら次行に表示するという処理をしたいです。
実際にやってみた結果
文字数制限の処理をいれてやってみました。
vbnet
1Dim maxmoji As Short = 63 2Dim contents As String 3 4'コメント 5contents = comment.Rows(dataloop)("CONTENTS").ToString 6Dim coment As New System.IO.StringReader(contents) 7While coment.Peek() > -1 8 Dim max As Integer = coment.ReadLine().Length 9 'Max文字数チェック 10 If max <= maxmoji Then 11 '一行読み込んで表示する 12 objpdf.DrawText(nRtnCode, pageno, pagedirection, inX, inY + (-dispY), fontwidth, fonthieght, coment.ReadLine(), font) 13 'Y座標更新 14 dispY += 1 15 Else 16 For i As Integer = 0 To max Step maxmoji 17 Dim len As Integer = If(i + maxmoji < max, maxmoji, max - i) 18 objpdf.DrawText(nRtnCode, pageno, pagedirection, inX, (inY + (-dispY)), fontwidth, fonthieght, contents.Substring(i, len), font) 19 'Y座標更新 20 dispY += 1 21 Next 22 End If 23End While
補足情報(FW/ツールのバージョンなど)
PdfGeneratorNetFree.dll
.Net 2010
Framework 4
MySql