Peter Forstmeier 12 years ago
parent
commit
3b722394a9
  1. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  2. 16
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs
  3. 5
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs
  4. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs
  5. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs
  6. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs
  7. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
  8. 36
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfExporter.cs
  9. 34
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfExtensions.cs
  10. 63
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfHelper.cs
  11. 35
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj

@ -50,8 +50,8 @@ @@ -50,8 +50,8 @@
<Reference Include="Irony.Interpreter">
<HintPath>..\Libraries\Irony.Interpreter.dll</HintPath>
</Reference>
<Reference Include="PdfSharp-WPF">
<HintPath>..\Libraries\PdfSharp-WPF.dll</HintPath>
<Reference Include="PdfSharp">
<HintPath>..\Libraries\PdfSharp.dll</HintPath>
</Reference>
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
@ -164,6 +164,8 @@ @@ -164,6 +164,8 @@
<Compile Include="Src\PageBuilder\ExportColumns\ExportPage.cs" />
<Compile Include="Src\PageBuilder\FormPageBuilder.cs" />
<Compile Include="Src\Pdf\PdfExporter.cs" />
<Compile Include="Src\Pdf\PdfExtensions.cs" />
<Compile Include="Src\Pdf\PdfHelper.cs" />
<Compile Include="Src\Pdf\PdfVisitor.cs" />
<Compile Include="Src\ReportingFactory.cs" />
<Compile Include="Src\Wpf\PreviewViewModel.cs" />

16
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/WpfVisitor.cs

@ -31,18 +31,13 @@ namespace ICSharpCode.Reporting.Exporter.Visitors @@ -31,18 +31,13 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
documentCreator = new FixedDocumentCreator();
}
public override void Visit(ExportPage page)
{
Console.WriteLine("WpfVisitor page <{0}>",page.PageInfo.PageNumber);
public override void Visit(ExportPage page){
fixedPage = FixedDocumentCreator.CreateFixedPage(page);
FixedPage = fixedPage;
base.Visit(page);
}
public override void Visit(ExportContainer exportContainer)
{
Console.WriteLine("\tWpfVisitor <{0}>",exportContainer.Name);
public override void Visit(ExportContainer exportContainer){
currentCanvas = documentCreator.CreateContainer(exportContainer);
CanvasHelper.SetPosition(currentCanvas,new Point(exportContainer.Location.X,exportContainer.Location.Y));
base.Visit(exportContainer);
@ -50,12 +45,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors @@ -50,12 +45,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
}
public override void Visit(ExportText exportColumn)
{
Console.WriteLine("\t\tExpressionVisitor <{0}>",exportColumn.GetType());
if (exportColumn.ContentAlignment != System.Drawing.ContentAlignment.TopLeft) {
Console.WriteLine("heureka {0}",exportColumn.ContentAlignment);
}
public override void Visit(ExportText exportColumn){
var textBlock = documentCreator.CreateTextBlock((ExportText)exportColumn);
CanvasHelper.SetPosition(textBlock,new Point(exportColumn.Location.X,exportColumn.Location.Y));
currentCanvas.Children.Add(textBlock);

5
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/WpfExporter.cs

@ -30,18 +30,13 @@ namespace ICSharpCode.Reporting.Exporter{ @@ -30,18 +30,13 @@ namespace ICSharpCode.Reporting.Exporter{
public override void Run () {
Document = new FixedDocument();
Console.WriteLine();
Console.WriteLine("Start WpfExporter with {0} Pages ",Pages.Count);
foreach (var page in Pages) {
IAcceptor acceptor = page as IAcceptor;
if (acceptor != null) {
visitor.Visit(page);
}
AddPageToDocument(Document,visitor.FixedPage);
Console.WriteLine("-----------PageBreak---------");
}
Console.WriteLine("Finish WpfVisitor");
Console.WriteLine();
}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Interfaces/IPrintableObject.cs

@ -23,6 +23,7 @@ namespace ICSharpCode.Reporting.Interfaces @@ -23,6 +23,7 @@ namespace ICSharpCode.Reporting.Interfaces
Color ForeColor {get;set;}
Color BackColor {get;set;}
Color FrameColor{get;set;}
bool DrawBorder {get;set;}
bool CanGrow {get;set;}
}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseTextItem.cs

@ -75,6 +75,7 @@ namespace ICSharpCode.Reporting.Items @@ -75,6 +75,7 @@ namespace ICSharpCode.Reporting.Items
ex.ContentAlignment = ContentAlignment;
ex.DataType = DataType;
ex.CanGrow = CanGrow;
ex.DrawBorder = DrawBorder;
return ex;
}
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs

@ -35,5 +35,7 @@ namespace ICSharpCode.Reporting.Items @@ -35,5 +35,7 @@ namespace ICSharpCode.Reporting.Items
public bool CanGrow {get;set;}
public bool DrawBorder {get;set;}
}
}

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs

@ -42,6 +42,8 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns @@ -42,6 +42,8 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
public bool CanGrow {get;set;}
public bool DrawBorder {get;set;}
public Rectangle DisplayRectangle {
get {
return new Rectangle(Location,DesiredSize);

36
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfExporter.cs

@ -2,9 +2,13 @@ @@ -2,9 +2,13 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.ObjectModel;
using System.Diagnostics;
using ICSharpCode.Reporting.Exporter;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
namespace ICSharpCode.Reporting.Pdf
{
@ -13,17 +17,22 @@ namespace ICSharpCode.Reporting.Pdf @@ -13,17 +17,22 @@ namespace ICSharpCode.Reporting.Pdf
/// </summary>
public class PdfExporter:BaseExporter{
readonly PdfVisitor visitor;
PdfVisitor visitor;
PdfDocument pdfDocument;
public PdfExporter(Collection<ExportPage> pages):base(pages){
visitor = new PdfVisitor();
}
public override void Run()
{
pdfDocument = new PdfDocument();
visitor = new PdfVisitor(pdfDocument);
SetDocumentTitle(Pages[0].PageInfo.ReportName);
Console.WriteLine();
Console.WriteLine("Start WpfExporter with {0} Pages ",Pages.Count);
Console.WriteLine("Start PdfExporter with {0} Pages ",Pages.Count);
foreach (var page in Pages) {
IAcceptor acceptor = page as IAcceptor;
@ -33,10 +42,27 @@ namespace ICSharpCode.Reporting.Pdf @@ -33,10 +42,27 @@ namespace ICSharpCode.Reporting.Pdf
Console.WriteLine("-----------PageBreak---------");
}
const string filename = "HelloWorld.pdf";
pdfDocument.Save(filename);
// ...and start a viewer.
Process.Start(filename);
Console.WriteLine("Finish WpfVisitor");
Console.WriteLine();
}
void SetDocumentTitle(string reportName)
{
Console.WriteLine("Set DocumentTitle to {0}",reportName);
pdfDocument.Info.Title = reportName;
}
public PdfDocument PdfDocument {
get { return pdfDocument; }
}
}
}

34
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfExtensions.cs

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Drawing;
using PdfSharp.Drawing;
namespace ICSharpCode.Reporting.Pdf
{
/// <summary>
/// Description of PdfExtensions.
/// </summary>
public static class PdfExtensions
{
public static XSize ToXSize(this Size size) {
return new XSize(Convert(size.Width), Convert(size.Height));
}
public static XPoint ToXPoints(this Point point) {
var p = new XPoint(Convert(point.X),Convert(point.Y));
return p;
}
public static float ToPoint (this int integer) {
return Convert(integer);
}
static float Convert(int toConvert) {
return toConvert * 72 / 100;
}
}
}

63
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfHelper.cs

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Drawing;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using PdfSharp.Drawing;
using PdfSharp.Drawing.Layout;
namespace ICSharpCode.Reporting.Pdf
{
/// <summary>
/// Description of PdfHelper.
/// </summary>
public class PdfHelper
{
public static void WriteText(XTextFormatter textFormatter,Point columnLocation, ExportText exportColumn)
{
XFont font = PdfHelper.CreatePdfFont(exportColumn);
var rect = PdfHelper.CreateDisplayRectangle(columnLocation, exportColumn.DesiredSize);
textFormatter.DrawString(exportColumn.Text, font, XBrushes.Black, rect, XStringFormats.TopLeft);
}
static XFont CreatePdfFont(IExportColumn exportColumn)
{
var textColumn = (ExportText)exportColumn;
XFont font = new XFont(textColumn.Font.FontFamily.Name, textColumn.Font.Size);
return font;
}
public static XRect CreateDisplayRectangle(IExportColumn column) {
return new XRect(column.DisplayRectangle.Location.ToXPoints(),
column.DisplayRectangle.Size.ToXSize());
}
public static XRect CreateDisplayRectangle(Point location,Size size) {
return new XRect(location.ToXPoints(),size.ToXSize());
}
public static void DrawRectangle (IExportColumn column, XGraphics graphics) {
var c = XColor.FromArgb(column.FrameColor.R,column.FrameColor.G,column.FrameColor.B);
XPen pen = new XPen(c, 1);
var r = CreateDisplayRectangle(column);
graphics.DrawRectangle(pen,r);
}
public static void DrawRectangle(Rectangle rect,Color color,XGraphics graphics) {
var c = XColor.FromArgb(color.R,color.G,color.B);
XPen pen = new XPen(c, 1);
var r = CreateDisplayRectangle(rect.Location,rect.Size);
graphics.DrawRectangle(pen,r);
}
}
}

35
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs

@ -1,8 +1,13 @@ @@ -1,8 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Drawing;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using PdfSharp.Drawing;
using PdfSharp.Drawing.Layout;
using PdfSharp.Pdf;
namespace ICSharpCode.Reporting.Pdf
{
@ -11,21 +16,30 @@ namespace ICSharpCode.Reporting.Pdf @@ -11,21 +16,30 @@ namespace ICSharpCode.Reporting.Pdf
/// </summary>
class PdfVisitor: AbstractVisitor
{
public PdfVisitor()
readonly PdfDocument pdfDocument;
XGraphics gfx;
XTextFormatter textFormatter;
Point containerLocation;
public PdfVisitor(PdfDocument pdfDocument)
{
this.pdfDocument = pdfDocument;
}
public override void Visit(ExportPage page)
{
Console.WriteLine("Pdf_Visitor page <{0}>",page.PageInfo.PageNumber);
var pageSize = page.Size.ToXSize();
PdfPage = pdfDocument.AddPage();
gfx = XGraphics.FromPdfPage(PdfPage);
textFormatter = new XTextFormatter(gfx);
base.Visit(page);
}
public override void Visit(ExportContainer exportColumn)
public override void Visit(ExportContainer exportContainer)
{
Console.WriteLine("\tPdf_Visitor <{0}>",exportColumn.Name);
foreach (var element in exportColumn.ExportedItems) {
containerLocation = exportContainer.Location;
PdfHelper.DrawRectangle(exportContainer,gfx);
foreach (var element in exportContainer.ExportedItems) {
var ac = element as IAcceptor;
ac.Accept(this);
}
@ -34,7 +48,14 @@ namespace ICSharpCode.Reporting.Pdf @@ -34,7 +48,14 @@ namespace ICSharpCode.Reporting.Pdf
public override void Visit(ExportText exportColumn)
{
Console.WriteLine("\t\tPdf_Visitor <{0}>",exportColumn.Name);
var columnLocation = containerLocation;
columnLocation.Offset(exportColumn.Location);
PdfHelper.WriteText(textFormatter,columnLocation, exportColumn);
if (exportColumn.DrawBorder) {
PdfHelper.DrawRectangle(new Rectangle(columnLocation,exportColumn.DesiredSize),exportColumn.FrameColor,gfx);
}
}
public PdfPage PdfPage {get; private set;}
}
}

Loading…
Cancel
Save