Report vom ReportServer in Querformat drucken

22/09/2009 - 14:34 von Michael Erlinger | Report spam
Hallo

ich habe folgendes Problem - beim (direkt)-Drucken eines Reports (das
aus von einem Report-Server in eine ReportViewer-Komponente auf meiner
WinForm geladen wird) habe ich Probleme beim Druck von Reports im
Querformat.
Wenn ich mir im Debug genauer die Informationen für "margins" in der
Methode CreateEMFDeviceInfo() ansehe, dann steht dort nicht die Höhe
und Breite des Reports. und das dürfte schlussendlich dann zu dem
Problem führen, dass der Report immer in Hochformat ausgedruckt wird.

Hat hier vielleicht jemand einen Rat für mich, wie ich dieses Problem
lösen kann ??
Danke schon mal & schönen Gruß
Michael

private void RenderAllServerReportPages(ServerReport serverReport)
{
string deviceInfo = CreateEMFDeviceInfo();

NameValueCollection firstPageParameters = new NameValueCollection
();
firstPageParameters.Add("rs:PersistStreams", "True");
NameValueCollection nonFirstPageParameters = new
NameValueCollection();
nonFirstPageParameters.Add("rs:GetNextStream", "True");

string mimeType;
string fileExtension;
Stream pageStream = serverReport.Render("IMAGE", deviceInfo,
firstPageParameters, out mimeType, out fileExtension);

while (pageStream.Length > 0)
{
m_pages.Add(pageStream);
pageStream = serverReport.Render("IMAGE", deviceInfo,
nonFirstPageParameters, out mimeType, out fileExtension);
}

}
private string CreateEMFDeviceInfo()
{
PaperSize paperSize = m_pageSettings.PaperSize;
Margins margins = m_pageSettings.Margins;

return string.Format(CultureInfo.InvariantCulture,
"<DeviceInfo>" +
"<OutputFormat>EMF</OutputFormat>"+
"<StartPage>0</StartPage>" +
"<EndPage>0</EndPage>"+
"<MarginTop>{0}</MarginTop>"+
"<MarginLeft>{1}</MarginLeft>"+
"<MarginRight>{2}</MarginRight>"+
"<MarginBottom>{3}</MarginBottom>"+
"<PageHeight>{4}</PageHeight>"+
"<PageWidth>{5}</PageWidth>"+
"</DeviceInfo>",
ToInches(margins.Top),
ToInches(margins.Left),
ToInches(margins.Right),
ToInches(margins.Bottom),
ToInches(paperSize.Height),
ToInches(paperSize.Width));
}
private static string ToInches(int hundrethsOfInch)
{
double inches = hundrethsOfInch / 100.0;
return inches.ToString(CultureInfo.InvariantCulture) + "in";
}
 

Lesen sie die antworten

#1 Frank Dzaebel
22/09/2009 - 19:26 | Warnen spam
Hallo Michael,

ich habe folgendes Problem - beim (direkt)-Drucken eines Reports (das
aus von einem Report-Server in eine ReportViewer-Komponente auf meiner
WinForm geladen wird) habe ich Probleme beim Druck von Reports im
Querformat.



vielleicht ist folgendes eine Lösung für Dich:

[CodeProject: Printing Reporting Services Reports in Landscape from within
.NET]
http://www.codeproject.com/KB/repor...scape.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen