要使用OpenXml 2.0将任何文件类型嵌入到Microsoft Word中,您需要遵循以下步骤:
以下是一个示例代码,演示如何将PDF文件嵌入到Microsoft Word文档中:
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(docxFile, true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
// 将PDF文件转换为OpenXml格式
byte[] pdfBytes = File.ReadAllBytes(pdfFile);
AlternativeFormatImportPart afiPart = mainPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.Pdf, mainPart.GetIdOfPart(mainPart.Document));
using (MemoryStream ms = new MemoryStream(pdfBytes))
{
afiPart.FeedData(ms);
}
// 创建嵌入式包含部分
EmbeddedPackagePart packagePart = mainPart.AddEmbeddedPackagePart(afiPart.ContentType);
using (FileStream fs = new FileStream(pdfFile, FileMode.Open))
{
packagePart.FeedData(fs);
}
// 创建嵌入式对象
OpenXmlUnknownElement unknownElement = afiPart.CreateElement(new OpenXmlQualifiedName("o:OLEObject", "urn:schemas-microsoft-com:office:office"));
unknownElement.SetAttribute(new OpenXmlQualifiedName("Type", ""), "Embed");
unknownElement.SetAttribute(new OpenXmlQualifiedName("ProgID", ""), "AcroExch.Document.11");
unknownElement.SetAttribute(new OpenXmlQualifiedName("ShapeID", ""), "_x0000_t129");
unknownElement.SetAttribute(new OpenXmlQualifiedName("DrawAspect", ""), "Icon");
unknownElement.SetAttribute(new OpenXmlQualifiedName("ObjectID", ""), "_1294302452");
// 将嵌入式对象添加到文档中
Paragraph p = new Paragraph();
Run r = new Run();
Drawing d = new Drawing();
d.Append(unknownElement);
r.Append(d);
p.Append(r);
mainPart.Document.Body.Append(p);
}
请注意,这个示例代码仅适用于将PDF文件嵌入到Microsoft Word文档中。如果您要嵌入其他类型的文件,您需要相应地修改代码。
领取专属 10元无门槛券
手把手带您无忧上云