2009-09-08 9 views
1

J'ai un fichier PDF créé en mémoire en utilisant iTextSharp et contenu dans un MemoryStream. J'ai maintenant besoin de traduire ce PDF MemoryStream en quelque chose que l'imprimante comprend.Comment envoyer un PDF dans un MemoryStream à l'imprimante dans .Net?

J'ai utilisé Report Server dans le passé pour rendre les pages au format de l'imprimante mais je ne peux pas l'utiliser pour ce projet.

Existe-t-il une méthode native .Net? Par exemple, GhostScript serait OK s'il s'agissait d'un assemblage .Net mais je ne veux pas regrouper d'autres éléments .Net avec mon installateur. La classe PrintDocument dans .Net est idéale pour envoyer du contenu à l'imprimante mais j'ai encore besoin de la traduire à partir d'un flux PDF dans GDI au niveau de la page.

De bons indices?

Merci à l'avance

Ryan

Répondre

1

Autre moyen plus facile et à faire serait de sauvegarder votre pdf dans le fichier temporaire et donner commande suivante dans Process.Start qui prendra pdf directement à l'impression comme mentionné dans ce Adobe Reader Print Throough Command Line

Process.Start("AcroRd32.exe /t \"C:\test.pdf\""); 

Je dirais que c'est le meilleur moyen car Adobe va sûrement l'imprimer correctement, plutôt qu'en fonction d'autres outils, ils sont bons mais ils ne sont pas 100% corrects.

+0

Cela ressemble à une option facile! –

+0

Je pensais qu'il y avait des problèmes avec la fenêtre restant ouverte et la nouvelle version n'ayant pas de support d'impression via la ligne cmd. Je vais vérifier, merci. –

+0

Adobe a une API, mais il est simple qu'actuellement Adobe a un contrôle ActiveX que vous pouvez l'utiliser facilement dans .NET WinForms, et je pense que cela peut être utilisé sans rien expédier supplémentaire, vous aurez à enquêter, son http : //www.adobe.com/devnet/acrobat/pdfs/Acrobat_SDK_developer_faq.pdf –

2

Vous aurez besoin d'un RIP comme Ghostscript pour interpréter le PDF. Je peux vous donner un wrapper C# qui enveloppe les appels dll pour imprimer directement sur une imprimante, mais il y a des licences de redistribution associées à GhostScript.

J'ai utilisé l'outil Raster Imaging Pro de leadTools pour .Net pour interpréter des PDF, mais vous devrez vérifier ses capacités d'impression. Ceci est une option coûteuse et n'est pas libre de droits (cela utilise GhostScript en interne, mais est très enveloppé parmi les dlls LeadTools.) Cette bibliothèque fonctionne bien et contourne les licences

Pas sûr que Acrobat Reader ait une API qui peut être utilisé? Vous pourriez enquêter sur ce sujet.

HTH

+0

L'emballage C# est pratique, j'apprécierais. Merci –

+0

Il suffit de m'envoyer un email, adresse sur ma page de profil. –

Questions connexes