// ページ四角形を計算します(マージンを差し引いて)
Rect rcPage = WordUtils.PageRectangle(word);
Rect rc = rcPage;
// 出力パラメータを初期化します
Font hdrFont = new Font("Arial", 14, RtfFontStyle.Bold);
Font titleFont = new Font("Arial", 24, RtfFontStyle.Bold);
Font txtFont = new Font("Times New Roman", 10, RtfFontStyle.Italic);
// タイトルを追加します
var rcTop = WordUtils.RenderParagraph(word, word.Info.Title, titleFont, rcPage, rc);
rc = rcTop;
// ドキュメントを構築します
foreach (string s in GetQuotes())
{
string[] authorQuote = s.Split('\t');
// ヘッダーをレンダリングします(作成者)
var author = authorQuote[0];
rc.Y += 25;
rc = WordUtils.RenderParagraph(word, author, hdrFont, rcPage, rc, true);
// 本文をレンダリングします(引用文)
string text = authorQuote[1];
rc.X = rcPage.X + 36; // << 本文を 1/2 インチインデントします
rc.Width = rcPage.Width - 40;
rc = WordUtils.RenderParagraph(word, text, txtFont, rcPage, rc);
rc.X = rcPage.X; // << インデントを元に戻します
rc.Width = rcPage.Width;
rc.Y += 12; // << 各引用文の後に 12pt のスペースを追加します
if (rc.Y > rcPage.Height)
{
word.PageBreak();
rc = rcTop;
}
}
static List <string> GetQuotes()
{
var list = new List <string>();
using (var sr = new StreamReader(DataAccess.GetStream("quotes.txt")))
{
var quotes = sr.ReadToEnd();
foreach (string quote in quotes.Split('*'))
{
int pos = quote.IndexOf("\r\n");
if (pos > -1)
{
var q = string.Format("{0}\t{1}", quote.Substring(0, pos), quote.Substring(pos + 2).Trim());
list.Add(q);
}
}
}
return list;
}