首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OpenXML SDK AddAlternativeFormatImportPart后丢失的Word文档方向

使用OpenXML SDK AddAlternativeFormatImportPart后丢失的Word文档方向
EN

Stack Overflow用户
提问于 2014-08-19 20:33:18
回答 1查看 1.4K关注 0票数 2

我试图将几个Word文档合并成一个Word文档。我正在使用MicrosoftSDK2.5中的AltChunk功能。最后的报告必须是面向景观的,因此我们把每个组件文档都放到了景观模式中。我将使用以下代码合并这些文档。

代码语言:javascript
复制
for (int i = 0; i < otherDocs.Length; i++)
{
    using (var headerDoc = WordprocessingDocument.Open(headerPath, true))
    {
        var mainPart = headerDoc.MainDocumentPart;

        string altChunkId = "AltChunkId" + i;
        var chunk = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.WordprocessingML, altChunkId);

        using (var fileStream = File.Open(otherDocs[i], FileMode.Open))
        {
            chunk.FeedData(fileStream);
        }

        var altChunk = new AltChunk();
        altChunk.Id = altChunkId;
        mainPart.Document.Body.InsertAfter(altChunk, mainPart.Document.Body.Elements<Paragraph>().Last());
        mainPart.Document.Save();

        DocumentWriter.SetPrintOrientation(headerDoc, PageOrientationValues.Landscape);

        headerDoc.Close();
    }
}

当我运行此代码时,如果组件文档至少有一个区段中断,则最终输出文档具有横向和纵向方向的混合。

DocumentWriter.SetPrintOrientation()方法是根据MSDN的指令实现的。这似乎对文件的实际方向没有任何影响。我还检查了底层的XML文件,所有的"orient“属性都被设置为set。

我是否可以使用一些配置选项或API调用来确保最终文档在所有部分都具有横向方向?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-27 20:59:03

XML文档是定义其内容、格式和元数据的OpenXML文档的压缩集合。使用AddAlternativeFormatImportPart将Word文档合并到一起时,将合并到原始文档(AltChunks)中的Word文档被复制到zip存档中,引用文档的XML元素将被添加到XML定义中。然后,下次任何人在Microsoft (或任何其他OpenXML兼容文档编辑器)中打开结果文档时,应用程序将在AltChunks中处理合并。在这种情况下,Microsoft 2010 (我们正在使用的版本)有一个导致Word忽略Word文档部分中定义的某些格式信息的错误。这些信息之一是定位,使得AltChunk方法在保存定位信息方面无效。

相反,我们使用了来自DocumentBuilder的OpenXml电动工具项目。这导致了更简单的代码,用两行代码解决了我们的问题:

代码语言:javascript
复制
var sourceList = documentPaths.Select(doc => new Source(new WmlDocument(doc), true)).ToList();
DocumentBuilder.BuildDocument(sourceList, outputPath);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25392481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档