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