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) 

2 ist für PDF

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top