Pergunta

Ontem eu estava tentando lote converter um grupo de PPTs em PDFs para um amigo, e eu decidi dar uma olhada no PowerShell, uma vez que tem sido sentado no meu HD por um tempo.

Aqui está o código que eu vim acima com.

$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 é para PDF

Uma vez que o método de "força bruta" não funcionou ( "Tipo de incompatibilidade") Eu tentei importar o tipo enum com

$pptypepdf= [Microsoft.Office.Interop.PowerPoint.PpFixedFormatType]::PpFixedFormatTypePDF
$f.ExportAsFixedFormat('\some\newfile.pdf', $pptypepdf) 

O estranho aqui é que ele ainda lança um erro "incompatibilidade de tipo" ...

Além disso, SaveAs funciona bem com

$f.SaveAs('\some\newfile.pdf', 32) # 32 is for PDF

O que estou fazendo de errado?

Atualizar

documentação relevante:

Aqui está a mensagem de erro completa

$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

Nenhuma solução correta

Outras dicas

Eu me deparei com o mesmo problema em Python. Tente especificar argumento PrintRange como disse em solução por Stefan Schukat:

Este é um bug no PowerPoint. Ele define "[in, opcional, defaultvalue (0)] PrintRange * PrintRange" que conduz à geração de "PrintRange = 0" no wrapper python. Portanto, você terá a erro ao chamar o método. Então não há problema de makepy. Gambiarra chamar o método com PrintRange = Nenhum Nenhum desde é um objecto vali COM. Por exemplo. presentation.ExportAsFixedFormat (pptFile + 'pdf', win32com.client.constants.ppFixedFormatTypePDF, win32com.client.constants.ppFixedFormatIntentScreen, PrintRange = Nenhum) deve funcionar.

Fonte: Tipo incompatível ao usar fuction exportação de PowerPoint 2007


Eu não sei PowerShell em todos, mas ter trabalhado fora um exemplo de trabalho:

$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)

Esta não é uma solução completa, mas a exportação é feito. De alguma forma, exporta apresentação completa, não só não deslizar. 1, como eu pensava. P. S. Oh. Aqui é a mesma solução

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top