プロが教える店舗&オフィスのセキュリティ対策術

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);
}

}

A 回答 (1件)

日本語でエラーが起きているのですか?


パッと見た感じ、パッケージ構造が変わりフルクラス名に変更が必要になったということだと思いますが。
移行対象のJavaアプリがClassNotFoundをはいているんじゃないですか?

1.配布されているJarのパッケージ構造を変えるのは悪手です。あなたがパッケージの構造を管理しないといけなくなります。
2.1より、あなたが移行するJavaのプログラムの方でimport文を修正しましょう。
3.移行するJavaのプログラムの修正方法がわからないなら、手を出すべきではありません。

staticを使用したServletなんて、久々に見ました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!