2009-03-04 5 views
2

J'ai actuellement un "PrintingWebService" que j'appelle depuis une page AJAX avec toutes les informations nécessaires pour construire une impression PDF hautement personnalisée en utilisant PDF Sharp et le mode GDI + de PDFSharp, qui prend DrawString et d'autres commandes qui fonctionnent essentiellement comme GDI + seulement elles sont dessinées au format PDF.Impression PdfSharp, GDI + et HTML

je puis enregistrez le fichier PDF à un emplacement sur le serveur Web et retourner le nom du fichier du service Web et la page AJAX ouvre une nouvelle fenêtre avec le fichier pdf.

Jusqu'à présent, il fonctionne bien, cependant, il y a une partie de ma page AJAX que je veux l'impression et je ne suis pas venu avec une solution encore. J'ai une chaîne du contenu HTML d'un éditeur TinyMCE que je veux diffuser dans la partie inférieure de la page PDF.

Je cherche une sorte d'outil que je pourrais utiliser à cette fin. Même quelque chose opensource qui imprime sur GDI + que je pourrais utiliser en prenant le code source et en le traduisant pour utiliser GDI + de PdfSharp (les noms de classes sont comme XGraphics, avec chaque classe ayant X avant le nom GDI +). Si je dois, je vais limiter ce que HTML peut être généré par TinyMCE et écrire mon propre moteur de rendu, mais ce sera un grand défi, donc je cherche d'abord d'autres solutions.

Je suis resté loin d'une approche de page facile à imprimer parce que je voulais construire une page qui était un proche identique d'une impression WinForms existante, en utilisant mon code existant. Avec PdfSharp j'étais capable de convertir tout le code excepté les trucs de zone de texte (qui ont employé le RichTextBox et le RTF dans la version de WinForms).

Répondre

2

Tony,

J'ai personnellement utilisé la bibliothèque ABCpdf de WebSupergoo avec beaucoup de succès. Vous pouvez réellement rendre le HTML directement au PDF et cela se fait plutôt bien en termes de précision.

Un autre logiciel gratuit qui vous permettra la flexibilité de l'écriture HTML au format PDF que je l'ai utilisé dans le passé avec beaucoup de succès est iTextSharp.

Sinon, je pense que vous devrez écrire quelque chose pour rendre HTML à GDI.

Quoi qu'il en soit, vous voudrez peut-être envisager d'utiliser un HttpHandler que vous associez à l'aide de votre web.config pour générer le fichier PDF. Cela vous permettra de rendre le PDF à un bytestream et de le vider directement à l'utilisateur (au lieu d'avoir à enregistrer chaque reçu PDF sur le serveur Web). Il vous permettra également d'utiliser l'extension .pdf dans la page qui renvoie le reçu (PurchaseReceipt.pdf pourrait être mappé à un HttpHandler) ... ce qui rend le navigateur plus convivial. Les anciennes versions d'Adobe/Browsers ne s'afficheront pas correctement si vous commencez à lancer un flux d'octets PDF à partir d'une page ASPX.

Espérons que cela aide.

+0

Merci, je vais vérifier. En ce qui concerne l'ancien navigateur, il s'agit d'un projet interne, donc j'ai beaucoup plus de luxe en ce qui concerne les navigateurs et les versions pris en charge. Mais c'est quelque chose à garder à l'esprit. –