Enregistrer RDLC rapports au format PDF par programmation
J'ai un rapport que j'ai besoin d'exécuter plusieurs fois et de les enregistrer sous forme de fichiers Pdf. Je suis actuellement en train de générer le rapport en format PDF par programmation, mais souhaitez enregistrer les rapports sans que l'utilisateur de choisir l'option enregistrer manuellement à chaque fois.
Le code que j'utilise pour rendre un rapport en tant que fichier PDF est:
Dim warnings As Microsoft.Reporting.WebForms.Warning() = Nothing
Dim streamids As String() = Nothing
Dim mimeType As String = Nothing
Dim encoding As String = Nothing
Dim extension As String = Nothing
Dim deviceInfo As String
Dim bytes As Byte()
Dim lr As New Microsoft.Reporting.WebForms.LocalReport
deviceInfo = "<DeviceInfo><SimplePageHeaders>True</SimplePageHeaders></DeviceInfo>"
bytes = ReportViewer1.LocalReport.Render("PDF", deviceInfo, mimeType, encoding, extension, streamids, warnings)
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.BinaryWrite(bytes)
Response.Flush()
Response.Close()
J'ai été figurant je puisse l'exécuter en boucle, et enregistrer le fichier PDF à chaque fois.
avez-vous essayé avec FileStream et obtenir la solution?
OriginalL'auteur monkeypushbutton | 2009-10-30
Vous devez vous connecter pour publier un commentaire.
Quelle est votre question ici? Est-ce que cela ne fonctionne pas?
voici un exemple de quelque chose de nous ce 2005. Nous avons défini un contrôle appelé rptViewer1 qui peut être visible ou non en fonction de vos besoins. strFormat doit contenir "PDF" et strNomFicher le chemin d'accès complet.
BTW les noms de variables et fonctions sont en français, mais qui fonctionne quand même 🙂
Response
le rapport comme application/pdf et d'application/vnd.ms-excel avec tableau d'octets avecHttpContext.Current.Response.BinaryWrite(renderedBytes)
. Est-il possible ou j'ai besoin d'enregistrer le fichier sur le disque tout d'abord,et puis de l'envoyer au client?Qu'est-ce que _stream variable ? statique dans la classe ?
OriginalL'auteur David Brunelle
David réponse a été très utile pour moi. J'ai pensé que je voudrais publier mon simplifié et (un peu) version traduite du présent code, depuis l'origine contenait un peu de français, et aussi quelques références qui n'étaient pas pertinentes:
HttpContext.Current.Response.BinaryWrite(renderedBytes)
mais j'ai parfois l' exception OutOfMemory Peut-être d'abord enregistrer le fichier sur le système de fichiers en ASP.NET le Serveur ?OriginalL'auteur Brian MacKay