次のコードを使用して、ページ 2 と 3 が横向きで他のページが縦向きのドキュメントを作成しようとしています。すべてが 8.5 インチ x 11 インチである必要があります。
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
using (DocX document = DocX.Create(ms))
{
document.PageLayout.Orientation = Novacode.Orientation.Portrait;
document.PageWidth = 816F;
document.PageHeight = 1056F;
document.MarginTop = 50F;
document.MarginRight = 50F;
document.MarginBottom = 75F;
document.MarginLeft = 50F;
document.AddHeaders();
document.AddFooters();
document.DifferentFirstPage = true;
document.DifferentOddAndEvenPages = false;
Header header_first = document.Headers.first;
Header header_main = document.Headers.odd;
Footer footer_main = document.Footers.odd;
Novacode.Table tHeaderFirst = header_first.InsertTable(2, 1);
tHeaderFirst.Design = TableDesign.None;
tHeaderFirst.AutoFit = AutoFit.Window;
Paragraph pHeaderFirst = header_first.Tables[0].Rows[0].Cells[0].Paragraphs[0];
Novacode.Image imgHeaderFirst = document.AddImage(ctx.Server.MapPath("~/proposal-assets/header-front.jpg"));
pHeaderFirst.InsertPicture(imgHeaderFirst.CreatePicture());
Novacode.Table tHeaderMain = header_main.InsertTable(2, 1);
tHeaderMain.Design = TableDesign.None;
tHeaderMain.AutoFit = AutoFit.Window;
Paragraph pHeader = header_main.Tables[0].Rows[0].Cells[0].Paragraphs[0];
Novacode.Image imgHeader = document.AddImage(ctx.Server.MapPath("~/proposal-assets/header-internal-portrait.jpg"));
pHeader.InsertPicture(imgHeader.CreatePicture());
Paragraph pFooter = footer_main.Paragraphs.First();
pFooter.Alignment = Alignment.center;
pFooter.Append("Page ");
pFooter.AppendPageNumber(PageNumberFormat.normal);
pFooter.Append("/");
pFooter.AppendPageCount(PageNumberFormat.normal);
Paragraph p1 = document.InsertParagraph("test");
p1.InsertPageBreakAfterSelf();
document.InsertSection(true);
document.PageLayout.Orientation = Novacode.Orientation.Landscape;
//document.PageWidth = 1056F;
//document.PageHeight = 816F;
Paragraph p2 = document.InsertParagraph("test");
p2.InsertPageBreakAfterSelf();
Paragraph p3 = document.InsertParagraph("test");
p3.InsertPageBreakAfterSelf();
document.InsertSection(true);
document.PageLayout.Orientation = Novacode.Orientation.Portrait;
//document.PageWidth = 816F;
//document.PageHeight = 1056F;
Paragraph p4 = document.InsertParagraph("test");
p4.InsertPageBreakAfterSelf();
Paragraph p5 = document.InsertParagraph("test");
p5.InsertPageBreakAfterSelf();
Paragraph p6 = document.InsertParagraph("test");
p6.InsertPageBreakAfterSelf();
document.Save();
}
}
これにはいくつかの問題があります。
まず、最初に向きを 1 回設定すると、すべてのページが正しいサイズになりますが、2 回目と 3 回目の変更を PageLayout.Orientation に追加すると、突然すべてのページが間違ったサイズになります。
第二に、セクションを挿入すると、ヘッダーとフッターで奇妙なことが起こります。3 番目のセクションの最初のページは、ドキュメントの最初のページのように機能し、最初のページのヘッダーとフッターを取ります。
最後に、2 番目と 3 番目の変更を PageLayout.Orientation に追加しても、ページの向きは実際には変更されません。コメントアウトされたコードでわかるように、レイアウトを変更した後、新しいページの高さと幅も設定しようとしました。そうすることで、ページが正しいサイズに戻りますが、向きにはまったく影響しません。
私は何が欠けていますか?どんな助けでも大歓迎です。