| 

.NET C# Java Javascript Exception

4
Hallo,
wie kann ich einen Microsoft.Reporting.WinForms (Lokalen-)Report ohne den
ReportViewer als PDF-File speichern? Das Drucken (ohne ReportViewer) ist hier:
http://msdn.microsoft.com/de-de/library/ms252091.aspx
beschrieben und funktioniert soweit auch. Wie bekomme ich den Report aber jetzt als PDF?
News:
24.11.2011
JörgSt 131 4
2 Antworten
3
Hallo JörgSt,

an sich nutzt du schon noch den ReportViewer dafür, nur dass dieser auf keiner Form sondern nur im Code exisitiert...

/// <summary>
/// Erstellt das Infoblatt im angegebenen Ziel als PDF
/// </summary>
/// <param name="ZielDateiName"></param>
public void CreatePdf(string targetFile)
{
//Nur noch mal zur Vorsicht, Dateiendung ".pdf" falls nicht vorhanden
if(!targetFile.EndsWith(".pdf"))
targetFile += ".pdf";

//ReportViewer im Hintergrund erstellen, um PDF zu drucken, und Report zuweisen.
ReportViewer tmpRepViewer = new ReportViewer();

//Report als Embedded Resource mit dem Namen "Report.rdlc" ... entsprechend anpassen
tmpRepViewer.LocalReport.ReportEmbeddedResource = "Report.rdlc";

//Report mit Daten befüllen
//{... weiß ja net, ob du da noch was machen musst, aber das sollteste auch selbst wissen ...}

//Report als PDF in Datei speichern
byte[] PDF = tmpRepViewer.LocalReport.Render("PDF");
FileStream fsReport = new FileStream(targetFile, FileMode.Create, FileAccess.Write, FileShare.None);
fsReport.Write(PDF, 0, PDF.Length);
fsReport.Close();

tmpRepViewer.Dispose();
}


BITTE BEACHTEN:
Verwiesen wurde auf Microsoft.Reporting.WinForms und Microsoft.Reporting.Common auf dem Lib-Ordner von Visual Studio 2010...
24.11.2011
Karill Endusa 1,5k 9
0
Hallo,
vielen Dank für die Antwort. (Der Code funktioniert fast.)

Das funktioniert nicht:

//Report als Embedded Resource mit dem Namen "Report.rdlc" ... entsprechend anpassen
tmpRepViewer.LocalReport.ReportEmbeddedResource = "Report.rdlc";

Hier kommt bei mir die Exception: "Die Berichtsdefinition ... wurde nicht angegeben"

Stattdessen:
tmpRepViewer.LocalReport.ReportPath = "Report.rdlc";

Dann geht's.
25.11.2011
JörgSt 131 4
Ja, is halt dann der unterschied, ob man den Report lokal liegen hat oder als eingebettete Ressource :) ich habs lieber als Embedded Ressource, da kann der Anwender nix wegkopieren
Karill Endusa 25.11.2011

Stelle deine .net-Frage jetzt!