https://issues.apache.org/bugzilla/show_bug.cgi?id=52254
Bug #: 52254
Summary: org.apache.batik.apps.rasterizer.SVGConverter
Product: Batik
Version: 1.6
Platform: PC
OS/Version: Linux
Status: NEW
Severity: blocker
Priority: P2
Component: SVG DOM
AssignedTo: [email protected]
ReportedBy: [email protected]
Classification: Unclassified
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
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]