Skip to content

Commit a5031f3

Browse files
yulian-gaponenkoars18wrw
authored andcommitted
Enable HTML mode, update cmp files
Unified top-level layout elements default properties setting. Added test for comparison of basic conversion functionality via #convertToElements and #convertToPdf methods. DEVSIX-3662 Autoported commit. Original commit hash: [e5ad375] Manual files: src/main/java/com/itextpdf/html2pdf/attach/impl/DefaultHtmlProcessor.java src/test/resources/com/itextpdf/html2pdf/css/w3c/css21/text/text-transform-uppercase-002.pdf
1 parent 263d29b commit a5031f3

File tree

2,077 files changed

+126
-29
lines changed

Some content is hidden

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

2,077 files changed

+126
-29
lines changed

itext.tests/itext.html2pdf.tests/itext/html2pdf/Html2ElementsTest.cs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,22 @@ source product.
4242
*/
4343
using System;
4444
using System.Collections.Generic;
45+
using System.IO;
4546
using iText.Html2pdf.Attach.Impl;
47+
using iText.IO.Util;
48+
using iText.Kernel.Pdf;
49+
using iText.Kernel.Utils;
50+
using iText.Layout;
4651
using iText.Layout.Element;
4752
using iText.Layout.Properties;
4853
using iText.Test;
4954
using iText.Test.Attributes;
5055

5156
namespace iText.Html2pdf {
5257
public class Html2ElementsTest : ExtendedITextTest {
58+
public static readonly String sourceFolder = iText.Test.TestUtil.GetParentProjectDirectory(NUnit.Framework.TestContext
59+
.CurrentContext.TestDirectory) + "/resources/itext/html2pdf/Html2ElementsTest/";
60+
5361
public static readonly String destinationFolder = NUnit.Framework.TestContext.CurrentContext.TestDirectory
5462
+ "/test/itext/html2pdf/Html2ElementsTest/";
5563

@@ -171,5 +179,58 @@ public virtual void HtmlObjectMalformedUrlTest() {
171179
IList<IElement> lst = HtmlConverter.ConvertToElements(html);
172180
NUnit.Framework.Assert.IsTrue(lst.Count == 0);
173181
}
182+
183+
[NUnit.Framework.Test]
184+
public virtual void HtmlToElementsVsHtmlToPdfTest() {
185+
String src = sourceFolder + "basic.html";
186+
String outConvertToPdf = destinationFolder + "basicCovertToPdfResult.pdf";
187+
String outConvertToElements = destinationFolder + "basicCovertToElementsResult.pdf";
188+
HtmlConverter.ConvertToPdf(new FileInfo(src), new FileInfo(outConvertToPdf));
189+
IList<IElement> elements = HtmlConverter.ConvertToElements(new FileStream(src, FileMode.Open, FileAccess.Read
190+
));
191+
Document document = new Document(new PdfDocument(new PdfWriter(outConvertToElements)));
192+
// In order to collapse margins between the direct children of root element
193+
// it's required to manually enable collapsing on root element. This is because siblings
194+
// margins collapsing is controlled by the parent element.
195+
// This leads to the difference between pure convertToPdf/Document and convertToElements methods.
196+
document.SetProperty(Property.COLLAPSING_MARGINS, true);
197+
foreach (IElement elem in elements) {
198+
if (elem is IBlockElement) {
199+
document.Add((IBlockElement)elem);
200+
}
201+
else {
202+
if (elem is Image) {
203+
document.Add((Image)elem);
204+
}
205+
else {
206+
if (elem is AreaBreak) {
207+
document.Add((AreaBreak)elem);
208+
}
209+
else {
210+
NUnit.Framework.Assert.Fail("The #convertToElements method gave element which is unsupported as root element, it's unexpected."
211+
);
212+
}
213+
}
214+
}
215+
}
216+
document.Close();
217+
System.Console.Out.WriteLine("html: " + UrlUtil.GetNormalizedFileUriString(src) + "\n");
218+
NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outConvertToElements, outConvertToPdf, destinationFolder
219+
));
220+
}
221+
222+
[NUnit.Framework.Test]
223+
public virtual void BodyFontFamilyTest() {
224+
String html = "<!DOCTYPE html>\n" + "<html>\n" + "<body style=\"font-family: monospace\">\n" + "This text is directly in body and should be monospaced.\n"
225+
+ "<p>This text is in paragraph and should be monospaced.</p>\n" + "</body>\n" + "</html>";
226+
IList<IElement> elements = HtmlConverter.ConvertToElements(html);
227+
NUnit.Framework.Assert.AreEqual(2, elements.Count);
228+
IElement anonymousParagraph = elements[0];
229+
NUnit.Framework.Assert.AreEqual(new String[] { "monospace" }, anonymousParagraph.GetProperty<String[]>(Property
230+
.FONT));
231+
IElement normalParagraph = elements[1];
232+
NUnit.Framework.Assert.AreEqual(new String[] { "monospace" }, normalParagraph.GetProperty<String[]>(Property
233+
.FONT));
234+
}
174235
}
175236
}

itext.tests/itext.html2pdf.tests/itext/html2pdf/css/DisplayTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ public virtual void DisplayTable03Test() {
9090

9191
[NUnit.Framework.Test]
9292
public virtual void DisplayTable04Test() {
93+
// TODO DEVSIX-2445
9394
ConvertToPdfAndCompare("display_table04", sourceFolder, destinationFolder);
9495
}
9596

itext.tests/itext.html2pdf.tests/itext/html2pdf/css/TextPropertiesTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ public virtual void LineHeightTest02() {
9494
}
9595

9696
[NUnit.Framework.Test]
97+
[LogMessage(iText.IO.LogMessageConstant.RECTANGLE_HAS_NEGATIVE_OR_ZERO_SIZES)]
9798
public virtual void LineHeightTest03() {
99+
// TODO DEVSIX-3662
98100
ConvertToPdfAndCompare("lineHeightTest03", sourceFolder, destinationFolder);
99101
}
100102

Binary file not shown.
Binary file not shown.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<body>
4+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
5+
6+
<p>Quisque sagittis purus sit amet volutpat consequat. Sit amet purus gravida quis blandit turpis cursus. Id porta nibh venenatis cras sed felis eget. Leo vel orci porta non pulvinar neque laoreet suspendisse. Egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. At tellus at urna condimentum. Ut placerat orci nulla pellentesque. Faucibus pulvinar elementum integer enim neque volutpat. Viverra ipsum nunc aliquet bibendum enim facilisis gravida. Consectetur lorem donec massa sapien. Ipsum dolor sit amet consectetur adipiscing elit. Luctus accumsan tortor posuere ac ut consequat semper viverra nam.</p>
7+
8+
<b>Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh.</b>
9+
10+
<i style="font-family: monospace;">Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh.</i>
11+
12+
<div style="margin: 50px 0; border: solid lightpink">
13+
<p>Fusce ut placerat orci nulla pellentesque dignissim enim sit. Sit amet justo donec enim diam vulputate ut pharetra. Sollicitudin aliquam ultrices sagittis orci a. Nam aliquam sem et tortor consequat id porta. Hendrerit gravida rutrum quisque non. Tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Posuere ac ut consequat semper. Ut tellus elementum sagittis vitae et leo duis ut. Volutpat ac tincidunt vitae semper quis lectus nulla at. Velit egestas dui id ornare arcu odio ut sem nulla. Sit amet nisl purus in mollis. Integer vitae justo eget magna fermentum iaculis eu non diam. Viverra tellus in hac habitasse platea dictumst. Suspendisse in est ante in nibh mauris. Laoreet id donec ultrices tincidunt arcu non. Ipsum consequat nisl vel pretium lectus quam id leo in. Morbi enim nunc faucibus a pellentesque sit.</p>
14+
</div>
15+
16+
<p>Аксиома силлогизма, по определению, представляет собой неоднозначный предмет деятельности. Надстройка нетривиальна. Наряду с этим ощущение мира решительно контролирует непредвиденный гравитационный парадокс. Сомнение рефлектирует естественный закон исключённого третьего. Созерцание непредсказуемо.</p>
17+
</body>
18+
</html>
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)