You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by "simon steiner (JIRA)" <ji...@apache.org> on 2017/09/19 13:40:00 UTC
[jira] [Updated] (BATIK-1002)
org.apache.batik.apps.rasterizer.SVGConverter
[ https://issues.apache.org/jira/browse/BATIK-1002?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
simon steiner updated BATIK-1002:
---------------------------------
Description:
Hi,
I've a weird problem, I'm using org.apache.fop.svg.PDFTranscoder to generate a
PDf from an SVG document in xml format, the problem that I'm facing is despite of defining 'pdf-renderer-cfg.xml' in the specified format and configuring the PDFTranscoder with it, PDFTranscoder is not embedding the font into the PDF. In the 'embed-url' I've given actual path to the true type font.
The contents of 'pdf-renderer-cfg.xml' are :
<?xml version="1.0" encoding="UTF-8"?>
<pdf-renderer>
<fonts>
<font metrics-url="/home/prince/appDir/webapp/lib/Fonts/cursive-standard.xml" kerning="no" embed-url="/home/prince/appDir/webapp/lib/Fonts/Cursive-standard.ttf">
<font-triplet name="Cursive" style="normal" weight="normal"/>
</font>
</fonts>
</pdf-renderer>
and to configure the PDF transcoder I've extended org.apache.batik.apps.rasterizer.SVGConverter
and overridden 'execute' method as :
{code}
public void execute() throws SVGConverterException {
// Compute the set of SVGConverterSource from the source properties
// (srcDir and srcFile);
// This throws an exception if there is not at least one src file.
Vector sources = computeSources();
// Compute the destination files from dest
Vector dstFiles = null;
if(sources.size() == 1 && dst != null && isFile(dst)){
dstFiles = new Vector();
dstFiles.addElement(dst);
}
else{
dstFiles = computeDstFiles(sources);
}
//Getting the path of the FOP config file
String fopPath = UtilProperties.getPropertyValue("fop.properties", "fop.path", "webapp/lib/Fonts");
File userConfigFile = new File(fopPath + "/pdf-renderer-cfg.xml");
//Build the configuration
cfgBuilder = new DefaultConfigurationBuilder();
try {
cfg = cfgBuilder.buildFromFile(userConfigFile);
} catch (ConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Get the PDF Transcoder object
pdfTranscoder = new PDFTranscoder();
//Configure the transcoder
try {
pdfTranscoder.configure(cfg);
} catch (ConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Now, get the transcoder to use for the operation
Transcoder transcoder = (Transcoder) pdfTranscoder;
if(transcoder == null) {
throw new SVGConverterException(ERROR_CANNOT_ACCESS_TRANSCODER,
new Object[]{destinationType.toString()},
true /* fatal error */);
}
// Now, compute the set of transcoding hints to use
Map hints = computeTranscodingHints();
transcoder.setTranscodingHints(hints);
// Notify listener that task has been computed
if(!controller.proceedWithComputedTask(transcoder,
hints,
sources,
dstFiles)){
return;
}
// Convert files one by one
for(int i = 0 ; i < sources.size() ; i++) {
// Get the file from the vector.
SVGConverterSource currentFile
= (SVGConverterSource)sources.elementAt(i);
File outputFile = (File)dstFiles.elementAt(i);
createOutputDir(outputFile);
transcode(currentFile, outputFile, transcoder);
}
}
}
{code}
and the content of the svg file is :
<svg width="432" height="288" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g>
<title>Layer 1</title>
<image transform="rotate(14.4551, 388.899, 199.566)" xlink:href="http://localhost:8080/app/control/app/flex/svgdol/1321955504845/20111123141633795.jpg" id="svg_2" height="362.33104" width="308.62977" y="18.40178" x="234.58535"/>
<image transform="rotate(-13.6166, 149.053, 95.3409)" xlink:href="http://localhost:8080/app/control/app/flex/svgdol/1321955504845/20111123141524886.jpg" id="svg_1" height="246.3374" width="314.99999" y="-27.82715" x="-8.44604"/>
<text transform="matrix(1, 0, 0, 1.20588, 0, -25.8382)" xml:space="preserve" text-anchor="middle" font-family="Cursive" font-size="24" id="svg_3" y="155.817" x="265" stroke-width="0" stroke="#000000" fill="#000000">All Mine....!!!!</text>
</g>
</svg>
but even after this the PDFTransocder 's output , i.e. the PDF doesn't contain the text in proper font, I tried to install the font on my O.S. as well,
but that too didn't work.
I'm using batik-all-1.6.jar ,Java version is 1.6 and O.S. is Linux(Ubuntu).
Any guidance /pointers will of extreme help as I've been debugging the library at runtime since last couple of days and haven't been able to find the cause.
Regards
Prince
was:
Hi,
I've a weird problem, I'm using org.apache.fop.svg.PDFTranscoder to generate a
PDf from an SVG document in xml format, the problem that I'm facing is despite of defining 'pdf-renderer-cfg.xml' in the specified format and configuring the PDFTranscoder with it, PDFTranscoder is not embedding the font into the PDF. In the 'embed-url' I've given actual path to the true type font.
The contents of 'pdf-renderer-cfg.xml' are :
<?xml version="1.0" encoding="UTF-8"?>
<pdf-renderer>
<fonts>
<font metrics-url="/home/prince/appDir/webapp/lib/Fonts/cursive-standard.xml" kerning="no" embed-url="/home/prince/appDir/webapp/lib/Fonts/Cursive-standard.ttf">
<font-triplet name="Cursive" style="normal" weight="normal"/>
</font>
</fonts>
</pdf-renderer>
and to configure the PDF transcoder I've extended org.apache.batik.apps.rasterizer.SVGConverter
and overridden 'execute' method as :
public void execute() throws SVGConverterException {
// Compute the set of SVGConverterSource from the source properties
// (srcDir and srcFile);
// This throws an exception if there is not at least one src file.
Vector sources = computeSources();
// Compute the destination files from dest
Vector dstFiles = null;
if(sources.size() == 1 && dst != null && isFile(dst)){
dstFiles = new Vector();
dstFiles.addElement(dst);
}
else{
dstFiles = computeDstFiles(sources);
}
//Getting the path of the FOP config file
String fopPath = UtilProperties.getPropertyValue("fop.properties", "fop.path", "webapp/lib/Fonts");
File userConfigFile = new File(fopPath + "/pdf-renderer-cfg.xml");
//Build the configuration
cfgBuilder = new DefaultConfigurationBuilder();
try {
cfg = cfgBuilder.buildFromFile(userConfigFile);
} catch (ConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Get the PDF Transcoder object
pdfTranscoder = new PDFTranscoder();
//Configure the transcoder
try {
pdfTranscoder.configure(cfg);
} catch (ConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Now, get the transcoder to use for the operation
Transcoder transcoder = (Transcoder) pdfTranscoder;
if(transcoder == null) {
throw new SVGConverterException(ERROR_CANNOT_ACCESS_TRANSCODER,
new Object[]{destinationType.toString()},
true /* fatal error */);
}
// Now, compute the set of transcoding hints to use
Map hints = computeTranscodingHints();
transcoder.setTranscodingHints(hints);
// Notify listener that task has been computed
if(!controller.proceedWithComputedTask(transcoder,
hints,
sources,
dstFiles)){
return;
}
// Convert files one by one
for(int i = 0 ; i < sources.size() ; i++) {
// Get the file from the vector.
SVGConverterSource currentFile
= (SVGConverterSource)sources.elementAt(i);
File outputFile = (File)dstFiles.elementAt(i);
createOutputDir(outputFile);
transcode(currentFile, outputFile, transcoder);
}
}
}
and the content of the svg file is :
<svg width="432" height="288" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g>
<title>Layer 1</title>
<image transform="rotate(14.4551, 388.899, 199.566)" xlink:href="http://localhost:8080/app/control/app/flex/svgdol/1321955504845/20111123141633795.jpg" id="svg_2" height="362.33104" width="308.62977" y="18.40178" x="234.58535"/>
<image transform="rotate(-13.6166, 149.053, 95.3409)" xlink:href="http://localhost:8080/app/control/app/flex/svgdol/1321955504845/20111123141524886.jpg" id="svg_1" height="246.3374" width="314.99999" y="-27.82715" x="-8.44604"/>
<text transform="matrix(1, 0, 0, 1.20588, 0, -25.8382)" xml:space="preserve" text-anchor="middle" font-family="Cursive" font-size="24" id="svg_3" y="155.817" x="265" stroke-width="0" stroke="#000000" fill="#000000">All Mine....!!!!</text>
</g>
</svg>
but even after this the PDFTransocder 's output , i.e. the PDF doesn't contain the text in proper font, I tried to install the font on my O.S. as well,
but that too didn't work.
I'm using batik-all-1.6.jar ,Java version is 1.6 and O.S. is Linux(Ubuntu).
Any guidance /pointers will of extreme help as I've been debugging the library at runtime since last couple of days and haven't been able to find the cause.
Regards
Prince
> org.apache.batik.apps.rasterizer.SVGConverter
> ---------------------------------------------
>
> Key: BATIK-1002
> URL: https://issues.apache.org/jira/browse/BATIK-1002
> Project: Batik
> Issue Type: Bug
> Components: SVG DOM
> Affects Versions: 1.6
> Environment: Operating System: Linux
> Platform: PC
> Reporter: Prince Sewani
> Assignee: Batik Developer's Mailing list
>
> Hi,
> I've a weird problem, I'm using org.apache.fop.svg.PDFTranscoder to generate a
> PDf from an SVG document in xml format, the problem that I'm facing is despite of defining 'pdf-renderer-cfg.xml' in the specified format and configuring the PDFTranscoder with it, PDFTranscoder is not embedding the font into the PDF. In the 'embed-url' I've given actual path to the true type font.
> The contents of 'pdf-renderer-cfg.xml' are :
> <?xml version="1.0" encoding="UTF-8"?>
> <pdf-renderer>
> <fonts>
> <font metrics-url="/home/prince/appDir/webapp/lib/Fonts/cursive-standard.xml" kerning="no" embed-url="/home/prince/appDir/webapp/lib/Fonts/Cursive-standard.ttf">
> <font-triplet name="Cursive" style="normal" weight="normal"/>
> </font>
> </fonts>
> </pdf-renderer>
> and to configure the PDF transcoder I've extended org.apache.batik.apps.rasterizer.SVGConverter
> and overridden 'execute' method as :
> {code}
> public void execute() throws SVGConverterException {
> // Compute the set of SVGConverterSource from the source properties
> // (srcDir and srcFile);
> // This throws an exception if there is not at least one src file.
> Vector sources = computeSources();
> // Compute the destination files from dest
> Vector dstFiles = null;
> if(sources.size() == 1 && dst != null && isFile(dst)){
> dstFiles = new Vector();
> dstFiles.addElement(dst);
> }
> else{
> dstFiles = computeDstFiles(sources);
> }
>
> //Getting the path of the FOP config file
> String fopPath = UtilProperties.getPropertyValue("fop.properties", "fop.path", "webapp/lib/Fonts");
> File userConfigFile = new File(fopPath + "/pdf-renderer-cfg.xml");
>
> //Build the configuration
> cfgBuilder = new DefaultConfigurationBuilder();
> try {
> cfg = cfgBuilder.buildFromFile(userConfigFile);
> } catch (ConfigurationException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> } catch (SAXException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
> //Get the PDF Transcoder object
> pdfTranscoder = new PDFTranscoder();
>
> //Configure the transcoder
> try {
> pdfTranscoder.configure(cfg);
> } catch (ConfigurationException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
> // Now, get the transcoder to use for the operation
> Transcoder transcoder = (Transcoder) pdfTranscoder;
> if(transcoder == null) {
> throw new SVGConverterException(ERROR_CANNOT_ACCESS_TRANSCODER,
> new Object[]{destinationType.toString()},
> true /* fatal error */);
> }
> // Now, compute the set of transcoding hints to use
> Map hints = computeTranscodingHints();
> transcoder.setTranscodingHints(hints);
> // Notify listener that task has been computed
> if(!controller.proceedWithComputedTask(transcoder,
> hints,
> sources,
> dstFiles)){
> return;
> }
> // Convert files one by one
> for(int i = 0 ; i < sources.size() ; i++) {
> // Get the file from the vector.
> SVGConverterSource currentFile
> = (SVGConverterSource)sources.elementAt(i);
> File outputFile = (File)dstFiles.elementAt(i);
> createOutputDir(outputFile);
> transcode(currentFile, outputFile, transcoder);
> }
> }
>
> }
> {code}
> and the content of the svg file is :
> <svg width="432" height="288" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
> <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
> <g>
> <title>Layer 1</title>
> <image transform="rotate(14.4551, 388.899, 199.566)" xlink:href="http://localhost:8080/app/control/app/flex/svgdol/1321955504845/20111123141633795.jpg" id="svg_2" height="362.33104" width="308.62977" y="18.40178" x="234.58535"/>
> <image transform="rotate(-13.6166, 149.053, 95.3409)" xlink:href="http://localhost:8080/app/control/app/flex/svgdol/1321955504845/20111123141524886.jpg" id="svg_1" height="246.3374" width="314.99999" y="-27.82715" x="-8.44604"/>
> <text transform="matrix(1, 0, 0, 1.20588, 0, -25.8382)" xml:space="preserve" text-anchor="middle" font-family="Cursive" font-size="24" id="svg_3" y="155.817" x="265" stroke-width="0" stroke="#000000" fill="#000000">All Mine....!!!!</text>
> </g>
> </svg>
> but even after this the PDFTransocder 's output , i.e. the PDF doesn't contain the text in proper font, I tried to install the font on my O.S. as well,
> but that too didn't work.
> I'm using batik-all-1.6.jar ,Java version is 1.6 and O.S. is Linux(Ubuntu).
> Any guidance /pointers will of extreme help as I've been debugging the library at runtime since last couple of days and haven't been able to find the cause.
> Regards
> Prince
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-dev-help@xmlgraphics.apache.org