Skip to content

Commit 53e3500

Browse files
committed
Fix bug in distribution, add tests
DEVSIX-1050
1 parent bc11ab6 commit 53e3500

File tree

66 files changed

+326
-127
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+326
-127
lines changed

src/main/java/com/itextpdf/html2pdf/attach/impl/layout/HeightDimensionContainer.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,35 @@
55
import com.itextpdf.layout.layout.LayoutArea;
66
import com.itextpdf.layout.layout.LayoutContext;
77
import com.itextpdf.layout.layout.LayoutResult;
8+
import com.itextpdf.layout.minmaxwidth.MinMaxWidthUtils;
89
import com.itextpdf.layout.renderer.IRenderer;
910
import com.itextpdf.styledxmlparser.css.CssContextNode;
1011

1112
class HeightDimensionContainer extends DimensionContainer {
1213

14+
private static final float infHeight = 1e6f;;
15+
1316
HeightDimensionContainer(CssContextNode pmbcNode, float width, float maxHeight, IRenderer renderer, float additionalWidthFix) {
1417
String height = pmbcNode.getStyles().get(CssConstants.HEIGHT);
15-
if (height != null && !height.equals("auto")) {
18+
if (height != null && !height.equals(CssConstants.AUTO)) {
1619
dimension = parseDimension(pmbcNode, height, maxHeight, additionalWidthFix);
1720
}
1821
minDimension = getMinHeight(pmbcNode, maxHeight, additionalWidthFix);
1922
maxDimension = getMaxHeight(pmbcNode, maxHeight, additionalWidthFix);
2023

21-
LayoutArea layoutArea = new LayoutArea(1, new Rectangle(0, 0, width, maxHeight));
22-
LayoutContext minimalContext = new LayoutContext(layoutArea);
23-
24-
LayoutResult quickLayout = renderer.layout(minimalContext);
25-
26-
maxContentDimension = quickLayout.getOccupiedArea().getBBox().getHeight();
27-
minContentDimension = maxContentDimension;
24+
if (!isAutoDimension()) {
25+
maxContentDimension = dimension;
26+
maxContentDimension = dimension;
27+
} else {
28+
LayoutArea layoutArea = new LayoutArea(1, new Rectangle(0, 0, width, infHeight));
29+
LayoutContext minimalContext = new LayoutContext(layoutArea);
30+
31+
LayoutResult quickLayout = renderer.layout(minimalContext);
32+
if (quickLayout.getStatus() != LayoutResult.NOTHING) {
33+
maxContentDimension = quickLayout.getOccupiedArea().getBBox().getHeight();
34+
minContentDimension = maxContentDimension;
35+
}
36+
}
2837
}
2938

3039
private float getMinHeight(CssContextNode node, float maxAvailableHeight, float additionalWidthFix) {

src/main/java/com/itextpdf/html2pdf/attach/impl/layout/PageContextProcessor.java

Lines changed: 96 additions & 105 deletions
Large diffs are not rendered by default.

src/main/java/com/itextpdf/html2pdf/attach/impl/layout/WidthDimensionContainer.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@ class WidthDimensionContainer extends DimensionContainer {
1010

1111
public WidthDimensionContainer(CssContextNode node, float maxWidth, IRenderer renderer, float additionalWidthFix) {
1212
String width = node.getStyles().get(CssConstants.WIDTH);
13-
if (width != null && !width.equals("auto")) {
13+
if (width != null && !width.equals(CssConstants.AUTO)) {
1414
dimension = parseDimension(node, width, maxWidth, additionalWidthFix);
1515
}
1616
minDimension = getMinWidth(node, maxWidth, additionalWidthFix);
1717
maxDimension = getMaxWidth(node, maxWidth, additionalWidthFix);
18-
MinMaxWidth minMaxWidth = null;
19-
if (renderer instanceof BlockRenderer) {
20-
minMaxWidth = ((BlockRenderer) renderer).getMinMaxWidth();
18+
19+
if (!isAutoDimension()) {
20+
maxContentDimension = dimension;
21+
maxContentDimension = dimension;
22+
} else if (renderer instanceof BlockRenderer) {
23+
MinMaxWidth minMaxWidth = ((BlockRenderer) renderer).getMinMaxWidth();
2124
maxContentDimension = minMaxWidth.getMaxWidth();
2225
minContentDimension = minMaxWidth.getMinWidth();
2326
}

src/main/java/com/itextpdf/html2pdf/css/apply/util/BorderStyleApplierUtil.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ This file is part of the iText (R) project.
6161
import com.itextpdf.layout.property.UnitValue;
6262
import com.itextpdf.styledxmlparser.css.resolve.CssDefaults;
6363
import com.itextpdf.styledxmlparser.css.util.CssUtils;
64-
import org.slf4j.Logger;
65-
import org.slf4j.LoggerFactory;
6664

6765
import java.util.Map;
6866

@@ -71,11 +69,6 @@ This file is part of the iText (R) project.
7169
*/
7270
public class BorderStyleApplierUtil {
7371

74-
/**
75-
* The logger.
76-
*/
77-
private static final Logger LOGGER = LoggerFactory.getLogger(BorderStyleApplierUtil.class);
78-
7972
/**
8073
* Creates a new {@link BorderStyleApplierUtil} instance.
8174
*/
@@ -192,7 +185,6 @@ public static Border getCertainBorder(String borderWidth, String borderStyle, St
192185
return null;
193186
}
194187
if (unitValue.isPercentValue()) {
195-
LOGGER.error("border-width in percents is not supported");
196188
return null;
197189
}
198190

src/test/java/com/itextpdf/html2pdf/css/media/page/PageMarginBoxIntegrationTest.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.itextpdf.html2pdf.css.media.page;
22

33
import com.itextpdf.html2pdf.ExtendedHtmlConversionITextTest;
4-
import com.itextpdf.test.annotations.LogMessage;
5-
import com.itextpdf.test.annotations.LogMessages;
64
import com.itextpdf.test.annotations.type.IntegrationTest;
75
import org.junit.BeforeClass;
86
import org.junit.Test;
@@ -282,4 +280,24 @@ public void largeFixedSidesNoMiddleTest() throws IOException, InterruptedExcepti
282280
public void allFixedWithMBPTest() throws IOException, InterruptedException {
283281
convertToPdfAndCompare("allFixedWithMBPTest", sourceFolder, destinationFolder);
284282
}
283+
284+
@Test
285+
public void percentageVerticalTest() throws IOException, InterruptedException {
286+
convertToPdfAndCompare("percentageVerticalTest", sourceFolder, destinationFolder);
287+
}
288+
289+
@Test
290+
public void cornerPrecisionTest() throws IOException, InterruptedException {
291+
convertToPdfAndCompare("cornerPrecisionTest", sourceFolder, destinationFolder);
292+
}
293+
294+
@Test
295+
public void negativeMarginsTest() throws IOException, InterruptedException {
296+
convertToPdfAndCompare("negativeMarginsTest", sourceFolder, destinationFolder);
297+
}
298+
299+
@Test
300+
public void hugeImageTest() throws IOException, InterruptedException {
301+
convertToPdfAndCompare("hugeImageTest", sourceFolder, destinationFolder);
302+
}
285303
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)