簡體   English   中英

ASP.NET到PowerPoint:添加圖像時文件損壞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM