Jasper reports 如何从Jaspersoft/JRXML生成双语标记的PDF输出?
我们正在使用Jaspersoft iReport Designer创建双语PDF输出,每个文件都包含英文和法文文本 出于可访问性的原因,我们希望在生成的PDF中用适当的语言标记每个文本块。看看我们在做什么 手动修改PDF文件不是一个选项,因为我们直接通过电子邮件将其发送给用户 Jaspersoft是否支持此功能?没有JasperReports版本 通过上面的修改导出为pdf,并使用iText RUP可视化 根据PDF19:在PDF文档中指定带有Lang条目的段落或短语的语言,这就足够了吗 验证随附标记或容器上的/Lang条目是否正确指定了与周围文本语言不同的段落、短语或单词的语言: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条目的段落或短语的语言,这就足够了吗 验
据我所知,是的,但我不是这方面的专家,在任何情况下,如果您需要添加其他标记,程序都是相同的。您可以查看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>