Pegue protegido (seguro) pdf e salve como pdf editável (normal)?

0

Todos os dias, tenho um script que raspa um site e faz o download de declarações diárias como PDFs protegidos. Isso significa que os PDFs são visíveis, mas não podem ser editados sem uma senha. Os são somente leitura, se você quiser. Recebi muitos pedidos de funcionários que desejam editar esses PDFs sem abri-los, clicando em salvar como e, em seguida, reimprimindo o PDF na impressora pdf como um novo arquivo editável.

Existe uma solução que possa converter em massa esses PDFs protegidos em PDFs editáveis? Eu estava pensando em algum tipo de pasta "quente" onde eu posso soltar os PDFs protegidos e eles são automaticamente convertidos e salvos novamente.

    
por Narzard 04.11.2016 / 16:21

1 resposta

1

O GhostScript pode realizar isso facilmente. Você pode baixá-lo aqui: link Neste exemplo, estou usando a versão de 32 bits do Windows.

Os seguintes são dois arquivos. Um deles é um script powershell e um é um arquivo em lotes. O arquivo em lote inicializará o script powershell e ignorará quaisquer configurações de política de execução para que possa ser executado em qualquer máquina sem configuração do PowerShell. O script powershell utiliza o ghostscript para reimprimir PDFs protegidos e salvá-los como PDFs comuns em um diretório específico.

Lote (local: Q: \ PDFStoPDF \ convertPDF.bat)

cd "q:\PDFStoPDF\gs"
powershell.exe -noexit -ExecutionPolicy Bypass -File "q:\PDFStoPDF\gs\pdfconvert.ps1"

Primeiro, o lote muda o diretório para o local do GhostScript EXE e o script powershell abaixo. Em seguida, ele ignora a política de execução e executa o script powershell.

PowerShell (local: Q: \ PDFStoPDF \ gs \ pdfConvert.ps1)

$GhostScript = "q:\PDFStoPDF\gs\gs9.20\bin\gswin32c.exe"

Get-ChildItem "Q:\PDFStoPDF\*.pdf" | Where {
    $_.BaseName -NotMatch "Conv"
} |  ForEach-Object {
    $InputFile = $_.FullName
    $OutputFile = "Q:\PDFStoPDF\{0} (Conv).pdf" -F $_.BaseName

    & "$GhostScript" -dPDFA -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="$OutputFile" "$InputFile"
}

O script powershell define primeiro o caminho do exe gswin32c.exe do GhostScript. Em seguida, dizemos a ele para obter todos os PDFs da pasta "Q: \ PDFStiPDF \" onde o nome do arquivo não contém as letras "conv" em ordem. Continuando pelo pipe, dizemos ao ghostscript que o arquivo de entrada será o nome do arquivo atual e o arquivo de saída ficará no mesmo diretório, mas simplesmente adicione CONV ao final do nome do arquivo.

Antes do script : Q: \ PDFStoPDF \ myPDF01.pdf

Após o script : Q: \ PDFStoPDF \ myPDF01Conv.pdf

A opção -NotMatch permite que arquivos que já foram convertidos não sejam alterados.

Em seguida, o script imprime e salva o pdf usando a impressora PDF pdfwrite

Assim, as etapas para fazer isso funcionar são arrastar um arquivo para o diretório Q: \ PDFStoPDF \ e clicar no arquivo .bat que mora lá. Ele pegará o pdf e o salvará como um pdf editável no mesmo diretório.

    
por 04.11.2016 / 16:21