Skip to content

Commit b6224eb

Browse files
pkjuakLodrKumquat
authored andcommitted
Create convenience methods for SvgConverter
DEVSIX-2049
1 parent d5c79ee commit b6224eb

21 files changed

+275
-107
lines changed

src/main/java/com/itextpdf/svg/converter/SvgConverter.java

Lines changed: 141 additions & 56 deletions
Large diffs are not rendered by default.

src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,7 @@ This file is part of the iText (R) project.
4343
package com.itextpdf.svg.processors;
4444

4545
import com.itextpdf.layout.font.FontProvider;
46-
import com.itextpdf.styledxmlparser.css.ICssResolver;
4746
import com.itextpdf.styledxmlparser.css.media.MediaDeviceDescription;
48-
import com.itextpdf.styledxmlparser.resolver.resource.ResourceResolver;
4947
import com.itextpdf.svg.converter.SvgConverter;
5048
import com.itextpdf.svg.renderers.factories.ISvgNodeRendererFactory;
5149
import java.nio.charset.Charset;

src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ This file is part of the iText (R) project.
6161
import com.itextpdf.svg.renderers.impl.NoDrawOperationSvgNodeRenderer;
6262
import com.itextpdf.svg.renderers.impl.TextSvgNodeRenderer;
6363
import com.itextpdf.svg.utils.SvgTextUtil;
64-
6564
import java.util.HashMap;
6665
import java.util.LinkedList;
6766
import java.util.Map;

src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ This file is part of the iText (R) project.
4747
import com.itextpdf.svg.processors.ISvgConverterProperties;
4848
import com.itextpdf.svg.renderers.factories.DefaultSvgNodeRendererFactory;
4949
import com.itextpdf.svg.renderers.factories.ISvgNodeRendererFactory;
50-
5150
import java.nio.charset.StandardCharsets;
5251

5352
/**
@@ -75,6 +74,11 @@ public class SvgConverterProperties implements ISvgConverterProperties {
7574

7675
private String charset = StandardCharsets.UTF_8.name();
7776

77+
public SvgConverterProperties setRendererFactory(ISvgNodeRendererFactory rendererFactory) {
78+
this.rendererFactory = rendererFactory;
79+
return this;
80+
}
81+
7882
/**
7983
* Creates a SvgConverterProperties object. Instantiates its members, ICssResolver and ISvgNodeRenderer, to its default implementations.
8084
*/
@@ -98,8 +102,9 @@ public String getCharset() {
98102
return charset;
99103
}
100104

101-
public void setCharset(String charset) {
105+
public SvgConverterProperties setCharset(String charset) {
102106
this.charset = charset;
107+
return this;
103108
}
104109

105110
/**

src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public SvgProcessorContext(ISvgConverterProperties converterProperties) {
4949
if (baseUri == null) {
5050
baseUri = "";
5151
}
52+
//TODO DEVSIX-2095
5253
resourceResolver = new ResourceResolver(baseUri);
5354
}
5455

src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,9 @@ This file is part of the iText (R) project.
5959
import com.itextpdf.svg.renderers.SvgIntegrationTest;
6060
import com.itextpdf.test.ITextTest;
6161
import com.itextpdf.test.annotations.type.UnitTest;
62-
6362
import java.util.HashMap;
6463
import java.util.List;
6564
import java.util.Map;
66-
6765
import org.junit.Assert;
6866
import org.junit.BeforeClass;
6967
import org.junit.Test;

src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ public void processWithNullPropertiesTest() {
279279

280280
@Test
281281
public void depthFirstNullRendererTest() {
282-
Element jsoupNonExistingElement = new Element(Tag.valueOf("nonExisting"),"");
282+
Element jsoupNonExistingElement = new Element(Tag.valueOf("nonExisting"), "");
283283
INode root = new JsoupElementNode(jsoupNonExistingElement);
284284
DefaultSvgProcessor dsp = new DefaultSvgProcessor();
285285
ISvgConverterProperties scp = new SvgConverterProperties();

src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java

Lines changed: 75 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,24 @@ This file is part of the iText (R) project.
4343
package com.itextpdf.svg.processors.impl.font;
4444

4545

46+
import com.itextpdf.io.util.FileUtil;
47+
import com.itextpdf.kernel.pdf.WriterProperties;
4648
import com.itextpdf.kernel.utils.CompareTool;
49+
import com.itextpdf.styledxmlparser.css.media.MediaDeviceDescription;
50+
import com.itextpdf.styledxmlparser.css.media.MediaType;
51+
import com.itextpdf.styledxmlparser.resolver.font.BasicFontProvider;
4752
import com.itextpdf.svg.exceptions.SvgLogMessageConstant;
53+
import com.itextpdf.svg.processors.ISvgConverterProperties;
54+
import com.itextpdf.svg.processors.impl.SvgConverterProperties;
4855
import com.itextpdf.svg.renderers.SvgIntegrationTest;
4956
import com.itextpdf.test.ITextTest;
5057
import com.itextpdf.test.annotations.LogMessage;
5158
import com.itextpdf.test.annotations.LogMessages;
5259
import com.itextpdf.test.annotations.type.IntegrationTest;
53-
60+
import java.io.File;
5461
import java.io.FileInputStream;
5562
import java.io.FileOutputStream;
5663
import java.io.IOException;
57-
5864
import org.junit.Assert;
5965
import org.junit.BeforeClass;
6066
import org.junit.Ignore;
@@ -225,11 +231,73 @@ public void fontFamilyTest01() throws IOException, InterruptedException {
225231
runTest("fontFamilyTest01");
226232
}
227233

228-
private void runTest(String fileName) throws IOException, InterruptedException {
229-
convert(sourceFolder + fileName + ".svg",destinationFolder + fileName + ".pdf");
230-
CompareTool compareTool = new CompareTool();
231-
String compareResult = compareTool.compareByContent(destinationFolder + fileName + ".pdf", sourceFolder + "cmp_" + fileName + ".pdf", destinationFolder, "diff_");
232-
Assert.assertNull(compareResult);
234+
@Test
235+
public void resolveFontsWithoutWriterProperties() throws IOException, InterruptedException {
236+
String fileName = "fontSelectorTest";
237+
ISvgConverterProperties properties = new SvgConverterProperties().setFontProvider(new BasicFontProvider()).setMediaDeviceDescription(new MediaDeviceDescription(MediaType.ALL));
238+
convertToSinglePage(new File(sourceFolder + fileName + ".svg"), new File(destinationFolder + fileName + ".pdf"), properties);
239+
compare(fileName, sourceFolder, destinationFolder);
240+
}
241+
242+
@Test
243+
public void resolveFontsWithoutConverterPropertiesAndWriterProperties() throws IOException, InterruptedException {
244+
String fileName = "resolveFonts_WithoutConverterPropertiesAndWriterProperties";
245+
String svgFile = "fontSelectorTest";
246+
convertToSinglePage(new File(sourceFolder + svgFile + ".svg"), new File(destinationFolder + fileName + ".pdf"));
247+
compare(fileName, sourceFolder, destinationFolder);
248+
}
249+
250+
@Test
251+
public void resolveFontsWithAllProperties() throws IOException, InterruptedException {
252+
String fileName = "resolveFonts_WithAllProperties";
253+
String svgFile = "fontSelectorTest";
254+
WriterProperties writerprops = new WriterProperties().setCompressionLevel(0);
255+
String baseUri = FileUtil.getParentDirectory(new File(sourceFolder + svgFile + ".svg"));
256+
ISvgConverterProperties properties = new SvgConverterProperties().setBaseUri(baseUri).setFontProvider(new BasicFontProvider()).setMediaDeviceDescription(new MediaDeviceDescription(MediaType.ALL));
257+
convertToSinglePage(new File(sourceFolder + svgFile + ".svg"), new File(destinationFolder + fileName + ".pdf"), properties, writerprops);
258+
compare(fileName, sourceFolder, destinationFolder);
259+
}
260+
261+
@Test
262+
public void resolveFontsWithWriterProperties() throws IOException, InterruptedException {
263+
String fileName = "resolveFonts_WithWriterProperties";
264+
String svgFile = "fontSelectorTest";
265+
WriterProperties writerprops = new WriterProperties().setCompressionLevel(0);
266+
convertToSinglePage(new File(sourceFolder + svgFile + ".svg"), new File(destinationFolder + fileName + ".pdf"), writerprops);
267+
compare(fileName, sourceFolder, destinationFolder);
268+
}
269+
270+
@Test
271+
public void resolveFontsWithConverterPropsAndWriterProps() throws IOException, InterruptedException {
272+
String fileName = "resolveFonts_WithConverterPropsAndWriterProps";
273+
String svgFile = "fontSelectorTest";
274+
WriterProperties writerprops = new WriterProperties().setCompressionLevel(0);
275+
String baseUri = FileUtil.getParentDirectory(new File(sourceFolder + svgFile + ".svg"));
276+
ISvgConverterProperties properties = new SvgConverterProperties().setBaseUri(baseUri).setFontProvider(new BasicFontProvider()).setMediaDeviceDescription(new MediaDeviceDescription(MediaType.ALL));
277+
convertToSinglePage(new FileInputStream(sourceFolder + svgFile + ".svg"), new FileOutputStream(destinationFolder + fileName + ".pdf"), properties, writerprops);
278+
compare(fileName, sourceFolder, destinationFolder);
279+
}
280+
281+
@Test
282+
public void resolveFontsWithConverterPropertiesAndEmptyUri() throws IOException, InterruptedException {
283+
String fileName = "resolveFonts_WithConverterPropertiesAndEmptyUri";
284+
String svgFile = "fontSelectorTest";
285+
ISvgConverterProperties properties = new SvgConverterProperties().setBaseUri("").setFontProvider(new BasicFontProvider()).setMediaDeviceDescription(new MediaDeviceDescription(MediaType.ALL));
286+
convertToSinglePage(new File(sourceFolder + svgFile + ".svg"), new File(destinationFolder + fileName + ".pdf"), properties);
287+
compare(fileName, sourceFolder, destinationFolder);
288+
}
289+
290+
@Test
291+
public void resolveFontsWithConverterPropertiesAndNullUri() throws IOException, InterruptedException {
292+
String fileName = "resolveFonts_WithConverterPropertiesAndNullUri";
293+
String svgFile = "fontSelectorTest";
294+
ISvgConverterProperties properties = new SvgConverterProperties().setBaseUri(null).setFontProvider(new BasicFontProvider()).setMediaDeviceDescription(new MediaDeviceDescription(MediaType.ALL));
295+
convertToSinglePage(new File(sourceFolder + svgFile + ".svg"), new File(destinationFolder + fileName + ".pdf"), properties);
296+
compare(fileName, sourceFolder, destinationFolder);
297+
}
233298

299+
private void runTest(String fileName) throws IOException, InterruptedException {
300+
convert(sourceFolder + fileName + ".svg", destinationFolder + fileName + ".pdf");
301+
compare(fileName, sourceFolder, destinationFolder);
234302
}
235303
}

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

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,13 @@ This file is part of the iText (R) project.
4848
import com.itextpdf.kernel.utils.CompareTool;
4949
import com.itextpdf.svg.converter.SvgConverter;
5050
import com.itextpdf.svg.processors.ISvgConverterProperties;
51-
51+
import com.itextpdf.svg.processors.impl.SvgConverterProperties;
5252
import java.io.File;
5353
import java.io.FileInputStream;
5454
import java.io.FileOutputStream;
5555
import java.io.IOException;
5656
import java.io.InputStream;
5757
import java.io.OutputStream;
58-
59-
import com.itextpdf.svg.processors.impl.SvgConverterProperties;
6058
import org.junit.Assert;
6159

6260
public class SvgIntegrationTest {
@@ -84,9 +82,28 @@ public void convertToSinglePage(InputStream svg, OutputStream pdfOutputStream) t
8482
SvgConverter.createPdf(svg, pdfOutputStream, writerprops);
8583
}
8684

85+
public void convertToSinglePage(File svg, File pdf) throws IOException {
86+
SvgConverter.createPdf(svg, pdf);
87+
}
88+
89+
public void convertToSinglePage(File svg, File pdf, ISvgConverterProperties properties) throws IOException {
90+
SvgConverter.createPdf(svg, pdf, properties);
91+
}
92+
93+
public void convertToSinglePage(File svg, File pdf, ISvgConverterProperties properties, WriterProperties writerProperties) throws IOException {
94+
SvgConverter.createPdf(svg, pdf, properties, writerProperties);
95+
}
96+
97+
public void convertToSinglePage(File svg, File pdf, WriterProperties writerProperties) throws IOException {
98+
SvgConverter.createPdf(svg, pdf, writerProperties);
99+
}
100+
87101
public void convertToSinglePage(InputStream svg, OutputStream pdfOutputStream, ISvgConverterProperties properties) throws IOException {
88-
WriterProperties writerprops = new WriterProperties().setCompressionLevel(0);
89-
SvgConverter.createPdf(svg, properties, pdfOutputStream, writerprops);
102+
SvgConverter.createPdf(svg, pdfOutputStream, properties);
103+
}
104+
105+
public void convertToSinglePage(InputStream svg, OutputStream pdfOutputStream, ISvgConverterProperties properties, WriterProperties writerprops) throws IOException {
106+
SvgConverter.createPdf(svg, pdfOutputStream, properties, writerprops);
90107
}
91108

92109
public void convertAndCompareVisually(String src, String dest, String fileName) throws IOException, InterruptedException {
@@ -119,7 +136,7 @@ public void convertAndCompareStructurally(String src, String dest, String fileNa
119136
compare(fileName, src, dest);
120137
}
121138

122-
private void compare(String filename, String sourceFolder, String destinationFolder) throws IOException, InterruptedException {
139+
protected void compare(String filename, String sourceFolder, String destinationFolder) throws IOException, InterruptedException {
123140
String result = new CompareTool().compareByContent(destinationFolder + filename + ".pdf", sourceFolder + "cmp_" + filename + ".pdf", destinationFolder, "diff_");
124141

125142
if (result != null && !result.contains("No visual differences")) {

src/test/resources/com/itextpdf/svg/processors/impl/FontFaceTest/fontFaceGrammarTest.svg

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)