PDFsharp enregistrer pour MemoryStream
Je veux enregistrer un PdfSharp.Pdf.PdfDocument par sa méthode d'enregistrement d'un Flux, mais il n'a pas de joindre le fichier PDF en-tête paramètres. Alors quand j'ai lu le Flux et de le retourner à l'utilisateur, qu'il voit que le fichier PDF n'est pas valide. Est-il une solution pour joindre le fichier PDF en-tête paramètres lors de l'PDFsharp économise de la mémoire?
Vous devez vous connecter pour publier un commentaire.
Si vous pensez qu'il ya un problème avec PdfDocument.Enregistrer, alors veuillez le signaler sur le PDFsharp forum (mais s'il vous plaît être plus précis avec votre description de l'erreur).
Votre "solution" ressemble à un hack pour moi.
"pdfRenderer.Enregistrer des" appels "PdfDocument.Enregistrer" en interne.
Quel que soit le problème - votre "solution" appelle encore la même Enregistrer de routine.
Edit:
Pour obtenir un byte[] contenant un fichier PDF, vous n'avez qu'à appeler:
Les premières versions de PDFsharp ne pas réinitialiser la position du pointeur.
De sorte que vous devez appeler
pour réinitialiser le flux de position avant de lire le flux; cela n'est plus nécessaire pour les versions actuelles.
À l'aide de ToArray peut souvent être utilisé à la place de la lecture dans le flux.
Edit 2: au lieu de
stream.ToArray()
il peut être plus efficace d'utiliserstream.GetBuffer()
, mais ce tampon est généralement plus grand que le fichier PDF et vous n'aurez qu'à utiliserstream.Length
octets de la mémoire tampon. Très utile pour la méthode que prendre unbyte[]
avec une longueur de paramètre.Donc la solution:
Il y a cette MigraDoc stuff, qui est livré avec PdfSharp, mais je n'ai guère trouvé de bon doc/faq pour elle. Après des heures de recherche sur google, j'ai trouvé un extrait de ce qui était quelque chose comme ça. Maintenant, il fonctionne.
J'ai trouvé plus simple solution:
Source:
http://usefulaspandcsharp.wordpress.com/2010/03/09/save-a-pdf-to-a-byte-array-using-pdf-sharpmigradoc/
ToArray()
peut être utilisé. 😉Pour MigraDoc (ver 1.30) j'ai pu enregistrer avec
Grâce Misnyo Solution. Mais pour moi, il fonctionne comme ceci: