PDF处理控件Aspose.PDF进阶技巧:在C#中将PDF转换为PowerPoint PPTX
在前一篇教程中,我们讨论了如何在.NET应用程序中使用C#将PDF文件转换为PowerPoint PPT / PPTX演示文稿。在大多数情况下,基本的转换选项集效果很好。但是,在本文中,将讨论将PDF转换为PPTX的一些高级技巧:
- 处理注释或评论
- 将装饰图形与内容图像分开
目前,.NET版Aspose.PDF升级到v20.10版,新增支持ZUGFeRD附件,优化添加签名功能吗,修复XPS到PDF转换异常等诸多Bug问题,感兴趣的朋友可点击下方按钮下载最新版。
PDF至PPTX C#转换–处理注释或注释
当告诉别人一些事情并使用演示文稿时,我还喜欢在幻灯片上做笔记,画箭头,用几何形状绘制重音等。
如何在PDF上绘图?
很简单,可以在Adobe Reader DC或Microsoft Edge中打开PDF文件,然后使用铅笔工具。默认情况下,Adobe Reader使用红色铅笔。
而Microsoft Edge使用蓝色的。
如果将此类PDF文件转换为PPTX演示文稿,则所有注释都将传输到PPTX文件。
我们该如何解决?
根据PDF标准,我们正在处理页面的内容和名为注释的其他元素。让我们写一小段C#代码来研究此类文档中存在哪些类型的注释。
private static void ShowAnnotations() { var inputFileName = @"C:\tmp\Presentations\Sample Screen.pdf"; var document = new Aspose.Pdf.Document(inputFileName); foreach (var page in document.Pages) { foreach (var annotation in page.Annotations) { Console.WriteLine($"{page.Number} {annotation.FullName} {annotation.AnnotationType} {annotation.Color}"); } } }
执行后,我们将得到如下结果:
这意味着PDF页面上有三种类型的注释:
- 墨水–这是我们的铅笔画,
- 正方形-我们的矩形图,
- 弹出窗口–弹出注释会在弹出窗口中显示文本,以供输入和编辑。它不应单独出现,而是与标记注释及其父注释相关联,并应用于编辑父文本。在我们的示例中,弹出注释与Ink和Square链接。它没有外观流,因此不会影响PDF到PPTX的转换。
删除PDF到PPTX转换中的注释
因此,为了删除PDF中的其他图形,我们应该删除Ink和Square注释。以下是执行此操作的步骤。
- 使用Page.Annotations属性访问注释。
- 按类型过滤注释。
- 循环浏览注释,并使用Page.Annotations.Delete(Annotation)方法将其一一删除。
下面的C#代码段显示了删除PDF到PPTX转换中的注释的一种可能方法:
private static void RemoveAnnotations(Page page, Aspose.Pdf.Annotations.AnnotationType annotationType) { var annotations = page.Annotations.Where(a => a.AnnotationType == annotationType).ToArray(); foreach (var annotation in annotations) { page.Annotations.Delete(annotation); } }
如上所述,演示者可以使用不同的工具和颜色进行注释,并且我们可以(如果需要)调整最后一个样本。例如,我们只能删除红色(颜色代码#E52237)注释或某些演示者的注释。
让我们尝试另一种方法来改善PDF到PPTX转换中的图形内容。
C#PDF到PPTX –从内容图像中分离装饰图形
在将PDF转换为PPTX时,通常将PDF文件中的所有图像分组到输出中的单个背景图像中。这并不总是很方便,而且.NET的Aspose.PDF具有一种特殊的模式,可以在将PDF转换为PPTX时更改转换器的行为。
要启用此模式,可以将SeparateImages属性设置为true。以下代码片段显示了如何在C#中将PDF转换为PPTX时使用此选项:
private static void ConvertPDFtoPPTX(string inputFileName, string outputFileName) { var document = new Aspose.Pdf.Document(inputFileName); foreach (var page in document.Pages) { RemoveAnnotations(page, Pdf.Annotations.AnnotationType.Ink); RemoveAnnotations(page, Pdf.Annotations.AnnotationType.Square); } var options = new Aspose.Pdf.PptxSaveOptions { SeparateImages = true, //CustomProgressHandler = ShowProgressOnConsole }; document.Save(outputFileName, options); }
因此,来自先前示例的幻灯片将被分为3个图像。
应该注意的是,并非总是能够准确地将背景图像与内容图像分开。因此,转换器有时可能会出错,并在内容中添加额外的元素。
还想要更多吗?您可以点击阅读【2020 · Aspose最新资源整合】,查找需要的教程资源。如果您有任何疑问或需求,请随时加入Aspose技术交流群(642018183),我们很高兴为您提供查询和咨询。