Powerpoint 2007 SP2, ExportAsFixedFormat in Powershell?
-
23-08-2019 - |
Frage
Gestern war ich zu Charge versucht, konvertieren eine Gruppe von PPTs in PDFs für einen Freund, und ich beschloss, einen Blick auf Powershell zu haben, da es für eine Weile ist schon auf meiner HD sitzen.
Hier ist der Code, den ich gekommen, mit.
$p = new-object -comobject powerpoint.application
# I actually don't know why I have to set the window to visible,
# but it doesn't work otherwise, anyway, it's not the real problem I have
$p.visible = 1
$f = $p.presentations.open('\some\file.ppt')
$f.ExportAsFixedFormat('\some\newfile.pdf', 2)
Da die "Brute Force" -Methode nicht funktionierte ( "type mismatch") Ich habe versucht, mit dem Aufzählungstyp zu importieren
$pptypepdf= [Microsoft.Office.Interop.PowerPoint.PpFixedFormatType]::PpFixedFormatTypePDF
$f.ExportAsFixedFormat('\some\newfile.pdf', $pptypepdf)
Das Merkwürdige dabei ist, dass es nach wie vor einen „Typenkonflikt“ Fehler wirft ...
Außerdem funktioniert SaveAs fein mit
$f.SaveAs('\some\newfile.pdf', 32) # 32 is for PDF
Was mache ich falsch?
Aktualisieren
Relevante Dokumentation:
Hier ist die vollständige Fehlermeldung
$pptypepdf= [Microsoft.Office.Interop.PowerPoint.PpFixedFormatType]::PpFixedFormatTypePDF
$f.ExportAsFixedFormat($filepath, $pptypepdf)
Exception calling "ExportAsFixedFormat" with "2" argument(s): "Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"
At line:1 char:23
+ $f.ExportAsFixedFormat <<<< ($filepath, $pptypepdf)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
Keine korrekte Lösung
Andere Tipps
Ich habe über das gleiche Problem in Python kommen. Versuchen PrintRange
Argument spezifiziert, wie die in der Lösung von Stefan Schukat:
Das ist ein Fehler in Powerpoint. Er definiert „[in, optional, Default (0)] * Printrange Printrange“, die auf die Erzeugung führt von "Printrange = 0" in dem Python-Wrapper. Daher werde erhalten Sie die Fehler beim Aufruf der Methode. Also kein Problem des makepy. Abhilfe ruft die Methode mit Printrange = None, da keiner ein Vali COM-Objekt ist. Z.B. presentation.ExportAsFixedFormat (pptFile + 'pdf', win32com.client.constants.ppFixedFormatTypePDF, win32com.client.constants.ppFixedFormatIntentScreen, Printrange = None) funktionieren soll.
Quelle: Typkonflikt bei der Verwendung von Export fuction von Powerpoint 2007
Ich weiß nicht, Powershell überhaupt, sondern haben ein funktionierendes Beispiel ausgearbeitet:
$p.ActivePresentation.PrintOptions.Ranges.Add(1,1)
$r = $p.ActivePresentation.PrintOptions.Ranges.Item(1)
$document.ExportAsFixedFormat('D:\\ps.pdf', 2, 1, 0, 1, 1, 0, $r)
Dies ist keine vollständige Lösung, aber getan wird exportiert. Es exportiert irgendwie vollständige Präsentation, nicht nur nicht schieben. 1, wie ich dachte. P. S. Oh. Hier ist die gleiche Lösung