12

我正在尝试将 powerpoint 演示文稿转换为单独的 svg 文件(每张幻灯片 1 个),是否可以使用 Microsoft Office 2010 PIA 来做到这一点?

如果是这样,那么是否有任何关于在 Java 中使用 Microsoft Office 2010 PIA 的教程?

4

7 回答 7

19

我知道没有现成的自动转换器,但我成功地将每张幻灯片保存为 Powerpoint 中的 PDF,然后在 Inkscape 中打开 PDF 并重新保存为 SVG。Powerpoint 的 PDF 导出和 Inkscape 的 PDF 导入都非常复杂并且产生了良好的效果,并且 SVG 是 Inkscape 的本机保存格式,但是可能需要在 Inkscape 中对导入的 PDF 进行一些调整才能精确地再现原始中的某些元素。

我安装了 Adob​​e Acrobat 可能会有所不同,但我没有使用“另存为 Adob​​e PDF”插件,只是使用普通的“另存为”对话框。使用“另存为 Adob​​e PDF”会产生较差的结果。

于 2012-05-22T23:04:37.577 回答
9

我在导出为 Inkscape 也可以读取的增强型 Windows 元文件 (.emf) 时获得了更好的成功。

它“更好”,因为当我尝试导入导出的 PDF 时,Inkscape 生成了一堆图像文件。导入的 SVG 的 XML 看起来也更干净。

于 2014-01-31T18:41:15.863 回答
7

我意识到这是一个老问题,但我最近尝试这样做并找到了一个使用 Google 幻灯片效果很好的解决方案:

  1. 将 PowerPoint 上传到 Google Drive,然后单击Open in Google Slides,或
  2. 创建一个新的 Google 幻灯片演示文稿,然后单击File -> Import Slides...并拉入您需要的幻灯片。
  3. File -> Download as -> Scalable Vector Graphics (.svg, current slide).
于 2019-02-17T01:14:14.217 回答
2

这就是我的做法(没有 Office PIA)。

  1. 运行宏以将 PPTX 拆分为与演示文稿中的幻灯片一样多的 PDF 文件。
  2. 使用 inkscape 将每个 PDF 转换为 SVG

VBA 宏

Sub ExportAllSlidesInPDF()

  Dim SourceView, answer As Integer
  Dim SourceSlides, NumPres, x As Long
  Dim ThisSlideFileNamePDF As String

  NumPres = Presentations.Count

  If NumPres = 0 Then
     MsgBox "No Presentation Open", vbCritical, vbOKOnly, "No Presentations Open"
  End If

  SourceView = ActiveWindow.ViewType
  SourceSlides = ActivePresentation.Slides.Count

  For x = 1 To SourceSlides
     Presentations.Add
     With ActivePresentation.PageSetup
        .SlideHeight = Presentations(1).PageSetup.SlideHeight
        .SlideWidth = Presentations(1).PageSetup.SlideWidth
     End With

     If ActiveWindow.ViewType <> ppViewSlide Then
        ActiveWindow.ViewType = ppViewSlide
     End If

     Presentations(1).Windows(1).Activate
     If ActiveWindow.ViewType <> ppViewSlideSorter Then
        ActiveWindow.ViewType = ppViewSlideSorter
     End If

     ActivePresentation.Slides.Range(Array(x)).Select
     ActiveWindow.Selection.Copy

     Presentations(2).Windows(1).Activate
     If ActiveWindow.ViewType <> ppViewSlide Then
        ActiveWindow.ViewType = ppViewSlide
     End If

     ActiveWindow.View.Paste
     ActiveWindow.Selection.Unselect

     ThisSlideFileNamePDF = "Slide_" & x & ".pdf"
     ActivePresentation.SaveAs ThisSlideFileNamePDF, ppSaveAsPDF
     ActivePresentation.Close

     Presentations(1).Windows(1).Activate

  Next x

  ActiveWindow.ViewType = SourceView

End Sub

这可以改进(例如对话框、更多控件、添加为插件),但原则上是这样。

墨水景观步骤

Linux 机器的单线:

for file in *.pdf; do inkscape --without-gui "--file=$file" "--export-plain-svg=${file%%.*}.svg"; done
于 2015-11-29T02:01:27.810 回答
0

这将非常困难,没有直接的方法可以做到这一点(如果我错了,请纠正我!) - 最简单的方法是打印到 XPS,然后转换 XAML(XPS == XAML + Zip文件)到 SVG 文件;这也不容易或直接,但 XAML => SVG 之间的映射可能更接近。

于 2011-04-25T04:07:23.537 回答
0

这不是最流畅的翻译,但请查看docx4j的 pptx4j 组件以在 SVG 中呈现大多数项目:http: //dev.plutext.org/svn/docx4j/trunk/docx4j/src/pptx4j/java/org/pptx4j/样本/RenderAsSvgInHtml.java

于 2011-04-25T18:07:05.520 回答
0

在 Mac OSX 上,它未针对从命令行 [1] 使用进行优化,因此您需要为文件添加绝对路径:

for file in *.pdf; do inkscape --without-gui "--file=${PWD}/${file}" "--export-plain-svg=${PWD}/${file%%.*}.svg"; done

否则,您会收到以下错误消息:

** 消息:无法打开 PDF 文件。

**(inkscape-bin:13267):警告**:无法打开文件:myfile.pdf(不存在)

** (inkscape-bin:13267): 警告 **: 指定的文档 myfile.pdf 无法打开(不存在或不是有效的 SVG 文件)

[1] OSX 上的 Inkscape 无法通过终端命令打开 PDF 文件

于 2018-05-11T11:06:48.953 回答