Skip to content

Commit 9835be3

Browse files
AnhelinaMiText-CI
authored andcommitted
Refactor com.itextpdf.kernel.events mechanism
DEVSIX-5041 Autoported commit. Original commit hash: [05f7aade9]
1 parent 5476c11 commit 9835be3

File tree

5 files changed

+54
-54
lines changed

5 files changed

+54
-54
lines changed

itext.tests/itext.html2pdf.tests/itext/html2pdf/events/PdfHtmlAcroformDocumentEventTest.cs

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ You should have received a copy of the GNU Affero General Public License
2424
using System.Collections.Generic;
2525
using System.IO;
2626
using iText.Html2pdf;
27-
using iText.Kernel.Events;
2827
using iText.Kernel.Geom;
2928
using iText.Kernel.Pdf;
3029
using iText.Kernel.Pdf.Canvas;
30+
using iText.Kernel.Pdf.Event;
3131
using iText.Kernel.Utils;
3232
using iText.Layout.Element;
3333
using iText.Layout.Properties;
@@ -72,48 +72,52 @@ private PdfDocument AddEventHandlersToPdfDocument(String pdfOutput, ConverterPro
7272
, converterProperties);
7373
PdfWriter writer = new PdfWriter(pdfStream);
7474
PdfDocument pdfDocument = new PdfDocument(writer);
75-
iText.Kernel.Events.IEventHandler handler = new _IEventHandler_94(elements, footer);
75+
AbstractPdfDocumentEventHandler handler = new _AbstractPdfDocumentEventHandler_94(elements, footer);
7676
pdfDocument.AddEventHandler(PdfDocumentEvent.START_PAGE, handler);
7777
pdfDocument.AddEventHandler(PdfDocumentEvent.END_PAGE, handler);
7878
return pdfDocument;
7979
}
8080

81-
private sealed class _IEventHandler_94 : iText.Kernel.Events.IEventHandler {
82-
public _IEventHandler_94(IList<IElement> elements, IList<IElement> footer) {
81+
private sealed class _AbstractPdfDocumentEventHandler_94 : AbstractPdfDocumentEventHandler {
82+
public _AbstractPdfDocumentEventHandler_94(IList<IElement> elements, IList<IElement> footer) {
8383
this.elements = elements;
8484
this.footer = footer;
8585
}
8686

87-
public void HandleEvent(Event @event) {
87+
protected override void OnAcceptedEvent(AbstractPdfDocumentEvent @event) {
88+
if (!(@event is PdfDocumentEvent)) {
89+
return;
90+
}
8891
PdfDocumentEvent docEvent = (PdfDocumentEvent)@event;
8992
PdfPage page = docEvent.GetPage();
9093
PdfCanvas pdfCanvas = new PdfCanvas(page);
9194
Rectangle pageSize = page.GetPageSize();
92-
iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, pageSize);
93-
Paragraph headerP = new Paragraph();
94-
foreach (IElement elem in elements) {
95-
if (elem is IBlockElement) {
96-
headerP.Add((IBlockElement)elem);
97-
}
98-
else {
99-
if (elem is Image) {
100-
headerP.Add((Image)elem);
95+
using (iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, pageSize)) {
96+
Paragraph headerP = new Paragraph();
97+
foreach (IElement elem in elements) {
98+
if (elem is IBlockElement) {
99+
headerP.Add((IBlockElement)elem);
100+
}
101+
else {
102+
if (elem is Image) {
103+
headerP.Add((Image)elem);
104+
}
101105
}
102106
}
103-
}
104-
Paragraph footerP = new Paragraph();
105-
foreach (IElement elem in footer) {
106-
if (elem is IBlockElement) {
107-
footerP.Add((IBlockElement)elem);
108-
}
109-
else {
110-
if (elem is Image) {
111-
footerP.Add((Image)elem);
107+
Paragraph footerP = new Paragraph();
108+
foreach (IElement elem in footer) {
109+
if (elem is IBlockElement) {
110+
footerP.Add((IBlockElement)elem);
111+
}
112+
else {
113+
if (elem is Image) {
114+
footerP.Add((Image)elem);
115+
}
112116
}
113117
}
118+
canvas.ShowTextAligned(headerP, pageSize.GetWidth() / 2, pageSize.GetTop() - 30, TextAlignment.LEFT);
119+
canvas.ShowTextAligned(footerP, 0, 0, TextAlignment.LEFT);
114120
}
115-
canvas.ShowTextAligned(headerP, pageSize.GetWidth() / 2, pageSize.GetTop() - 30, TextAlignment.LEFT);
116-
canvas.ShowTextAligned(footerP, 0, 0, TextAlignment.LEFT);
117121
}
118122

119123
private readonly IList<IElement> elements;

itext.tests/itext.html2pdf.tests/itext/html2pdf/events/PdfHtmlPageXofYEventHandlerTest.cs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@ You should have received a copy of the GNU Affero General Public License
2222
*/
2323
using System;
2424
using System.IO;
25+
using iText.Commons.Utils;
2526
using iText.Html2pdf;
2627
using iText.IO.Util;
27-
using iText.Kernel.Events;
2828
using iText.Kernel.Geom;
2929
using iText.Kernel.Pdf;
3030
using iText.Kernel.Pdf.Canvas;
31+
using iText.Kernel.Pdf.Event;
3132
using iText.Kernel.Pdf.Xobject;
3233
using iText.Kernel.Utils;
3334
using iText.Layout;
@@ -66,22 +67,21 @@ public virtual void ParseWithFooter(String htmlSource, String pdfDest, String re
6667
PdfWriter writer = new PdfWriter(pdfDest);
6768
PdfDocument pdfDocument = new PdfDocument(writer);
6869
//Create event-handlers
69-
PdfHtmlPageXofYEventHandlerTest.PageXofY footerHandler = new PdfHtmlPageXofYEventHandlerTest.PageXofY(this
70-
, pdfDocument);
70+
PdfHtmlPageXofYEventHandlerTest.PageXofY footerHandler = new PdfHtmlPageXofYEventHandlerTest.PageXofY();
7171
//Assign event-handlers
7272
pdfDocument.AddEventHandler(PdfDocumentEvent.END_PAGE, footerHandler);
7373
//Convert
7474
ConverterProperties converterProperties = new ConverterProperties().SetBaseUri(resoureLoc);
75-
Document doc = HtmlConverter.ConvertToDocument(new FileStream(new FileInfo(htmlSource).FullName, FileMode.Open
76-
, FileAccess.Read), pdfDocument, converterProperties);
75+
Document doc = HtmlConverter.ConvertToDocument(FileUtil.GetInputStreamForFile(new FileInfo(htmlSource).FullName
76+
), pdfDocument, converterProperties);
7777
//Write the total number of pages to the placeholder
7878
doc.Flush();
7979
footerHandler.WriteTotal(pdfDocument);
8080
doc.Close();
8181
}
8282

8383
//page X of Y
84-
protected internal class PageXofY : iText.Kernel.Events.IEventHandler {
84+
protected internal class PageXofY : AbstractPdfDocumentEventHandler {
8585
protected internal PdfFormXObject placeholder;
8686

8787
protected internal float side = 20;
@@ -94,12 +94,11 @@ protected internal class PageXofY : iText.Kernel.Events.IEventHandler {
9494

9595
protected internal float descent = 3;
9696

97-
public PageXofY(PdfHtmlPageXofYEventHandlerTest _enclosing, PdfDocument pdf) {
98-
this._enclosing = _enclosing;
99-
this.placeholder = new PdfFormXObject(new Rectangle(0, 0, this.side, this.side));
97+
public PageXofY() {
98+
placeholder = new PdfFormXObject(new Rectangle(0, 0, side, side));
10099
}
101100

102-
public virtual void HandleEvent(Event @event) {
101+
protected override void OnAcceptedEvent(AbstractPdfDocumentEvent @event) {
103102
PdfDocumentEvent docEvent = (PdfDocumentEvent)@event;
104103
PdfDocument pdf = docEvent.GetDocument();
105104
PdfPage page = docEvent.GetPage();
@@ -108,17 +107,15 @@ public virtual void HandleEvent(Event @event) {
108107
PdfCanvas pdfCanvas = new PdfCanvas(page.GetLastContentStream(), page.GetResources(), pdf);
109108
iText.Layout.Canvas canvas = new iText.Layout.Canvas(pdfCanvas, pageSize);
110109
Paragraph p = new Paragraph().Add("Page ").Add(pageNumber.ToString()).Add(" of");
111-
canvas.ShowTextAligned(p, this.x, this.y, TextAlignment.RIGHT);
112-
pdfCanvas.AddXObjectAt(this.placeholder, this.x + this.space, this.y - this.descent);
110+
canvas.ShowTextAligned(p, x, y, TextAlignment.RIGHT);
111+
pdfCanvas.AddXObjectAt(placeholder, x + space, y - descent);
113112
canvas.Close();
114113
}
115114

116115
public virtual void WriteTotal(PdfDocument pdf) {
117-
iText.Layout.Canvas canvas = new iText.Layout.Canvas(this.placeholder, pdf);
118-
canvas.ShowTextAligned(pdf.GetNumberOfPages().ToString(), 0, this.descent, TextAlignment.LEFT);
116+
iText.Layout.Canvas canvas = new iText.Layout.Canvas(placeholder, pdf);
117+
canvas.ShowTextAligned(pdf.GetNumberOfPages().ToString(), 0, descent, TextAlignment.LEFT);
119118
}
120-
121-
private readonly PdfHtmlPageXofYEventHandlerTest _enclosing;
122119
}
123120
}
124121
}

itext/itext.html2pdf/itext/html2pdf/attach/impl/layout/HtmlBodyStylesApplierHandler.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ You should have received a copy of the GNU Affero General Public License
2222
*/
2323
using System;
2424
using System.Collections.Generic;
25-
using iText.Kernel.Events;
2625
using iText.Kernel.Geom;
2726
using iText.Kernel.Pdf;
2827
using iText.Kernel.Pdf.Canvas;
28+
using iText.Kernel.Pdf.Event;
2929
using iText.Kernel.Pdf.Tagging;
3030
using iText.Layout.Borders;
3131
using iText.Layout.Element;
@@ -34,7 +34,7 @@ You should have received a copy of the GNU Affero General Public License
3434
namespace iText.Html2pdf.Attach.Impl.Layout {
3535
//\cond DO_NOT_DOCUMENT
3636
/// <summary>This handler draws backgrounds and borders for html, body and page-annotation styles.</summary>
37-
internal class HtmlBodyStylesApplierHandler : iText.Kernel.Events.IEventHandler {
37+
internal class HtmlBodyStylesApplierHandler : AbstractPdfDocumentEventHandler {
3838
private readonly HtmlDocumentRenderer htmlDocumentRenderer;
3939

4040
private readonly IDictionary<int, HtmlBodyStylesApplierHandler.PageStylesProperties> pageStylesPropertiesMap;
@@ -57,12 +57,12 @@ public HtmlBodyStylesApplierHandler(HtmlDocumentRenderer htmlDocumentRenderer, I
5757
this.pageStylesPropertiesMap = pageStylesPropertiesMap;
5858
}
5959

60-
public virtual void HandleEvent(Event @event) {
60+
protected override void OnAcceptedEvent(AbstractPdfDocumentEvent @event) {
6161
if (!(@event is PdfDocumentEvent)) {
6262
return;
6363
}
6464
PdfPage page = ((PdfDocumentEvent)@event).GetPage();
65-
int pageNumber = ((PdfDocumentEvent)@event).GetDocument().GetPageNumber(page);
65+
int pageNumber = @event.GetDocument().GetPageNumber(page);
6666
ProcessPage(page, pageNumber);
6767
}
6868

itext/itext.html2pdf/itext/html2pdf/attach/impl/layout/HtmlDocumentRenderer.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ You should have received a copy of the GNU Affero General Public License
2323
using System;
2424
using System.Collections.Generic;
2525
using iText.Html2pdf.Attach;
26-
using iText.Kernel.Events;
2726
using iText.Kernel.Geom;
2827
using iText.Kernel.Pdf;
28+
using iText.Kernel.Pdf.Event;
2929
using iText.Layout;
3030
using iText.Layout.Element;
3131
using iText.Layout.Layout;
@@ -162,8 +162,7 @@ public override void Close() {
162162
ProcessWaitingElement();
163163
base.Close();
164164
TrimLastPageIfNecessary();
165-
document.GetPdfDocument().RemoveEventHandler(PdfDocumentEvent.END_PAGE, marginBoxesHandler);
166-
document.GetPdfDocument().RemoveEventHandler(PdfDocumentEvent.END_PAGE, htmlBodyHandler);
165+
RemoveEventHandlers();
167166
for (int i = 1; i <= document.GetPdfDocument().GetNumberOfPages(); ++i) {
168167
PdfPage page = document.GetPdfDocument().GetPage(i);
169168
if (!page.IsFlushed()) {
@@ -180,9 +179,9 @@ public override void Close() {
180179
/// was created.
181180
/// </summary>
182181
internal virtual void RemoveEventHandlers() {
183-
document.GetPdfDocument().RemoveEventHandler(PdfDocumentEvent.END_PAGE, htmlBodyHandler);
184182
// This handler is added in processPageRules method.
185-
document.GetPdfDocument().RemoveEventHandler(PdfDocumentEvent.END_PAGE, marginBoxesHandler);
183+
document.GetPdfDocument().RemoveEventHandler(marginBoxesHandler);
184+
document.GetPdfDocument().RemoveEventHandler(htmlBodyHandler);
186185
}
187186
//\endcond
188187

@@ -480,7 +479,7 @@ private bool IsPageRight(int pageNum) {
480479
return !IsPageLeft(pageNum);
481480
}
482481

483-
private class PageMarginBoxesDrawingHandler : iText.Kernel.Events.IEventHandler {
482+
private class PageMarginBoxesDrawingHandler : AbstractPdfDocumentEventHandler {
484483
private HtmlDocumentRenderer htmlDocumentRenderer;
485484

486485
//\cond DO_NOT_DOCUMENT
@@ -491,10 +490,10 @@ internal virtual HtmlDocumentRenderer.PageMarginBoxesDrawingHandler SetHtmlDocum
491490
}
492491
//\endcond
493492

494-
public virtual void HandleEvent(Event @event) {
493+
protected override void OnAcceptedEvent(AbstractPdfDocumentEvent @event) {
495494
if (@event is PdfDocumentEvent) {
496495
PdfPage page = ((PdfDocumentEvent)@event).GetPage();
497-
PdfDocument pdfDoc = ((PdfDocumentEvent)@event).GetDocument();
496+
PdfDocument pdfDoc = @event.GetDocument();
498497
int pageNumber = pdfDoc.GetPageNumber(page);
499498
ProcessPage(pdfDoc, pageNumber);
500499
}

port-hash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c3de33cc4df25b31340e4c4c08d152cab9908781
1+
05f7aade95c3730debd74a5d6b9a470a36c6f418

0 commit comments

Comments
 (0)