PDF处理控件Aspose.PDF进阶技巧:在C#中将PDF转换为PowerPoint PPTX

前一篇教程中,我们讨论了如何在.NET应用程序中使用C#将PDF文件转换为PowerPoint PPT / PPTX演示文稿。在大多数情况下,基本的转换选项集效果很好。但是,在本文中,将讨论将PDF转换为PPTX的一些高级技巧:

  • 处理注释或评论
  • 将装饰图形与内容图像分开

点击下载最新版Aspose.PDF for .NET

PDF至PPTX C#转换–处理注释或注释

当告诉别人一些事情并使用演示文稿时,我还喜欢在幻灯片上做笔记,画箭头,用几何形状绘制重音等。

如何在PDF上绘图?

很简单,可以在Adobe Reader DC或Microsoft Edge中打开PDF文件,然后使用铅笔工具。默认情况下,Adobe Reader使用红色铅笔。

PDF处理控件Aspose.PDF进阶技巧:在C#中将PDF转换为PowerPoint PPTX

而Microsoft Edge使用蓝色的。

PDF处理控件Aspose.PDF进阶技巧:在C#中将PDF转换为PowerPoint PPTX

如果将此类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个图像。

PDF处理控件Aspose.PDF进阶技巧:在C#中将PDF转换为PowerPoint PPTX

应该注意的是,并非总是能够准确地将背景图像与内容图像分开。因此,转换器有时可能会出错,并在内容中添加额外的元素。

猜你喜欢

转载自blog.csdn.net/m0_67129275/article/details/132290231
今日推荐