Cómo imprimir un PDF con C #

Estoy tratando de resolver este problema durante casi 2 días. Hay muchas más o menos buenas soluciones en la red, pero ninguna de ellas se ajusta perfectamente a mi tarea.

Tarea:Imprime un PDF programáticamenteHazlo con una impresora fija.No dejes que el usuario haga más de un botón_ClickHazlo en silencio - cuanto más, mejorHazlo del lado del clientePrimeras soluciones:

Hazlo con un Forms.WebBrowser

Si tenemos instalado Adobe Reader, hay un complemento para mostrar los PDF en el navegador web. Con esta solución tenemos una vista previa agradable y con webbrowserControlName.Print () podemos activar el control para imprimir su contenido.

Problema - todavía tenemos un PrintDialog.

Inicie el AcroRd32.exe con argumentos de inicio

El siguiente comando de CMD nos permite usar Adobe Reader para imprimir nuestro PDF.

InsertPathTo .. \ AcroRd32.exe / t "C: \ sample.pdf" "\ printerNetwork \ printerName"

Problemas: necesitamos la ruta de acceso absoluta a AcroRd32.exe | hay una ventana de Adobe Reader que se abre y debe abrirse hasta que la tarea de impresión esté lista.

Usar Windows Presets

Process process = new Process();

process.StartInfo.FileName = pathToPdf; 
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "\"" + printerName + "\""; 
process.Start();

process.WaitForInputIdle();
process.Kill();

Problema: sigue apareciendo una ventana de Adobe Reader, pero después de terminar la impresión, por lo general se cierra.

Solución: convencer al cliente de que use Foxit Reader (no use las dos últimas líneas de código).

Convertir páginas PDF a Drawing.Image

No tengo idea de cómo hacerlo con código, pero cuando consigo que esto funcione, el resto es solo un pedazo de pastel. Printing.PrintDocument puede satisfacer todas las demandas.

¿Alguna idea para sacar un poco de Drawing.Image´s de esos PDF u otro enfoque de cómo hacerlo?

Saludos cordiales, Max

Respuestas a la pregunta(11)

Su respuesta a la pregunta