PowerShell save word file to pdf

$word = new-object -ComObject "word.application"
$doc = $word.documents.open("C:\Users\AlexandrM\Desktop\TempCVArch\CV Кулакова C&B.doc")
$doc.SaveAs([ref] "C:\Users\AlexandrM\Desktop\1.pdf", [ref] 17)
$doc.Close()
$word.Quit()

Такая штука нужна чтобы потом через ghostscript сделать вот так:

gswin32c -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -sDEVICE=pngalpha -sOutputFile=1-%d.png 1.pdf

 

что нагенерит рисунки с страницами из pdf, в общем можно сделать свой google docs viewer

 

pdf2png.ps1:

# preferred dimensions
# only width is required, height is calculated via A4 paper dimensions with aspect ratio
$width = 658
$height = [math]::Round((297 / 210) * $width)

# first argument must be existing file path
if(($args.count -gt 0) -and (Test-Path $args[0])) {

    # define some vars
    $input_file = $args[0];                                                                # will be: "C:\Users\AlexandrM\Desktop\test\cv1.docx"
    $random_name = "_tmp_"+[system.io.Path]::GetRandomFileName()
    $input_file_name = [system.io.Path]::GetFileNameWithoutExtension($input_file)          # will be: "cv1"
    $input_file_extension = [system.io.Path]::GetExtension($input_file)                    # will be: ".docx"
    $input_file_dir = [system.io.Path]::GetDirectoryName($input_file) + "\"                # will be: "C:\Users\AlexandrM\Desktop\test\"
    $pdf_file = $input_file_dir + $random_name + ".pdf"                                    # will be: "C:\Users\AlexandrM\Desktop\test\cv1.pdf"
    $png_file = $input_file_dir + $input_file_name + ".png"                                # will be: "C:\Users\AlexandrM\Desktop\test\cv1.png"
    $png_parts_pattern_for_ghostscript = $input_file_dir + $random_name + "---gs-%03d.png" # will be: "C:\Users\AlexandrM\Desktop\test\cv1---gs-001.png"
    $png_parts_pattern_for_imagemagick = $input_file_dir + $random_name + "---gs-*.png"

    # if not pdf - convert via word
    if(!($input_file_extension -eq ".pdf")) {
        $word = new-object -ComObject "word.application"
        $doc = $word.documents.open($input_file)
        $doc.SaveAs([ref] $pdf_file, [ref] 17)
        $doc.Close()
        $word.Quit()
    }

    # if pdf created
    if(Test-Path $pdf_file) {
        # extract pages from it as png images
        invoke-expression -Command "gswin32c.exe -dNOPAUSE -q -dBATCH -sDEVICE=png16m -dPDFFitPage -dFIXEDMEDIA -dDEVICEWIDTHPOINTS=$width -dDEVICEHEIGHTPOINTS=$height -sOutputFile=$png_parts_pattern_for_ghostscript $pdf_file"
        # merge all pages into one image
        $montage_command = "montage -tile 1 -geometry " + $width + " -interlace PNG " + $png_parts_pattern_for_imagemagick + " `"" + $png_file + "`""
        invoke-expression -Command $montage_command
        # remove unneeded files
        Remove-Item $png_parts_pattern_for_imagemagick
        Remove-Item $pdf_file
    }
}

На выходе этого срипта — рисунок который уже можно подключать на страничку — собственно вот и свой google docs viewer получился