[英]ASP.NET to PowerPoint: File gets corrupted when adding image
在將數據導出到PowerPoint時,我使用了以下示例:
我已經修改了GenerateSlidesFromDB()方法:
public void GenerateSlidesFromDB()
{
string slideName = @"C:\Users\x\Desktop\output.pptx";
File.Copy(@"C:\Users\x\Desktop\Test.pptx", slideName, true);
using (PresentationDocument presentationDocument = PresentationDocument.Open(slideName, true))
{
PresentationPart presentationPart = presentationDocument.PresentationPart;
SlidePart slideTemplate = (SlidePart)presentationPart.GetPartById("rId2");
string firstName = "Test User";
SlidePart newSlide = CloneSlidePart(presentationPart, slideTemplate);
InsertContent(newSlide, firstName);
newSlide.Slide.Save();
DeleteTemplateSlide(presentationPart, slideTemplate);
presentationPart.Presentation.Save();
}
}
如您所見,我用“測試用戶”覆蓋了占位符,它的作用就像一個超級按鈕。 我需要將圖像(作為占位符)添加到此pptx文件。
當我這樣做(並再次運行代碼)時,我得到了損壞的pptx文件? 錯誤信息:
PowerPoint刪除了output.pptx中的不可讀內容。 您應該查看此演示文稿,以確定是否意外更改或刪除了任何內容。
編輯:如果我嘗試原始代碼(由於我沒有Adventureworks,這會稍作修改),但我會收到其他錯誤消息:
由於以下原因,該文件可能已損壞或損壞:第三方XML編輯器有時會創建與Microsoft Office XML規范不兼容的文件。 該文件已被故意破壞,旨在損害您的計算機或數據。 從未知來源打開文件時要小心。 PowerPoint可以嘗試從文件中恢復數據,但是某些演示數據,例如形狀,文本和格式,可能會丟失。 請執行以下操作之一:如果要從文件中恢復數據,請單擊“是”。 如果您不想從文件中恢復數據,請單擊“否”。
好的,對不起這個帖子。 我的錯。
解:
string imgId = "rIdImg" + i;
ImagePart imagePart = newSlide.AddImagePart(ImagePartType.Jpeg, imgId);
MemoryStream stream3 = new MemoryStream();
using (FileStream file = File.Open(@"C:\Users\x\Desktop\Test.jpg", FileMode.Open))
{
byte[] buffer = new byte[file.Length];
file.Read(buffer, 0, (int)file.Length);
stream3.Write(buffer, 0, buffer.Length);
imagePart.FeedData(new MemoryStream(buffer));
}
SwapPhoto(newSlide, imgId);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.