以编程方式更改/添加pptx powerpoint的缩略图。使用Openxml SDK?

托比亚斯·梅尔(Tobias Mayr)

我将openxml sdk 2.5与Eric White的电动工具结合使用。我设法使用模板文件创建了动态的pptx演示文稿。(在C#中)不幸的是,缩略图在此过程中丢失了。
有什么方法可以使用openxml或电动工具来(重新)创建pptx文件的缩略图?
我成功编写了一些代码,该代码更改了带有图像的现有缩略图。但是,当没有缩略图时,它会给我System.NullReferenceException这是代码:

using OpenXmlPowerTools;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Packaging;

namespace ConsoleApplication1
{
    class AddThumbnail_
    {
        public static void ReplaceThumbnail(ThumbnailPart thumbnailPart, string newThumbnail)
        {
            using (
                FileStream imgStream = new FileStream(newThumbnail, FileMode.Open, FileAccess.Read))
            {
                thumbnailPart.FeedData(imgStream);
            }
        }

        static void Main(string[] args)
        {
            var templatePresentation = "Modified.pptx";
            var outputPresentation = "Modified.pptx";
            var baPresentation = File.ReadAllBytes(templatePresentation);
            var pmlMainPresentation = new PmlDocument("Main.pptx", baPresentation);
            OpenXmlMemoryStreamDocument streamDoc = new OpenXmlMemoryStreamDocument(pmlMainPresentation);
            PresentationDocument document = streamDoc.GetPresentationDocument();
            var thumbNailPart = document.ThumbnailPart;
            ReplaceThumbnail(thumbNailPart, @"C:\Path\to\image\image.jpg");
            document.SaveAs(outputPresentation);
        }
    }
}

编辑:我意识到之前曾有人问过这个问题(如何在C#中为PPTX文件生成缩略图?),答案是“保存演示文稿时启用预览屏幕截图”,但这意味着我必须打开每个pptx并手动设置此标志。我将不胜感激C#解决方案。

先感谢您!

骨el

如果缩略图ThumbnailPart不存在,则文档中不一定存在缩略图,因此thumbNailPart代码中变量将为null。在这种情况下,除了设置图像外,ThumbnailPart还需要添加零件本身。

通常,在使用OpenXml SDK时,您会调用AddPart传入方法,new ThumbnailPart但由于某种原因,ThumbnailPart构造函数protected internal可访问的,因此您无法使用它。相反,在上有一个AddThumbnailPart方法PresentationDocument将创建一个new ThumbnailPartAddThumbnailPart方法采用内容类型的字符串或ThumbnailPartType枚举成员。

将以下内容添加到您的代码中应该可以解决您的问题:

if (document.ThumbnailPart == null)
    document.AddThumbnailPart(ThumbnailPartType.Jpeg);

var thumbNailPart = document.ThumbnailPart;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用CSS更改滚动条缩略图的大小

来自分类Dev

将Azure Media Services缩略图任务预设与Java SDK结合使用

来自分类Dev

Wordpress-以编程方式添加不生成缩略图的产品

来自分类Dev

如何更改最近的App缩略图?

来自分类Dev

单击缩略图,更改图像

来自分类Dev

如何更改缩略图的样式?

来自分类Dev

在wordpress中更改缩略图属性?

来自分类Dev

Cwac相机添加缩略图图像

来自分类Dev

将鼠标悬停在缩略图上可使用CSS更改更大的div

来自分类Dev

JavaScript - 通过仅使用 addEventListener 单击缩略图图像来更改预览图像

来自分类Dev

错误500使用Youtube API v3添加缩略图

来自分类Dev

使用jQuery Chosen插件后如何添加缩略图以下拉?

来自分类Dev

如何在Opera的快速拨号中更改缩略图?

来自分类Dev

在UISlider的缩略图上连续更改UILabel的值

来自分类Dev

如何更改WooCommerce缩略图的裁剪位置?

来自分类Dev

如何更改jssor缩略图导航器的宽度

来自分类Dev

如何更改Android缩略图以保护敏感数据

来自分类Dev

无法更改magento网站的Facebook缩略图

来自分类Dev

DWM缩略图,更改预览窗口的大小

来自分类Dev

WooCommerce:更改图库缩略图的大小

来自分类Dev

JQueryMobile-在代码中更改缩略图图像src

来自分类Dev

如何更改jssor缩略图导航器的宽度

来自分类Dev

如何根据单击的缩略图使javascript更改main div?

来自分类Dev

无法更改magento网站的Facebook缩略图

来自分类Dev

如何在flexslider中更改活动缩略图的样式

来自分类Dev

DWM缩略图,更改预览窗口的大小

来自分类Dev

YouTube缩略图网址是否已更改?

来自分类Dev

Jcrop 更改父 div 以进行缩略图预览

来自分类Dev

插入时如何向YouTube视频添加缩略图

Related 相关文章

热门标签

归档