1

OpenXml Powertools の DocumentBuilder を使用して、いくつかの単語文書を単一の単語文書にマージしようとしています。これはマージに使用されるコードです:

var sources = new List<Source>();
                foreach (var doc in documents)
                {
                    var wmlDoc = new WmlDocument(doc.Path);

                    sources.Add(new Source(wmlDoc, doc.PageBreak));
                }

                var newDestinationDocument = DocumentBuilder.BuildDocument(sources);

の各オブジェクトdocumentsには、ドキュメントへのパスと、ドキュメントの後に改ページを挿入するかどうかを示す bool が含まれています。

Sourceこのコードは機能していますが、問題は、改ページではなくセクション区切りを取得することです。コンストラクターの 2 番目のパラメーターがセクション区切りブールを表していることはわかっていますが、代わりに改ページが必要です。

これは、結果の文書が meging 後に含むものです: ここに画像の説明を入力

そして、私はこのようなものが必要です:

ここに画像の説明を入力

altChunksInteropまたはこれには有料ライブラリを使用できません。

4

1 に答える 1

1

追加する必要があります

<w:br w:type="page" />

改ページで区切りたい文書の文書段落の最初または最後に。

コードを適用する前に、次のことを試してください -

WordprocessingDocument myDoc = WordprocessingDocument.Open(@"file path", true);
MainDocumentPart mainPart = myDoc.MainDocumentPart;
OpenXmlElement last = myDoc.MainDocumentPart.Document
    .Body
    .Elements()
    .LastOrDefault(e => e is Paragraph || e is AltChunk);
last.InsertAfterSelf(new Paragraph(
    new Run(
        new Break() { Type = BreakValues.Page })));
mainPart.Document.Save();

ファイルの最後の段落を選択しました。要件に基づいて、最初のドキュメントに対しても同じことを選択できます。

上記のコードは<w:br w:type="page" />、手動改ページを追加する を追加します。

<w:pageBreakBefore/>このタグに続く段落が新しいページにレンダリングされることをクライアント (MS Word など) に指定するドキュメントの最後の段落を使用することもできます。

于 2016-06-01T09:58:36.090 に答える