• 締切済み

itextの日本語のエラー(バージョンアップ)

itext-1.3.jarからitextpdf-5.4.0.jarにjavaのプログラムを 移行していますが、日本語が表示出来なくエラーになります。 解決策をお教えください。 インタネットで調べて、 iText(PDFライブラリ)の新しいバージョンで日本語がトラブル件で iTextAsian.jarを解凍、comフォルダの下にあるlowagieフォルダを itextpdfにリネーム、iTextAsian.jarの再圧縮 してみましたが解決出来ません  下記にソースコードが有ります import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //日本語 //iTextAsian.jar //iTextAsianCmaps.jar //itextpdf-5.4.0.jar エラーになる //import com.itextpdf.text.Document; //import com.itextpdf.text.DocumentException; //import com.itextpdf.text.Font; //import com.itextpdf.text.PageSize; //import com.itextpdf.text.Paragraph; //import com.itextpdf.text.pdf.BaseFont; //import com.itextpdf.text.pdf.PdfWriter; //itext-1.3.jar OK import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; import java.io.ByteArrayOutputStream; public class test12 extends HttpServlet { private static final long serialVersionUID = 1L; public test() { super(); } public static void samplepdf(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); Document document = new Document(PageSize.A4); PdfWriter pdfwriter = null; try { pdfwriter = PdfWriter.getInstance(document, buffer); } catch (DocumentException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } document.open(); BaseFont bf = null; try { bf = BaseFont.createFont("HeiseiKakuGo-W5","UniJIS-UCS2-H",BaseFont.EMBEDDED); Font font = new Font(bf, 12); document.add(new Paragraph("ABCD漢字",font)); } catch (DocumentException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } document.close(); response.setContentType("application/pdf"); response.setContentLength(buffer.size()); ServletOutputStream output = response.getOutputStream(); output.write(buffer.toByteArray()); output.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { samplepdf(request,response); } }

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

日本語でエラーが起きているのですか? パッと見た感じ、パッケージ構造が変わりフルクラス名に変更が必要になったということだと思いますが。 移行対象のJavaアプリがClassNotFoundをはいているんじゃないですか? 1.配布されているJarのパッケージ構造を変えるのは悪手です。あなたがパッケージの構造を管理しないといけなくなります。 2.1より、あなたが移行するJavaのプログラムの方でimport文を修正しましょう。 3.移行するJavaのプログラムの修正方法がわからないなら、手を出すべきではありません。 staticを使用したServletなんて、久々に見ました。

関連するQ&A

  • JSPでのiTextの動かし方について

    JSPでiTextを動かそうとしていますが、下記JSPソースプログラムでは コンパイルエラーが発生してうまいいきません 原因をお教え頂ければたすかります たぶん設定が不足していると思います 動作環境:jdk.1.6.0_26 Eclipse3.7 Apache-tomcat-7.0.29 ファイル:Program Files\Java\jre6\lib\ext\iText-5.0.6.jar と iTextAsian.jarをインストール JSPソースプログラム <%@ page import="java.io.*, com.lowagie.text.*, com.lowagie.text.pdf.*"%> <% response.setContentType( "application/pdf" ); // step 1: ドキュメントオブジェクトの作成 Document document = new Document(); // step 2: 出力のためのストリームを作成 ByteArrayOutputStream buffer = new ByteArrayOutputStream(); PdfWriter.getInstance( document, buffer ); // step 3: ドキュメントを開く document.open(); // step 4: ドキュメントにパラグラフ(文字列)を追加 document.add(new Paragraph("Hello World")); // step 5: ドキュメントを閉じる document.close(); // step 6: JSPのストリームにPDFを出力する DataOutput output = new DataOutputStream( response.getOutputStream() ); byte[] bytes = buffer.toByteArray(); response.setContentLength(bytes.length); for( int i = 0; i < bytes.length; i++ ) { output.writeByte( bytes[i] ); } %>

    • ベストアンサー
    • Java
  • サーブレットでダウンロードしたJARを使う

    JSPのサーブレット内で、ダウンロードしてきた「iText」というJARファイルの中のクラスを使いたいのですが、エラーが出て困っています。 ソースコードで説明させていただくと、 package selfinfo; import java.io.*; import com.lowagie.text.Document;//iTextのクラス import com.lowagie.text.pdf.PdfWriter;//iTextのクラス import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class test extends javax.servlet.http.HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Document doc = new Document();//iTextが提供するクラ                      //スここでエラーがでる } } 開発環境はTomcatとEclipseを連動させてたものを使っています。 またエラーの種類は、Eclipseのエディタ上ではエラーは出ないのですが、Tomcat上で動作させ、jspからサーブレットにうつったときに、 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました 原因 java.lang.NoClassDefFoundError: com/lowagie/text/Documentselfinfo.test.doPost(test.java:37) というようなエラーが出ます。 またEclipseでこのコードを最も基本的なJAVAアプリケーションに落とし込んだ場合は、正常に動作しました。 長くなりましたが、お返事お待ちしております。

    • ベストアンサー
    • Java
  • JSPとサーブレットでのJARの使い方

    現在,jspやサーブレットにダウンロードしてきたjarの中のクラスを使おうとするとエラーをはいてしまいます。自分的にはエラーの原因はなんかしらの設定かソースがおかしいのではないかと考えております。なので自分がやった設定の手順とソースを説明させていただき、そこでおかしいと思った点を指摘していただきたいと思い投稿させてもらいました。 開発環境はEclipseとTomcatを合したものなのですが、 まずダウンロードしてきたJARをデスクトップに置きました。 次にEclipseでjspのプロジェクトを作成し、 プロジェクトの設定で、外部JARの追加を選択しデスクトップのJARを追加しました。 次にエラーが出るまでのソースを説明させていただくと、 まずJSPの方は <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <%@ page import="java.util.Date" %> <%@ page import="com.lowagie.text.Document" %>//これがダウンロードしてきたjarのクラス この様に書いたところEclipseのエディタ上ではエラーは出ないのですが、 デバックすると、 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: というエラーが出てしまいます。なお4行目をコメントアウトすると正常に動作します。 次にサーブレットの方は import java.io.*; import com.lowagie.text.Document;//こっちはこのimport文ではエラーが出ない import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class selfreport_Pdf extends javax.servlet.http.HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Document doc = new Document();//ここでエラーがでる こちらもEclipseのエディタ上ではエラーは出ないのですが、デバックして jspからサーブレットにsubmit(?)をすると 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました 原因 java.lang.NoClassDefFoundError: com/lowagie/text/Document selfinfo.selfreport_Pdf.doGet(selfreport_Pdf.java:29) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) この様なエラーが出ます。なおこちらはDcoment doc = enw Docment() の処をコメントアウトすると、正常に動作します。またこのプログラムを 最も基本的なjavaアプリケーションに落とし込んで実行すると、正常に動作します。 また自分はjsp初心者なので、何か書き損じている点があるかもしれません。 もしそのような点があった場合はお手数ですが書いていただけると、後で補足させていただきます。 お返事おまちしております。

    • ベストアンサー
    • Java
  • ダウンロードしたjarをimportしたい

    Eclipseでダウンロードしたjarファイルをimportしたいのですが、エラーをはいて困っています。 ソースでいうと 一行目の import com.lowagie.text.*; の時点で「インポートされたcom.lowagieはみつかりません」とでてしまいます。 環境変数の「CLASSPATH」の内容は . ;C:\Program Files\Java\jre6\lib\ext\QTJava.zip ;C:Tomcat 6.0\webapps\userclass\iTextAsian.jar ;C:Tomcat 6.0\webapps\userclass\iText-2.1.7.jar と下の2行を追加しました。 またjarを解凍して「com\lowagie\text」があるのは確認しています。 どこに原因があるのでしょう?お返事おまちしております。

    • ベストアンサー
    • Java
  • コンパイルエラー

    過去ログも参考にしたのですが、解決しませんでしたので、よろしくお願いします!! コンパイルすると、下のエラーが出てしまいます。 どこかへのクラスパスが足りないのかな?とは思うのですが、一体どこへ?(T△T) パッケージ com.sun.odi.tree は存在しません。 import com.sun.xml.tree.*; --code-- import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import org.w3c.dom.*; import com.sun.xml.tree.*; -------- [Win2k,tomcat4.0.6,J2sdk1.4.1]です。

  • javaservletの質問

    package test; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet(urlPatterns={"/test/Test2"}) public class Test2 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); // セッションを取得(新しいセッションを作成しないようにする) if (session != null) { response.getWriter().write("yes, World!"); // クライアントにテキストを出力 } else { response.getWriter().write("no, World!"); // クライアントにテキストを出力 } } }sessionがある場合にはyesを、無い場合にはnoを出力したいのですが必ずyesになってしまいます。 HttpSession session = request.getSession(false); でsessionがない場合には作成しないようにしているはずなのになぜでしょうか

  • サーブレット-エラー(404)

    書籍にあるサンプルを自分のEclipse3.5の環境にて実行させているのですが、書籍の通りに行ってはいるのですが、表題のようなエラー画面になってしまい悩んでおります。以下の記述をしているので何か間違いがありましたらご指摘をよろしくお願い致します。 ※他に類似の質問がありましたが、理解に苦しみ解決できませんでした。 ■パッケージエクスプローラー TEST LWEB-INF/src   Lcom.gokui   |  LSample026.java   Lwork   L参照ライブラリー   |  Lservlet-api.jar   |  Ljasper.jar   |  Ljsp-api.jar   |  Lel-api.jar   |  Lannotations-api.jar   Lbin   Lsrc   LWEB-INF   |  Llib   |  Lweb.xml   Lindex.html ■web.xmlの記述 <web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  version="2.5">     <servlet>          <servlet-name>Sample026</servlet-name>          <servlet-class>com.gokui.Sample026</servlet-class>          <load-on-startup>1</load-on-startup>     </servlet>     <servlet-mapping>          <servlet-name>Sample026</servlet-name>          <url-pattern>/Sample026</url-pattern>     </servlet-mapping>     <welcome-file-list>          <welcome-file>/index.html</welcome-file>          </welcome-file-list> </web-app> ■index.htmlの記述 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <title>Sample026</title> </head> <body> <form method="POST" action="./com.gokui/Sample026"> お名前: <input type="text" name="person" size="20"> <input type="submit" value="OK" > </form> </body> </html> ■Sample026.javaの記述 package com.gokui; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Sample026 extends HttpServlet {     private static final long serialVersionUID = 1L;     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {          //エンコード指定          request.setCharacterEncoding("JISAutoDetect");          //パラメータ取得          String person = request.getParameter("person");          //出力          response.setContentType("text/html;charset=Shift_JIS");          PrintWriter out = response.getWriter();          out.println("<html><head><title>サンプル026</title></head><body>");          out.println(person + "さん、ようこそ!");          out.println("</body></html>");          out.close();     } } 未熟の為、分からぬことばかりなのですが何卒宜しくお願い致します。

    • ベストアンサー
    • Java
  • Tomcat6.0 日本語が?に文字化け

    HelloWorld!!はろぅわーるど!! と書いてコンパイルすると、IEの画面で HelloWorld!!????????? と表示されます。 日本語というよりは2バイト文字が文字化けしているのかなと思います。 何が足りないのでしょうか。 どなたかよろしくお願いします。 全文はこんな感じです。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { PrintWriter out = response.getWriter(); out.println("<html>"); out.println("HelloWorld!!はろぅわーるど!!"); out.println("</html>"); out.close(); } }

  • コンパイルエラー

    前の『Server Hangup』の質問とは別にこちらもお願いします。ちなみにあれは家のパソコンです。今回は会社のパソコンなんですが、こちらは同じようにTomcatをインストールしてhttp://localhost:8080/にアクセスするとちゃんと画面が表示されます。しかし、HelloServlet.javaがコンパイルできないのです。 これも本を読みながら同じようにやっているのですが・・・。 一体何が原因なのでしょうか? 環境はOSがWindows2000、j2sdk1.4.1、jakarta-tomcat-4.0.3-LE-jdk14です。 ファイルのあるディレクトリに移動して javac -classpath=%CATALINA_HOME%\common\lib\servlet.jar;%CLASSPATH% HelloServlet.java と入力すると以下のようなエラーになります。 HelloServlet.java:5: パッケージ javax.servlet は存在しません。 import javax.servlet.ServletException; ^ HelloServlet.java:6: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServlet; ^ HelloServlet.java:7: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletRequest; ^ HelloServlet.java:8: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.HttpServletResponse; ^ HelloServlet.java:14: シンボルを解決できません。 シンボル: クラス HttpServlet 場所 : HelloServlet の クラス public class HelloServlet extends HttpServlet {   … エラー 8 個 質問内容は検索したのですが、同じようなのは、コードの書き間違いだったようで 回答は得られませんでした。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • Strutsのfilter.jarを使用したときの文字化けについて

    StrutsによるWebアプリケーションスーパーサンプル(ソフトバンククリエィティブ)の本の中で文字化けを解消するためにfilter.jarというものを使用しています。 filter.jarの中EncodingFileter.javaの内容は以下のとおりです。 ここから-----------------------------------------------------/* /* * Created on 2004/06/15 * EncodingFileter.java */ package filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * EncodingFileter.java * Copyright 2004 A.Takayasu * */ public class EncodingFileter implements Filter{ public void destroy() { } public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws IOException, ServletException { request.setCharacterEncoding("Windows-31J"); chain.doFilter(request,response); } public void init(FilterConfig config) throws ServletException { } } ここまで--------------------------------------------------- あと、web.xmlの中で以下のような記述があります。 ここから-------------------------------------------- <!-- エンコーディングフィルタの設定 --> <filter> <filter-name>Encoding</filter-name> <filter-class>filter.EncodingFileter</filter-class> </filter> <filter-mapping> <filter-name>Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ここまで--------------------------------------------------- Windowsからのリクエストの場合は、Windows-31Jの設定でいいと思うのですが、それでも文字化けが起こります。 試しに、Windows-31Jの部分をShift_JISに変更してコンパイルして jarファイルを作成してjarファイルを差し替えてみたのですが、 文字化けしてしまいます。jarファイルの中身は確かにShift_JISに 変わっているのを確認しています。 なにかほかに設定するところがあるのでしょうか? 原因がわからなくて困っています。 ちなみにTomcatのバージョンは、jakarta-tomcat-4.1.29で strutsは1.1です。 どうかご教授よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう