我正在尝试将 powerpoint 演示文稿转换为单独的 svg 文件(每张幻灯片 1 个),是否可以使用 Microsoft Office 2010 PIA 来做到这一点?
如果是这样,那么是否有任何关于在 Java 中使用 Microsoft Office 2010 PIA 的教程?
我正在尝试将 powerpoint 演示文稿转换为单独的 svg 文件(每张幻灯片 1 个),是否可以使用 Microsoft Office 2010 PIA 来做到这一点?
如果是这样,那么是否有任何关于在 Java 中使用 Microsoft Office 2010 PIA 的教程?
我知道没有现成的自动转换器,但我成功地将每张幻灯片保存为 Powerpoint 中的 PDF,然后在 Inkscape 中打开 PDF 并重新保存为 SVG。Powerpoint 的 PDF 导出和 Inkscape 的 PDF 导入都非常复杂并且产生了良好的效果,并且 SVG 是 Inkscape 的本机保存格式,但是可能需要在 Inkscape 中对导入的 PDF 进行一些调整才能精确地再现原始中的某些元素。
我安装了 Adobe Acrobat 可能会有所不同,但我没有使用“另存为 Adobe PDF”插件,只是使用普通的“另存为”对话框。使用“另存为 Adobe PDF”会产生较差的结果。
我在导出为 Inkscape 也可以读取的增强型 Windows 元文件 (.emf) 时获得了更好的成功。
它“更好”,因为当我尝试导入导出的 PDF 时,Inkscape 生成了一堆图像文件。导入的 SVG 的 XML 看起来也更干净。
我意识到这是一个老问题,但我最近尝试这样做并找到了一个使用 Google 幻灯片效果很好的解决方案:
Open in Google Slides
,或File -> Import Slides...
并拉入您需要的幻灯片。File -> Download as -> Scalable Vector Graphics (.svg, current slide)
.这就是我的做法(没有 Office PIA)。
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
这将非常困难,没有直接的方法可以做到这一点(如果我错了,请纠正我!) - 最简单的方法是打印到 XPS,然后转换 XAML(XPS == XAML + Zip文件)到 SVG 文件;这也不容易或直接,但 XAML => SVG 之间的映射可能更接近。
这不是最流畅的翻译,但请查看docx4j的 pptx4j 组件以在 SVG 中呈现大多数项目:http: //dev.plutext.org/svn/docx4j/trunk/docx4j/src/pptx4j/java/org/pptx4j/样本/RenderAsSvgInHtml.java
在 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 文件)