Russian info from map topicmeta to PDF properties
Post here questions and problems related to editing and publishing DITA content.
-
- Posts: 3
- Joined: Fri Nov 27, 2015 3:14 pm
Russian info from map topicmeta to PDF properties
Hello!
I need to insert information from map\topicmeta to PDF properties (for example, title).
I customize template "createMetadata".
For example:
When I publish document in English, doc is fine and PDF properties are inserted correctly.
For the purpose of publishing documents in Russian I add locale info:But it doesn't help - document is OK, but there is no information in PDF properties.
I tried to analize topic.fo file and comapare Russian and English "versions" of fo-files.
I found out the following: DITA OT makes additional fo:inline block for Russian title.
But I have no idea what should I do with it.
Help, please
Thank U!
I need to insert information from map\topicmeta to PDF properties (for example, title).
I customize template "createMetadata".
For example:
Code: Select all
xsl:template name="createMetadata">
<fo:declarations >
<x:xmpmeta>
<rdf:RDF>
<rdf:Description rdf:about="">
<dc:title>
<xsl:value-of select="//*[contains(@class, ' map/map ')]/@title"/>
</dc:title>
<dc:creator>Document author</dc:creator>
<dc:description>Document subject</dc:description>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
</fo:declarations>
</xsl:template>
For the purpose of publishing documents in Russian I add locale info:
Code: Select all
<dc:title xml:lang="ru-RU">
<xsl:value-of select="//*[contains(@class, ' map/map ')]/@title"/>
</dc:title>
I tried to analize topic.fo file and comapare Russian and English "versions" of fo-files.
I found out the following: DITA OT makes additional fo:inline block for Russian title.
But I have no idea what should I do with it.
Help, please

Thank U!
-
- Posts: 404
- Joined: Thu Aug 21, 2003 11:36 am
- Location: Craiova
- Contact:
Re: Russian info from map topicmeta to PDF properties
Post by radu_pisoi »
Hi,
Apache FOP uses XMP (eXtensible Metadata Platform, specified by Adobe) for representing the document metadata. Conforming with this specification, if you want to specify alternative languages for the publication title you have to write something like that:
The xml:lang qualifier is written as an attribute of the XML element whose character data is the value (in this case, the rdf:li elements).
Note also the special language value "x-default", which specifies the default title to be used.
See more details in the Language Alternatives section from XML Specification:
http://partners.adobe.com/public/develo ... cation.pdf
If the above information is not enough to resolve your problem, could you give us more details about your configuration and use case?
* what version of oXygen do you use?
* do you use a custom DITA-OT or the one that comes embedded with oXygen?
* I understand that you want to publish your DITA map in different languages. Could you tell us how your DITA map is organized for this purpose?
* Also, could you tell us what you want to obtain? A single PDF with multiple languages or a PDF for each language?
Apache FOP uses XMP (eXtensible Metadata Platform, specified by Adobe) for representing the document metadata. Conforming with this specification, if you want to specify alternative languages for the publication title you have to write something like that:
Code: Select all
<xmp:Title>
<rdf:Alt>
<rdf:li xml:lang="x-default">XMP - Extensible Metadata Platform</rdf:li>
<rdf:li xml:lang="en-us">XMP - Extensible Metadata Platform</rdf:li>
<rdf:li xml:lang="fr-fr">XMP - Une Platforme Extensible pour les Métadonnées</rdf:li>
<rdf:li xml:lang="it-it">XMP - Piattaforma Estendibile di Metadata</rdf:li>
</rdf:Alt>
</xmp:Title>
Note also the special language value "x-default", which specifies the default title to be used.
See more details in the Language Alternatives section from XML Specification:
http://partners.adobe.com/public/develo ... cation.pdf
If the above information is not enough to resolve your problem, could you give us more details about your configuration and use case?
* what version of oXygen do you use?
* do you use a custom DITA-OT or the one that comes embedded with oXygen?
* I understand that you want to publish your DITA map in different languages. Could you tell us how your DITA map is organized for this purpose?
* Also, could you tell us what you want to obtain? A single PDF with multiple languages or a PDF for each language?
Radu Pisoi
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
-
- Posts: 3
- Joined: Fri Nov 27, 2015 3:14 pm
Re: Russian info from map topicmeta to PDF properties
Hi, Radu!
Thank U for the quick answer and for your adviсe. Unfortunately, id doesn't help.
I wrote the following xsl-expression:
Where ЮЮЮ - Russian letters.
Transformation failed with NullPointerException error.
When I put an English text as the value of <rdf:li>, everything is OK.
Inside the fo-file I see the additional fo:inline block before Russian letters ЮЮЮ (I guess, that is the problem):
When there is no rissian letters in <rdf:li>, no additional fo:block is inserted.
Regarding your questions:
* We use <oXygen/> XML Author 16.1, build 2015012213
* We use embedded DITA-OT and customized xsl-file with several templates
* Basically we publish documents in Russian (since 2010
). The idea of getting metadata in PDF output is new one
We set xml:lang properties as ru-ru in all topics and maps.
*Now I want to obtain a PDF in Russian language.
Thank U!
Thank U for the quick answer and for your adviсe. Unfortunately, id doesn't help.
I wrote the following xsl-expression:
Code: Select all
<xsl:template name="createMetadata">
<fo:declarations >
<x:xmpmeta>
<rdf:RDF>
<rdf:Description>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="ru-ru">Bercut ЮЮЮ</rdf:li>
</rdf:Alt>
</dc:title>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
</fo:declarations>
</xsl:template>
Transformation failed with NullPointerException error.
When I put an English text as the value of <rdf:li>, everything is OK.
Inside the fo-file I see the additional fo:inline block before Russian letters ЮЮЮ (I guess, that is the problem):
Code: Select all
<fo:declarations>
<x:xmpmeta>
<rdf:RDF>
<rdf:Description>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="ru-ru" line-height-shift-adjustment="disregard-shifts">Bercut
[b]<fo:inline line-height="100%" font-family="Times New Roman, Times, Arial Unicode MS, Tahoma, Batang">ЮЮЮ</fo:inline>[/b]
</rdf:li>
</rdf:Alt>
</dc:title>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
</fo:declarations>
Regarding your questions:
* We use <oXygen/> XML Author 16.1, build 2015012213
* We use embedded DITA-OT and customized xsl-file with several templates
* Basically we publish documents in Russian (since 2010


We set xml:lang properties as ru-ru in all topics and maps.
*Now I want to obtain a PDF in Russian language.
Thank U!
-
- Posts: 404
- Joined: Thu Aug 21, 2003 11:36 am
- Location: Craiova
- Contact:
Re: Russian info from map topicmeta to PDF properties
Post by radu_pisoi »
Hi,
These elements are produced by the transform.topic2fo.i18n.filter DITA-OT step. I've added an issue to the DITA-OT project, see https://github.com/dita-ot/dita-ot/issues/2154.
Meanwhile, a possible workaround could be to skip these elements from the i18n-postprocess.xsl stylesheet which loads the stage3.fo and produces the topic.fo file. This stylesheet is located here: {oXygen}\frameworks\dita\DITA-OT\plugins\org.dita.pdf2\xsl\fo\i18n-postprocess.xsl.
To do this, you have to add the following template:
However, after you apply the above patch, I think you can discard your PDF customization that adds the title metadata in PDF. The title should be loaded automatically from the DITA Map without any customization.
Yes, you are right. This is the main problem because the Apache FOP processor is not expected to encounter these elements inside the XMP metadata language.Inside the fo-file I see the additional fo:inline block before Russian letters ЮЮЮ (I guess, that is the problem):
These elements are produced by the transform.topic2fo.i18n.filter DITA-OT step. I've added an issue to the DITA-OT project, see https://github.com/dita-ot/dita-ot/issues/2154.
Meanwhile, a possible workaround could be to skip these elements from the i18n-postprocess.xsl stylesheet which loads the stage3.fo and produces the topic.fo file. This stylesheet is located here: {oXygen}\frameworks\dita\DITA-OT\plugins\org.dita.pdf2\xsl\fo\i18n-postprocess.xsl.
To do this, you have to add the following template:
Code: Select all
<xsl:template match="x:xmpmeta//opentopic-i18n:text-fragment" priority="+10" xmlns:x="adobe:ns:meta/">
<xsl:apply-templates/>
</xsl:template>
Radu Pisoi
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
-
- Posts: 152
- Joined: Fri Apr 24, 2015 12:28 pm
Re: Russian info from map topicmeta to PDF properties
Hello,
We have almost the same issue, or the same, I don't know.
Unfortunately, the work-around doesn't work for us. I even tried out the fix from Jarno in Github, but to no avail.
I presume, something else needs to be done in our case.
Our code works fine for standard European languages (en, de, fr, it, es), but we're having issues with Japanese and Russian.
For the title, XMP structure: 1 is inserted, and the "Additional Metadata" button in the PDF properties can no longer be clicked, so that our copyright information gets lost.
* We use oXygen 19.0, build build 2017042020
* We use a customized DITA OT, based on version 2.0.1, using our own plug-in.
* We publish our maps individually, each xml:lang is set in the map. Our main map structure follows the DITA standard and includes some adjustments that shouldn't cause the issue. Maybe it makes sense to send you a sample map.
* We create a PDF for each language. In very rare cases, we create a single PDF with multiple languages, but I would like to have this issue solved for individual PDFs.
Thanks,
Christina
We have almost the same issue, or the same, I don't know.
Unfortunately, the work-around doesn't work for us. I even tried out the fix from Jarno in Github, but to no avail.
I presume, something else needs to be done in our case.
Our code works fine for standard European languages (en, de, fr, it, es), but we're having issues with Japanese and Russian.
For the title, XMP structure: 1 is inserted, and the "Additional Metadata" button in the PDF properties can no longer be clicked, so that our copyright information gets lost.
Code: Select all
<xsl:template name="createMetadata">
<fo:declarations>
<x:xmpmeta>
<rdf:RDF>
<rdf:Description rdf:about="" xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/">
<xsl:variable name="title" as="xs:string?">
<xsl:apply-templates select="." mode="dita-ot:title-metadata"/>
</xsl:variable>
<dc:title>
<xsl:value-of select="//*[contains(@class, ' map/map ')]/@title"/>
</dc:title>
<!-- ck-2017-05-24: Added publisher instead of authorinformation -->
<xsl:variable name="publisher" as="xs:string?">
<xsl:apply-templates select="." mode="dita-ot:publisher-metadata"/>
</xsl:variable>
<xsl:if test="exists($publisher)">
<dc:creator>
<xsl:value-of select="$publisher"/>
</dc:creator>
</xsl:if>
<pdf:Keywords>
<xsl:value-of select="$myProductName[1]"/>
<xsl:value-of select="'_'"/>
<xsl:value-of select="$myProductVersion[1]"/>
<xsl:value-of select="'_'"/>
<xsl:value-of select="/map/@xml:lang"/>
<xsl:value-of select="'_'"/>
<xsl:value-of select="$myPublishingDate[1]"/>
</pdf:Keywords>
<!-- ck-2017-05-24: Copied also the following variable in case it is needed for future purposes -->
<xsl:variable name="subject" as="xs:string?">
<xsl:apply-templates select="." mode="dita-ot:subject-metadata"/>
</xsl:variable>
<xsl:if test="exists($subject)">
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">
<xsl:value-of select="$subject"/>
</rdf:li>
</rdf:Alt>
</dc:description>
</xsl:if>
<!-- ck-2017-05-24: Added Copyrighted, company name and year to Additional Metadata in PDF Properties.
Also added language selection to Advanced Tab in PDF Properties-->
<xmpRights:Marked>True</xmpRights:Marked>
<dc:rights><xsl:value-of select="concat($publisher,' ',year-from-date(current-date()))"/></dc:rights>
<dc:language><xsl:value-of select="/map/@xml:lang"/></dc:language>
<xmp:CreatorTool>DITA Open Toolkit</xmp:CreatorTool>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
</fo:declarations>
</xsl:template>
* We use a customized DITA OT, based on version 2.0.1, using our own plug-in.
* We publish our maps individually, each xml:lang is set in the map. Our main map structure follows the DITA standard and includes some adjustments that shouldn't cause the issue. Maybe it makes sense to send you a sample map.
* We create a PDF for each language. In very rare cases, we create a single PDF with multiple languages, but I would like to have this issue solved for individual PDFs.
Thanks,
Christina
oXygen XML Editor 27.1 build 2025041508
DITA OT 3.7.4
DITA OT 3.7.4
-
- Posts: 9444
- Joined: Fri Jul 09, 2004 5:18 pm
Re: Russian info from map topicmeta to PDF properties
Hi Christina,
Sorry for the delay.
We do not have much experience with this, for the languages where this does not work for you maybe you should set the "clean.temp="no"" parameter and look at the generated XSL-FO file, see how that generated section looks like...
Also maybe try to publish with a commercial FO processor like Antenna House, see if the generated PDF has the same problem. If it does, then probably it's a problem in the XSL-FO content, if not then it's maybe a bug in the Apache FOP processor.
Regards,
Radu
Sorry for the delay.
We do not have much experience with this, for the languages where this does not work for you maybe you should set the "clean.temp="no"" parameter and look at the generated XSL-FO file, see how that generated section looks like...
Also maybe try to publish with a commercial FO processor like Antenna House, see if the generated PDF has the same problem. If it does, then probably it's a problem in the XSL-FO content, if not then it's maybe a bug in the Apache FOP processor.
Regards,
Radu
Radu Coravu
<oXygen/> XML Editor
http://www.oxygenxml.com
<oXygen/> XML Editor
http://www.oxygenxml.com
Return to “DITA (Editing and Publishing DITA Content)”
Jump to
- Oxygen XML Editor/Author/Developer
- ↳ Feature Request
- ↳ Common Problems
- ↳ DITA (Editing and Publishing DITA Content)
- ↳ SDK-API, Frameworks - Document Types
- ↳ DocBook
- ↳ TEI
- ↳ XHTML
- ↳ Other Issues
- Oxygen XML Web Author
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Content Fusion
- ↳ Feature Request
- ↳ Common Problems
- Oxygen JSON Editor
- ↳ Feature Request
- ↳ Common Problems
- Oxygen PDF Chemistry
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Feedback
- ↳ Feature Request
- ↳ Common Problems
- Oxygen XML WebHelp
- ↳ Feature Request
- ↳ Common Problems
- XML
- ↳ General XML Questions
- ↳ XSLT and FOP
- ↳ XML Schemas
- ↳ XQuery
- NVDL
- ↳ General NVDL Issues
- ↳ oNVDL Related Issues
- XML Services Market
- ↳ Offer a Service