/// <summary>
        /// 產生輸出的點字資料。
        /// </summary>
        /// <returns></returns>
        private StringBuilder GenerateOutputData()
        {
            int           lineCnt = 0;
            int           pageNum = 0;          // 程式內部處理的頁碼
            BrailleLine   brLine;
            StringBuilder sb = new StringBuilder();

            int realLinesPerPage = m_PrintOptions.LinesPerPage;

            if (m_PrintOptions.PrintPageFoot)  // 如需列印頁碼,每頁可印列數便少一列。
            {
                realLinesPerPage--;
            }

            // 計算起始列索引
            int lineIdx = 0;

            if (!m_PrintOptions.AllPages)
            {
                lineIdx = CalcTextLineIndex(m_PrintOptions.FromPage - 1);
            }

            // 準備輸出至點字印表機的資料
            while (lineIdx < m_BrDoc.LineCount)
            {
                brLine = m_BrDoc.Lines[lineIdx];

                SetOrgPageNumber(brLine, (lineCnt % realLinesPerPage == 0));    // 設定起始/終止原書頁碼。

                sb.Append(BrailleCharConverter.ToString(brLine));
                sb.Append(NewLine);     // 每一列後面附加一個換行符號。

                lineCnt++;

                // 列印頁尾資訊:文件標題、原書頁碼、點字頁碼。
                if (lineCnt % realLinesPerPage == 0)   // 已經印滿一頁了?
                {
                    if (m_PrintOptions.PrintPageFoot)  // 是否要印頁尾?
                    {
                        pageNum++;

                        sb.Append(GetBraillePageFoot(lineIdx, m_DisplayedPageNum, m_BeginOrgPageNumber, m_EndOrgPageNumber));

                        AddPageBreak(sb);
                    }

                    m_DisplayedPageNum++;

                    // 每一頁開始列印時,都要把上一頁的終止原書頁碼指定給本頁的起始原書頁碼。
                    if (m_EndOrgPageNumber >= 0)
                    {
                        m_BeginOrgPageNumber = m_EndOrgPageNumber;
                    }

                    if (pageNum >= m_PrintOptions.ToPage)
                    {
                        break;
                    }
                }

                lineIdx++;
            }

            // 補印頁碼
            if (lineCnt % realLinesPerPage != 0)
            {
                pageNum++;

                if (m_PrintOptions.PrintPageFoot)
                {
                    // 用空白列補滿剩餘的頁面
                    int n = realLinesPerPage - (lineCnt % realLinesPerPage);
                    for (int i = 0; i < n; i++)
                    {
                        sb.Append(NewLine);
                    }

                    sb.Append(GetBraillePageFoot(lineIdx, m_DisplayedPageNum, m_BeginOrgPageNumber, m_EndOrgPageNumber));

                    AddPageBreak(sb);
                }
                m_DisplayedPageNum++;
            }

            if (m_PrintOptions.BrSendPageBreakAtEndOfDoc)
            {
                sb.Append(NewPage);
            }

            return(sb);
        }