Converter PDF em Imagem em C# com GhostScript

Esse é um artigo bem old, mas que muita gente me enviou e-mails pedindo como fazer isso. Então criei um artigo bem resumido baseado no de Lord TaGoH. Primeiramente, você precisa ter a DLL do GhostScript em seu projeto: ou você instala ou pega de alguém que já tenha instalado. O arquivo que me refiro é o gsdll32.dll. Obs: a conversão só funciona para as versões mais recentes então pegue alguma a partir da versão 9 como garantia.

Lembra do meu último post de scaneamento? Adicionei um botão de anexar um PDF e converter em imagem, então irei aproveitar a mesma aplicação adicionando essa funcionalidade. Copie a DLL para seu projeto e, em Propriedades, deixe configurado o atributo Copiar sempre para quando for compilá-la caso seja um Windows Form. Se for um Web Form, adicione em algum local onde a classe conversora possa encontrá-la.


Na página do CodeProject dispõe de uma classe (binária) já pronta para uso uso da DLL chamada de PdfToImage. Então você podem baixar de  ou aqui. Baixado a DLL, você pode adicionar como referência ao seu projeto/página. Agora é só código...

using PdfToImage;

// Objeto de conversão
PDFConvert converter = new PDFConvert();

// Arquivo PDF selecionado de um OpenFileDialog
string arquivo = FileUploadSelect.FileName;

// Local de saída do arquivo convertido
string output = _directoryForImages + "LJ_" + _loja + "_Scan_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".jpg";

// Configurações de conversão
converter.OutputToMultipleFile = false;
converter.TextAlphaBit = 4;
converter.FirstPageToConvert = 1;
converter.LastPageToConvert = 1;
converter.FitPage = false;
converter.JPEGQuality = 10;
converter.OutputFormat = "png16m";

// Faz a conversão e retorna true se estiver tudo OK
bool resultado = converter.Convert(arquivo, output);

Pronto! Mais fácil do que isso impossível. Fique atento às configurações de conversão, senão não funciona.

1 comentários:

Unknown disse...

Valeu pelo post amigo.
Me baseie nele para converter um PDF para TIF, a diferença é:
converter.OutputFormat = "tiff24nc";

E nos dois parâmentros abaixo você consegue melhorar a qualidade da imagem final..
converter.ResolutionX = int.Parse(txtX.Text);
converter.ResolutionY = int.Parse(txtY.Text);

Abraço e obrigado!

Postar um comentário