ExceptionConverter: java.io.UnsupportedEncodingException: UniCNS-UCS2-H - PullRequest
0 голосов
/ 11 апреля 2019

Я использовал 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. Однако проблема все еще там, я путал в течение нескольких дней.

Я был бы рад, если бы была какая-либо информация, которая может мне помочь.

С наилучшими пожеланиями.

...