iText7 adding SVG into PdfDocument and possible is

2019-07-10 11:33发布

问题:

Regarding the answer of the question: How to add an SVG to a PDF using iText7

Here is a link click here !

When I used the Sample java code, it came an error.

ERROR: com.itextpdf.styledxmlparser.node.impl.jsoup.JsoupXmlParser - Could not map node type: class com.itextpdf.styledxmlparser.jsoup.nodes.XmlDeclaration

What might be the reason that causes the error? How can avoid it?

Dependencies:

dependencies {
  compile 'com.itextpdf:kernel:7.1.2'
  compile 'com.itextpdf:io:7.1.2'
  compile 'com.itextpdf:layout:7.1.2'
  compile 'com.itextpdf:forms:7.1.2'
  compile 'com.itextpdf:pdfa:7.1.2'
  compile 'com.itextpdf:pdftest:7.1.2'
  compile 'com.itextpdf:svg:7.1.2'
  //-- pdfHTML --
  compile 'com.itextpdf:html2pdf:1.0.0'
  //-- Kerning --
  compile 'com.itextpdf:typography:1.0.0'
  //-- iText 7 License Key Library --
  compile 'com.itextpdf:itext-licensekey:2.0.3'
}

Sample java code:

PdfDocument doc = new PdfDocument(
new PdfWriter(new FileOutputStream(new File(".../test.pdf")),new WriterProperties().setCompressionLevel(0)));
doc.addNewPage();

URL svgUrl = null;
svgPath = ".../test.svg";

try{
    svgUrl = new URL(svgPath);
}
catch(MalformedURLException mue){...}

if(svgUrl == null){
    try{
        svgUrl = new File(svgPath).toURI().toURL();
    }
    catch(Throwable th){...}
}

SvgConverter.drawOnDocument(svgUrl.openStream(), doc, 1);
doc.close();

SVG Code:

<svg x="0px" y="0px" width="1112.53" height="793.73" preserveAspectRatio="xMidYMid" font-size="0" id="vda25_1" xml="http://www.w3.org/XML/1998/namespace" enable-background="new 0 0 300 841.9" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xml="http://www.w3.org/XML/1998/namespace" version="1.1" >
  <g>
<rect x="0" y="0" width="1112.53" height="793.73" fill="#FDFDFD" />
<line x1="52.54" y1="318.99" x2="1095.68" y2="318.99" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="336" x2="1095.68" y2="336" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="356.79" x2="1095.68" y2="356.79" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="445.61" x2="1095.68" y2="445.61" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="467.53" x2="1095.68" y2="467.53" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="504.19" x2="1095.68" y2="504.19" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="1095.68" y1="36.66" x2="1095.68" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="740.41" y1="336.38" x2="740.41" y2="445.61" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="396.47" y1="336.38" x2="396.47" y2="445.61" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="37.8" y1="157" x2="37.8" y2="650" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" noprint="true" />
<line x1="915.02" y1="53.67" x2="952.82" y2="53.67" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="377.57" x2="1095.68" y2="377.57" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="196.16" x2="1095.68" y2="196.16" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="177.26" x2="1095.68" y2="177.26" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="158.36" x2="1095.68" y2="158.36" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="400.25" x2="1095.68" y2="400.25" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="422.93" x2="1095.68" y2="422.93" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="726.42" x2="1095.68" y2="726.42" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.16" y1="36.66" x2="1095.68" y2="36.66" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="528" x2="1095.68" y2="528" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="467.9" y1="505.32" x2="467.9" y2="528" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="272.13" y1="546.9" x2="1095.68" y2="546.9" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="272.13" y1="528" x2="272.13" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="345.07" y1="565.79" x2="1095.68" y2="565.79" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="345.07" y1="565.79" x2="345.07" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="418.01" y1="565.79" x2="418.01" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="489.45" y1="565.79" x2="489.45" y2="685.98" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="888.19" y1="565.79" x2="888.19" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="907.08" y1="565.79" x2="907.08" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="925.98" y1="565.79" x2="925.98" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="944.88" y1="565.79" x2="944.88" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="963.78" y1="565.79" x2="963.78" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="982.68" y1="565.79" x2="982.68" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="1001.57" y1="565.79" x2="1001.57" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="1020.47" y1="565.79" x2="1020.47" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="1039.37" y1="565.79" x2="1039.37" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="1058.27" y1="565.79" x2="1058.27" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="1077.16" y1="565.79" x2="1077.16" y2="662.17" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="750.23" x2="1095.68" y2="750.23" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.54" y1="769.13" x2="1095.68" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="1039.37" y1="751.37" x2="1039.37" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="52.16" y1="36.66" x2="52.16" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="982.68" y1="751.37" x2="982.68" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="925.98" y1="751.37" x2="925.98" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="869.29" y1="751.37" x2="869.29" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="812.6" y1="751.37" x2="812.6" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="755.9" y1="751.37" x2="755.9" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="699.21" y1="751.37" x2="699.21" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="642.52" y1="751.37" x2="642.52" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="585.83" y1="751.37" x2="585.83" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="529.13" y1="751.37" x2="529.13" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="472.44" y1="751.37" x2="472.44" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="415.75" y1="751.37" x2="415.75" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="359.05" y1="751.37" x2="359.05" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="302.36" y1="751.37" x2="302.36" y2="769.13" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="574.11" y1="726.42" x2="574.11" y2="750.23" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="253.23" y1="663.31" x2="253.23" y2="685.98" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="377.95" y1="663.31" x2="377.95" y2="685.98" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="714.33" y1="505.32" x2="714.33" y2="528" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />
<line x1="778.58" y1="726.42" x2="778.58" y2="750.23" stroke="black" stroke-width="0.4802" stroke-linecap="square" stroke-miterlimit="10" />

<text x="1063" y="657.5" id="beschicht_nok" width="10.16003" type="radiobutton" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="1082" y="657.5" id="sonst_nok" width="10" type="radiobutton" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="199.2748" y="679" id="a_abweichnr" width="49.95519" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="313.421" y="679" id="g_bis" width="60.52899" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="440.1742" y="679" id="anz_teile" width="45.27579" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="636.9943" y="679" id="n_dat" width="77.11573" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="954.0756" y="679" id="a_ls_nr" width="86.92444" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="1046" y="679" id="a_ls_dat" width="45.68005" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="94.2564" y="701" id="a_zch" width="138.3436" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text text-anchor="inherit" x="113" y="719.5" id="a_abt_name" width="118.73" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="283.6996" y="701.5" id="a_abt_tel" width="807.9805" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="303.896" y="719.5" id="a_abt_fax" width="182.104" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="491" y="719.5" id="a_abt_mail" width="600.6801" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="124.3619" y="742" id="bemerkung_a" width="445.7481" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="619.9204" y="742" id="a_dat_unter" width="154.6596" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
<text x="850.0846" y="742" id="a_name_unter" width="241.5955" type="text" style="font-family:Arial Unicode MS;font-size:12px;" fill="blue" />
  </g>
</svg>

回答1:

This is a bug that appears to have been fixed in the latest development build. While we released today, the release version is based on a version that's been delivered two weeks ago. I tried your svg on the latest snapshot build (7.1.3-SNAPSHOT) and it outputs correctly.

You can find the latest version on GitHub: https://github.com/itext/i7j-svg But you'll have to build from sources. If you don't feel like doing that, you can add our artifactory to your repositories element in your pom file and pull the latest snapshot.

<repository>
    <id>snapshots</id>
    <name>iText Repository-snapshots</name>
    <url>https://repo.itextsupport.com/snapshot</url>
</repository>

With the following artifact:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>svg</artifactId>
    <version>7.1.3-SNAPSHOT</version>
</dependency>


标签: java svg itext7