Although question is general situation, I am using BKShorts to print a report.
I have a paragraph stored in a TextArea that I need to print (using BKShorts). used the following code to process it into print lines (sInfo is the paragraph, sWords is a string array):
If sInfo <> "" Then iLine = iLine + (kLineHeight * 3) sWords = Split(sInfo) iCount = sWords.Ubound + 1 iWord = 0 While iWord < iCount iLength = 0 sLine = "" While (iLength <= 500) And (iWord < iCount) sLine = sLine + sWords(iWord) + " " iLength = sLine.Length iWord = iWord + 1 Wend oDetail = New BKS_Shorts.TextItem oDetail.Text = sLine oDetail.Left = iLeftMargin + 5 oDetail.Top = iLine oDetail.Height = kLineHeight oDetail.Width = 500 oDetail.Style = New BKS_Shorts.StyleSet oDetail.Style.TextBold = False oDetail.Style.TextSize = kFontSize oDetail.Style.TextAlign = BKS_Shorts.TextAlignment.Left oPage.Append(oDetail) iLine = iLine + kLineHeight If iLine > kMaxLine Then oShortsDocument.AppendPage(oPage) oPage = CreateNewPage iLine = 90 End If sLine = "" Wend End If
How do I convert the number of characters in the print line to the physical line width in pixels? Font size is set to 12. In just trying different numbers, I found that if I multiply the length of sLine by 6 it works out but it is surly not ‘elegant’. is there a formula to calculate the line width?