ExceptionConverter:java.io.UnsupportedEncodingException:UniCNS-UCS2-H

时间:2019-04-11 05:54:24

标签: java encoding jasper-reports itext

我使用Java程序而不是iReport设计报告模板。

我想导出PDF文件,但是会导致如下异常。

java.lang.RuntimeException:ExceptionConverter:java.io.UnsupportedEncodingException: UniCNS-UCS2-H
 at 
com.claridy.toread.core.jsrsupport.ReportJob.execute(ReportJob.java:177) ~[toreadcore-4.4.0-SNAPSHOT.jar:na]
 at 
org.quartz.core.JobRunShell.run(JobRunShell.java:199) ~[quartz-1.7.2.jar:na]
 at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:546) [quartz-1.7.2.jar:na]
com.lowagie.text.ExceptionConverter: UniCNS-UCS2-H

这是与该方法一起使用的pom.xml依赖项。

<dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>3.7.6</version>
        <exclusions>
            <exclusion>
                <groupId>bouncycastle</groupId>
                <artifactId>bcprov-jdk14</artifactId>
            </exclusion>
            <exclusion>
                <groupId>xml-apis</groupId>
                <artifactId>xml-apis</artifactId>
            </exclusion>
        </exclusions>
</dependency>
<dependency>
    <groupId>com.claridy</groupId>
    <artifactId>iText</artifactId>
    <version>4.2.1</version>
</dependency>
<dependency>
        <groupId>com.claridy</groupId>
        <artifactId>iTextAsia</artifactId>
    <version>1.0</version>
</dependency>

iText和iTextAsia都包含UniCNS-UCS2-H.camp

这是我的代码的一部分,exporter.exportReport()导致异常。

private String exportPdf(String jrPrintFile, String fileName) throws Exception {

        String outputFileName = fileName + ".pdf";

        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(outputFileName);

            JRPdfExporter exporter = new JRPdfExporter();

            exporter.setParameter(JRExporterParameter.INPUT_FILE_NAME, jrPrintFile);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, fos);
            exporter.exportReport();

        } catch (NullPointerException e) {
            throw new ReportJobInterruptException();
        } catch (Exception e) {
            throw e;
        } finally {
            StreamUtils.close(fos);
            try {
                (new File(jrPrintFile)).delete();
            } catch (Exception e) {
            }
        }

        return outputFileName;
    }

我已经设置了PdfEncoding和PdfEmbedded。

JRDesignStyle normalStyle = new JRDesignStyle();
        normalStyle.setPdfEncoding(getDefaultParameter().getStringUse("JRDesignStyle.PdfEncoding"));
normalStyle.setPdfEmbedded(true);
textField = new JRDesignTextField();
textField.setPdfEmbedded(true);
textField.setPdfEncoding(getDefaultParameter().getStringUse("JRDesignStyle.PdfEncoding"));

PdfFontName:MHei-Medium

PdfEncoding:UniCNS-UCS2-H

以下报告模板的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<style name="Arial_Bold" isDefault="true" hAlign="Left" vAlign="Top" isBlankWhenNull="true" fontName="Arial" fontSize="5" isBold="false" pdfFontName="MHei-Medium" pdfEncoding="UniCNS-UCS2-H" isPdfEmbedded="true"/>



<textField isBlankWhenNull="true">
    <reportElement mode="Opaque" x="0" y="8" width="101" height="8"/>
    <textElement textAlignment="Left" verticalAlignment="Top">
        <font pdfEncoding="UniCNS-UCS2-H" isPdfEmbedded="true"/>
    </textElement>
    <textFieldExpression class="java.lang.String"><![CDATA[String.valueOf($F{class21})]]></textFieldExpression>
</textField>

我已经尝试过将itext-asian覆盖到我的iTextAsia上,itextpdf也覆盖了我的itext-4.2.1。 但是问题仍然存在,我已经困惑了好几天。

如果有任何可以帮助我的信息,那将是很高兴的。

最诚挚的问候。

0 个答案:

没有答案