Skip to content

Commit 457ddde

Browse files
committed
SVG: don't draw rect with negative or zero height or width
DEVSIX-8760
1 parent 586e3e3 commit 457ddde

File tree

10 files changed

+19
-7
lines changed

10 files changed

+19
-7
lines changed

svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ protected void doDraw(SvgDrawContext context) {
5858
PdfCanvas cv = context.getCurrentCanvas();
5959
cv.writeLiteral("% rect\n");
6060
setParameters(context);
61+
if (width <= 0 || height <= 0) {
62+
return;
63+
}
6164
boolean singleValuePresent = (rxPresent && !ryPresent) || (!rxPresent && ryPresent);
6265

6366
AffineTransform transform = applyNonScalingStrokeTransform(context);

svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ public void invalidUrlFillTest() throws IOException, InterruptedException {
131131
@LogMessages(
132132
messages = {@LogMessage(messageTemplate = SvgLogMessageConstant.UNMAPPED_TAG, count = 4)}
133133
)
134-
//TODO update cmp file after DEVSIX-2915 will be fixed
135134
public void textFillFallbackTest() throws IOException, InterruptedException {
136135
convertAndCompareSinglePage(SOURCE_FOLDER, DESTINATION_FOLDER, "textFillFallbackTest");
137136
}

svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,13 @@ public void strokeAttributesTest() throws IOException, InterruptedException {
104104
}
105105

106106
@Test
107-
//TODO DEVSIX-8760 : change cmp after fix
108107
public void heightWidthZeroTest() throws IOException, InterruptedException {
109-
convertAndCompareSinglePage(SOURCE_FOLDER, DESTINATION_FOLDER,"height-width-zero");
108+
convertAndCompareSinglePage(SOURCE_FOLDER, DESTINATION_FOLDER,"heightWidthZero");
109+
}
110+
111+
@Test
112+
public void heightWidthNegativeTest() throws IOException, InterruptedException {
113+
convertAndCompareSinglePage(SOURCE_FOLDER, DESTINATION_FOLDER,"heightWidthNegative");
110114
}
111115

112116
@Test

svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public void testRectClipPathRenderer() {
9191
clipRenderer.setClippedRenderer(new RectangleSvgNodeRenderer());
9292
clipRenderer.draw(sdc);
9393

94-
Assertions.assertEquals("q\n% rect\n0 0 300 300 re\nW\nn\n0 0 0 rg\n% rect\n0 0 0 0 re\nf\nQ\n", new String(cv.getContentStream().getBytes()));
94+
Assertions.assertEquals("q\n% rect\n0 0 300 300 re\nW\nn\n0 0 0 rg\n% rect\nf\nQ\n", new String(cv.getContentStream().getBytes()));
9595
}
9696

9797
@Test
@@ -106,7 +106,7 @@ public void testRectClipPathEoRendererNoChange() {
106106
clipRenderer.setClippedRenderer(new RectangleSvgNodeRenderer());
107107
clipRenderer.draw(sdc);
108108

109-
Assertions.assertEquals("q\n% rect\n0 0 300 300 re\nW\nn\n0 0 0 rg\n% rect\n0 0 0 0 re\nf\nQ\n", new String(cv.getContentStream().getBytes()));
109+
Assertions.assertEquals("q\n% rect\n0 0 300 300 re\nW\nn\n0 0 0 rg\n% rect\nf\nQ\n", new String(cv.getContentStream().getBytes()));
110110
}
111111

112112
@Test
@@ -121,7 +121,7 @@ public void testRectEoClipPathRenderer() {
121121
clipRenderer.setClippedRenderer(new RectangleSvgNodeRenderer());
122122
clipRenderer.draw(sdc);
123123

124-
Assertions.assertEquals("q\n% rect\n0 0 300 300 re\nW*\nn\n0 0 0 rg\n% rect\n0 0 0 0 re\nf\nQ\n", new String(cv.getContentStream().getBytes()));
124+
Assertions.assertEquals("q\n% rect\n0 0 300 300 re\nW*\nn\n0 0 0 rg\n% rect\nf\nQ\n", new String(cv.getContentStream().getBytes()));
125125
}
126126

127127
@Test
Lines changed: 6 additions & 0 deletions
Loading

svg/src/test/resources/com/itextpdf/svg/renderers/impl/StrokeTest/height-width-zero.svg renamed to svg/src/test/resources/com/itextpdf/svg/renderers/impl/StrokeTest/heightWidthZero.svg

Lines changed: 1 addition & 1 deletion
Loading

0 commit comments

Comments
 (0)