Jasper reports 如何从Jaspersoft/JRXML生成双语标记的PDF输出?

Jasper reports 如何从Jaspersoft/JRXML生成双语标记的PDF输出?,jasper-reports,multilingual,export-to-pdf,tagged-pdf,Jasper Reports,Multilingual,Export To Pdf,Tagged Pdf,我们正在使用Jaspersoft iReport Designer创建双语PDF输出,每个文件都包含英文和法文文本 出于可访问性的原因,我们希望在生成的PDF中用适当的语言标记每个文本块。看看我们在做什么 手动修改PDF文件不是一个选项,因为我们直接通过电子邮件将其发送给用户 Jaspersoft是否支持此功能?没有JasperReports版本 通过上面的修改导出为pdf,并使用iText RUP可视化 根据PDF19:在PDF文档中指定带有Lang条目的段落或短语的语言,这就足够了吗 验

我们正在使用Jaspersoft iReport Designer创建双语PDF输出,每个文件都包含英文和法文文本

出于可访问性的原因,我们希望在生成的PDF中用适当的语言标记每个文本块。看看我们在做什么

手动修改PDF文件不是一个选项,因为我们直接通过电子邮件将其发送给用户

Jaspersoft是否支持此功能?

没有JasperReports版本 通过上面的修改导出为pdf,并使用iText RUP可视化

根据PDF19:在PDF文档中指定带有Lang条目的段落或短语的语言,这就足够了吗

验证随附标记或容器上的/Lang条目是否正确指定了与周围文本语言不同的段落、短语或单词的语言:


据我所知,是的,但我不是这方面的专家,在任何情况下,如果您需要添加其他标记,程序都是相同的。

您可以查看property和其他net.sf.jasperreports.export.pdf.tag.*properties谢谢Alex!该属性定义文档的语言(全局|上下文|报告范围)。我正在寻找类似的东西,但与元素范围。它可能会改变一个元素的语言。我不知道iText 2是否能做到这一点(JasperReports附带特殊许可证)。目前在Jaspersoft iReport Designer v4.1.2上,但如果能做到这一点,将开放更改版本。
public static final String PROPERTY_TAG_LANG = JRPdfExporter.PDF_EXPORTER_PROPERTIES_PREFIX + "tag.lang";
protected void startText(JRPrintText text, boolean isHyperlink)
    {
        if (isTagged)
        {

            PdfStructureElement textTag = new PdfStructureElement(tagStack.peek(), isHyperlink ? PdfName.LINK : PdfName.TEXT);
            if (text.hasProperties()&&text.getPropertiesMap().containsProperty(PROPERTY_TAG_LANG)){
                textTag.put(PdfName.LANG, new PdfString(text.getPropertiesMap().getProperty(PROPERTY_TAG_LANG)));
            }
            pdfContentByte.beginMarkedContentSequence(textTag);
        }
    }
...
if (glyphRendererAddActualText && textRenderer instanceof PdfGlyphRenderer)
{
    tagHelper.startText(text,styledText.getText(), text.getLinkType() != null);
}
else
{
    tagHelper.startText(text,text.getLinkType() != null);
}
...
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="TaggedPdf" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1be2df3d-cbc1-467c-8729-1ed569eb8a0d">
    <property name="net.sf.jasperreports.export.pdf.tagged" value="true"/>
    <property name="net.sf.jasperreports.export.pdf.tag.language" value="EN-US"/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <title>
        <band height="67" splitType="Stretch">
            <staticText>
                <reportElement x="0" y="0" width="240" height="30" uuid="0722eadc-3fd6-4c4d-811c-64fbd18e0af5"/>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Hello world]]></text>
            </staticText>
            <staticText>
                <reportElement x="0" y="30" width="240" height="30" uuid="5080190e-e9fd-4df6-b0f6-f1be3c109805">
                    <property name="net.sf.jasperreports.export.pdf.tag.lang" value="FR"/>
                </reportElement>
                <textElement verticalAlignment="Middle"/>
                <text><![CDATA[Bonjour monde]]></text>
            </staticText>
        </band>
    </title>
</jasperReport>