|
|
@ -33,7 +33,7 @@ namespace ICSharpCode.Reporting.Pdf |
|
|
|
class PdfVisitor: AbstractVisitor |
|
|
|
class PdfVisitor: AbstractVisitor |
|
|
|
{ |
|
|
|
{ |
|
|
|
readonly PdfDocument pdfDocument; |
|
|
|
readonly PdfDocument pdfDocument; |
|
|
|
XGraphics gfx; |
|
|
|
XGraphics xGraphics; |
|
|
|
XTextFormatter textFormatter; |
|
|
|
XTextFormatter textFormatter; |
|
|
|
Point containerLocation; |
|
|
|
Point containerLocation; |
|
|
|
|
|
|
|
|
|
|
@ -45,13 +45,14 @@ namespace ICSharpCode.Reporting.Pdf |
|
|
|
public override void Visit(ExportPage page) |
|
|
|
public override void Visit(ExportPage page) |
|
|
|
{ |
|
|
|
{ |
|
|
|
PdfPage = pdfDocument.AddPage(); |
|
|
|
PdfPage = pdfDocument.AddPage(); |
|
|
|
gfx = XGraphics.FromPdfPage(PdfPage); |
|
|
|
xGraphics = XGraphics.FromPdfPage(PdfPage); |
|
|
|
textFormatter = new XTextFormatter(gfx); |
|
|
|
textFormatter = new XTextFormatter(xGraphics); |
|
|
|
base.Visit(page); |
|
|
|
base.Visit(page); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public override void Visit(ExportContainer exportContainer){ |
|
|
|
public override void Visit(ExportContainer exportContainer){ |
|
|
|
|
|
|
|
|
|
|
|
foreach (var element in exportContainer.ExportedItems) { |
|
|
|
foreach (var element in exportContainer.ExportedItems) { |
|
|
|
if (IsContainer(element)) { |
|
|
|
if (IsContainer(element)) { |
|
|
|
var container = element as ExportContainer; |
|
|
|
var container = element as ExportContainer; |
|
|
@ -94,8 +95,8 @@ namespace ICSharpCode.Reporting.Pdf |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void RenderDataRow (IExportContainer row) { |
|
|
|
void RenderDataRow (IExportContainer row) { |
|
|
|
|
|
|
|
var r = new Rectangle(containerLocation,row.DisplayRectangle.Size); |
|
|
|
System.Console.WriteLine("renderDataRow at {0} - {1}",containerLocation,row.Location); |
|
|
|
PdfHelper.FillRectangle(r,row.BackColor,xGraphics); |
|
|
|
foreach (IAcceptor element in row.ExportedItems) { |
|
|
|
foreach (IAcceptor element in row.ExportedItems) { |
|
|
|
element.Accept(this); |
|
|
|
element.Accept(this); |
|
|
|
} |
|
|
|
} |
|
|
@ -106,7 +107,7 @@ namespace ICSharpCode.Reporting.Pdf |
|
|
|
var columnLocation = new Point(containerLocation.X + exportText.Location.X,containerLocation.Y + exportText.Location.Y); |
|
|
|
var columnLocation = new Point(containerLocation.X + exportText.Location.X,containerLocation.Y + exportText.Location.Y); |
|
|
|
if (ShouldSetBackcolor(exportText)) { |
|
|
|
if (ShouldSetBackcolor(exportText)) { |
|
|
|
var r = new Rectangle(columnLocation,exportText.DisplayRectangle.Size); |
|
|
|
var r = new Rectangle(columnLocation,exportText.DisplayRectangle.Size); |
|
|
|
PdfHelper.FillRectangle(r,exportText.BackColor,gfx); |
|
|
|
PdfHelper.FillRectangle(r,exportText.BackColor,xGraphics); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
PdfHelper.WriteText(textFormatter,columnLocation, exportText); |
|
|
|
PdfHelper.WriteText(textFormatter,columnLocation, exportText); |
|
|
@ -118,41 +119,29 @@ namespace ICSharpCode.Reporting.Pdf |
|
|
|
{ |
|
|
|
{ |
|
|
|
var columnLocation = containerLocation; |
|
|
|
var columnLocation = containerLocation; |
|
|
|
columnLocation.Offset(exportLine.Location); |
|
|
|
columnLocation.Offset(exportLine.Location); |
|
|
|
var pen = PdfHelper.PdfPen(exportLine); |
|
|
|
var pen = PdfHelper.CreateDashedPen(exportLine); |
|
|
|
pen.DashStyle = PdfHelper.DashStyle(exportLine); |
|
|
|
xGraphics.DrawLine(pen,columnLocation.ToXPoints(),new Point(exportLine.Size.Width,columnLocation.Y).ToXPoints()); |
|
|
|
pen.LineCap = PdfHelper.LineCap(exportLine); |
|
|
|
|
|
|
|
gfx.DrawLine(pen,columnLocation.ToXPoints(),new Point(exportLine.Size.Width,columnLocation.Y).ToXPoints()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public override void Visit (ExportRectangle exportRectangle) { |
|
|
|
public override void Visit (ExportRectangle exportRectangle) { |
|
|
|
// var columnLocation = containerLocation;
|
|
|
|
var pen = PdfHelper.CreateDashedPen(exportRectangle); |
|
|
|
var pen = CreateDashedPen(exportRectangle); |
|
|
|
xGraphics.DrawRectangle(pen, |
|
|
|
gfx.DrawRectangle(pen, |
|
|
|
|
|
|
|
PdfHelper.CreateBrush(exportRectangle.BackColor), |
|
|
|
PdfHelper.CreateBrush(exportRectangle.BackColor), |
|
|
|
new XRect(containerLocation.ToXPoints(), |
|
|
|
new XRect(containerLocation.ToXPoints(), |
|
|
|
exportRectangle.Size.ToXSize())); |
|
|
|
exportRectangle.Size.ToXSize())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public override void Visit(ExportCircle exportCircle){ |
|
|
|
public override void Visit(ExportCircle exportCircle){ |
|
|
|
// var columnLocation = containerLocation;
|
|
|
|
var pen = PdfHelper.CreateDashedPen(exportCircle); |
|
|
|
var pen = CreateDashedPen(exportCircle); |
|
|
|
xGraphics.DrawEllipse(pen, |
|
|
|
gfx.DrawEllipse(pen, |
|
|
|
|
|
|
|
PdfHelper.CreateBrush(exportCircle.BackColor) , |
|
|
|
PdfHelper.CreateBrush(exportCircle.BackColor) , |
|
|
|
new XRect(containerLocation.ToXPoints(), |
|
|
|
new XRect(containerLocation.ToXPoints(), |
|
|
|
exportCircle.Size.ToXSize())); |
|
|
|
exportCircle.Size.ToXSize())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static XPen CreateDashedPen(IExportGraphics exportRectangle) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var pen = PdfHelper.PdfPen(exportRectangle); |
|
|
|
|
|
|
|
pen.DashStyle = PdfHelper.DashStyle(exportRectangle); |
|
|
|
|
|
|
|
return pen; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public PdfPage PdfPage {get; private set;} |
|
|
|
public PdfPage PdfPage {get; private set;} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|