[ 
https://issues.apache.org/jira/browse/BATIK-1246?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gustavo Juan Cairo updated BATIK-1246:
--------------------------------------
    Description: 
This change fixes a bug with PrettyPrinter where, if the `DOCTYPE_REMOVE` 
option is passed and there is an internal DTD (square brackets) in the DOCTYPE, 
an exception will always be (incorrectly) thrown.

I found this while using the `SVGTranscoder` and passing the hint `KEY_DOCTYPE` 
with value `VALUE_DOCTYPE_REMOVE`. Calling `transcode()` on it fails because of 
the PrettyPrinter bug. As a consequence, this bug essentially renders the SGV 
Transcoder useless in some scenarios.

[You can find the Pull Request here.|https://github.com/apache/batik/pull/16]

 

+Replication steps+
 # Create an SVGTranscoder
 # Add a transcoding hint: (KEY_DOCTYPE, VALUE_DOCTYPE_REMOVE)
 # Transcode using an SVG with an internal DTD in the DOCTYPE
 # Notice an exception with description "end" is incorrectly thrown.

The following snippet could be used to replicate this:
{code:java}
import org.apache.batik.transcoder.TranscoderInput
import org.apache.batik.transcoder.TranscoderOutput
import org.apache.batik.transcoder.svg2svg.SVGTranscoder

String svg = "<!DOCTYPE svg [<!ENTITY test \"TEST\">]><svg 
xmlns=\"http://www.w3.org/2000/svg\";></svg>"
StringWriter stringWriter = new StringWriter();
TranscoderInput input = new TranscoderInput(new StringReader(svg));
TranscoderOutput output = new TranscoderOutput(stringWriter);
SVGTranscoder svgTranscoder = new SVGTranscoder();
svgTranscoder.addTranscodingHint(SVGTranscoder.KEY_DOCTYPE, 
SVGTranscoder.VALUE_DOCTYPE_REMOVE);
svgTranscoder.transcode(input, output);
{code}

  was:
This change fixes a bug with PrettyPrinter where, if the `DOCTYPE_REMOVE` 
option is passed and there is an internal DTD (square brackets) in the DOCTYPE, 
an exception will always be (incorrectly) thrown.

I found this while using the `SVGTranscoder` and passing the hint `KEY_DOCTYPE` 
with value `VALUE_DOCTYPE_REMOVE`. Calling `transcode()` on it fails because of 
the PrettyPrinter bug. As a consequence, this bug essentially renders the SGV 
Transcoder useless in some scenarios.

[You can find the Pull Request here.|https://github.com/apache/batik/pull/16]


> [PATCH] PrettyPrinter fails when removing DOCTYPE with internal DTD
> -------------------------------------------------------------------
>
>                 Key: BATIK-1246
>                 URL: https://issues.apache.org/jira/browse/BATIK-1246
>             Project: Batik
>          Issue Type: Bug
>    Affects Versions: 1.10
>            Reporter: Gustavo Juan Cairo
>            Priority: Critical
>              Labels: patch, pull-request-available
>
> This change fixes a bug with PrettyPrinter where, if the `DOCTYPE_REMOVE` 
> option is passed and there is an internal DTD (square brackets) in the 
> DOCTYPE, an exception will always be (incorrectly) thrown.
> I found this while using the `SVGTranscoder` and passing the hint 
> `KEY_DOCTYPE` with value `VALUE_DOCTYPE_REMOVE`. Calling `transcode()` on it 
> fails because of the PrettyPrinter bug. As a consequence, this bug 
> essentially renders the SGV Transcoder useless in some scenarios.
> [You can find the Pull Request here.|https://github.com/apache/batik/pull/16]
>  
> +Replication steps+
>  # Create an SVGTranscoder
>  # Add a transcoding hint: (KEY_DOCTYPE, VALUE_DOCTYPE_REMOVE)
>  # Transcode using an SVG with an internal DTD in the DOCTYPE
>  # Notice an exception with description "end" is incorrectly thrown.
> The following snippet could be used to replicate this:
> {code:java}
> import org.apache.batik.transcoder.TranscoderInput
> import org.apache.batik.transcoder.TranscoderOutput
> import org.apache.batik.transcoder.svg2svg.SVGTranscoder
> String svg = "<!DOCTYPE svg [<!ENTITY test \"TEST\">]><svg 
> xmlns=\"http://www.w3.org/2000/svg\";></svg>"
> StringWriter stringWriter = new StringWriter();
> TranscoderInput input = new TranscoderInput(new StringReader(svg));
> TranscoderOutput output = new TranscoderOutput(stringWriter);
> SVGTranscoder svgTranscoder = new SVGTranscoder();
> svgTranscoder.addTranscodingHint(SVGTranscoder.KEY_DOCTYPE, 
> SVGTranscoder.VALUE_DOCTYPE_REMOVE);
> svgTranscoder.transcode(input, output);
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to