将内容从Word文档复制到另一个Word文档时,我遇到了一些问题。 信息应该最终出现的文件有一个标题。
到目前为止,我已设法将内容复制到第二个文档而不影响标题。 但是,我无法弄清楚如何绑定链接和图像的关系。
到目前为止,这是我的代码:
public static void AddContentToTemplateCopy(
string sourceDocumentPath, string endDocumentPath)
{
using (WordprocessingDocument sourceDoc =
WordprocessingDocument.Open(sourceDocumentPath, false))
using (WordprocessingDocument endDoc =
WordprocessingDocument.Open(endDocumentPath, true))
{
var sourceMainPart = sourceDoc.MainDocumentPart;
var sourceBody = sourceMainPart.Document.Body;
var endSection = endDoc.MainDocumentPart.Document.Body.Elements<SectionProperties>();
var endDocMainPart = endDoc.MainDocumentPart;
var sourceBodyClone = sourceBody.CloneNode(true);
sourceBodyClone.ReplaceChild(endSection.FirstOrDefault().CloneNode(true), sourceBodyClone.Elements<SectionProperties>().FirstOrDefault());
endDocMainPart.Document.ReplaceChild(sourceBodyClone, endDocMainPart.Document.Body);
foreach (HyperlinkRelationship link in sourceMainPart.HyperlinkRelationships)
{
endDocMainPart.AddHyperlinkRelationship(link.Uri, link.IsExternal, link.Id);
}
}
我收到以下错误:&#39; rId6&#39; ID与指定源的现有关系的ID冲突。
如果我在内容中有图像则无法显示。
如果我压缩文档并查看包中的文件,我可以找到图像,但出于与链接相同的原因,关系
所以我的问题是:如何将链接和图片与他们的&#34; _rels&#34;参考?或者我如何复制它们才能起作用..
当我手动添加链接时,这是一个关系链接。
<Relationship Target="media/image1.jpg" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Id="rId11"/>
显示链接文本已复制但没有格式且无法显示图像的图片。
答案 0 :(得分:2)
感谢JasonPlutext的回答,我设法使用OpenXML PowerTools (Version 2.2).请记住,导入项目时.Net版本是3.5。你可能需要改变它。 (支持Open XML 2.5以及我注意到的)
创建新文档并从旧文档中获取部件非常简单。
这里的代码是我的情况,我希望格式和内容来自一个,然后是模板文档中的标题。订单很重要。
希望这会为遇到同样问题的其他人节省时间。
public static void AddContentToTemplateCopy(string templateDocumentPath,
string contentDocumentPath,
List<Source> sources,
string outName)
{
sources = new List<Source>()
{
new Source(new WmlDocument(contentDocumentPath),false),
new Source(new WmlDocument(templateDocumentPath),true),
};
DocumentBuilder.BuildDocument(sources, outName);
}
答案 1 :(得分:1)
您可能会发现尝试Eric White的document builder更容易。