- PR -

iText、VisualStudio2005でエラー

1
投稿者投稿内容
achi
会議室デビュー日: 2006/01/08
投稿数: 17
投稿日時: 2006-04-29 02:27
お世話になります。

環境:OS WindowsXP SP2、VisualStudio2005(2003と共存)

.NET TIPS Webフォームから動的にPDF文書を作成するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/309aspgenpdf1/aspgenpdf1.html
を参考にPC(A)のVS2003環境で作成、試験済みのロジックをPC(B)のVS2005環境(VS2003共存)に
ほぼそのままコピーしたのですが、以下のエラーが出ております。

com.lowagie.text.DocumentException は
ユーザー コードによってハンドルされませんでした。
Message="Font 'HeiseiMin-W3' with 'UniJIS-UCS2-H' is not recognized."

VS2005で使用する以下の手順で作業を行いました。
1.BINフォルダを作成
  ソリューションエクスプローラからWebサイトに対し
  ASP.NETフォルダの作成でBINフォルダを追加しました。
2.BINフォルダに以下のDLLをコピー
  (ソリューションエクスプローラで参照追加)
  Gnu.Classpath.Core.dll
  Gnu.Classpath.JAXP.dll
  iTextAsian.dll
  iTextAspEx.dll
  iTextdotNET.dll
  iTextHYPH.dll
3.vjslibを参照追加

ロジックは先頭に
Imports System.Data.SqlClient
Imports System.Data

Imports System
Imports com.lowagie.text
Imports com.lowagie.text.Font
Imports com.lowagie.text.pdf
Imports java.io
Imports System.IO
としています。

エラー付近のコードは
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "attachment; filename=test.pdf")

Dim doc As New Document(PageSize.A4, 35, 0, 0, 0)
Dim pw As PdfWriter = PdfWriter.getInstance(doc, Response.OutputStream)
doc.open()

Dim strSetting As String = "C:\\test\\PDF\\Template.pdf"
Dim pr As New PdfReader(strSetting)
Dim pcb As PdfContentByte = pw.getDirectContent()
Dim font As New Font(BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED), 12, font.NORMAL)
で、fontの定義で今回のエラーとなります。


気になるのは、TIPSの中にある
----------------------------------------------------
 なお、日本語を利用する場合には、BaseFontクラスのcreateFontメソッドで日本語フォント(ここでは“HeiseiMin-W3”)とエンコード方法(ここでは“UniJIS-UCS2-H”)を指定して生成する必要がある。iText.NET標準では、iText.NETとともにインストールされた“KozMinPro-Regular”“HeiseiMin-W3”“HeiseiKakuGo-W5”などのフォントを利用することができる。また、“UniJIS-UCS2-H”“UniJIS-UCS2-V”“UniJIS-UCS2-HW-H”“UniJIS-UCS2-HW-V”などのエンコーディングを利用することができる。
----------------------------------------------------
ここで、”iText.NETとともにインストールされた”とありますが
VS2003の時もそうだったんですが、zipを解凍してDLLを参照追加しただけで
特にインストールといったことはなかったかと思うのですが。
PC(A)のVS2003環境にはAcrobatReaderがインストールされていたので
それが原因かと思い、PC(B)のVS2005環境にも同じようにインストールしましたが
エラーは解消されませんでした。


大変お手数ですが、何かご存知の方がおられましたら
ご教授のほど、どうぞよろしくお願い致します。

以上
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2006-04-29 11:17
お世話になります。

引用:

achiさんの書き込み (2006-04-29 02:27) より:
VS2003の時もそうだったんですが、zipを解凍してDLLを参照追加しただけで
特にインストールといったことはなかったかと思うのですが。


私も先ほど、
http://prdownloads.sourceforge.net/itextdotnet/iTextdotNET-dll-1.4-1.zip?download
から、ダウンロードして Zip を解凍しましたが、
フォントのインストールらしきものは行われませんでした。
*demo* のものも落としてきて、msi を実行しましたが同じでした。

BaseFont.createFont
Font Class
を眺めていましたが、com.lowagie.text.DocumentException が Throw される原因の
一つとして、やはり フォントの指定が正しくないことが書かれていました。
そこで、実験的に createFont の部分を以下のものに変更してみたところ、
例外が Throw されることなく実行できました。
New Font(Font.HELVETICA, 18, Font.BOLDITALIC, System.Drawing.Color.Black)

やはり、フォントの問題のようです...。
_________________
なおこ(・∀・) @ わんくま同盟
主婦と.NETと犬の記録
主婦と.NETと犬のぶろぐ
achi
会議室デビュー日: 2006/01/08
投稿数: 17
投稿日時: 2006-04-30 02:04
なおこ(・∀・)様、お世話になります。

ご確認ありがとうございます。
もう少し確認して見たいと思います。

どうもありがとうございました。
aries8jp
会議室デビュー日: 2008/08/03
投稿数: 1
投稿日時: 2008-08-03 20:37
もう遅いかもしれませんが、、、
iTextAsian.dllにバグがあるようです。
WinCVS(私の場合、ごった煮Verを使いました。)でチェックアウト後、Visual C#でiTextSharpからDLしたiTextAsian.dllのsrcをビルドして、iTextAsian.dllを作成しなおす事で解消されると思います。
R
会議室デビュー日: 2008/08/19
投稿数: 2
投稿日時: 2008-08-19 14:14
aries8jp さん、こんにちは。

私も興味があって iTextSharp を使い始めてみたのですが、

Font 'KozMinPro-Regular' with 'UniJIS-UCS2-H' is not recognized.

とエラーが出てしまいました。

WinCVS ごった煮版が落とせないようで(配布中止?)

http://svn.sourceforge.net/viewvc/itextsharp/trunk/src/extras/iTextAsian/

の GNU tarball からダウンロードしてビルドしてみたのですが、
現象が改善されませんでした(ダウンロードにあるものと同じに見える・・・)

何か他に注意することがあるのでしょうか?
R
会議室デビュー日: 2008/08/19
投稿数: 2
投稿日時: 2008-08-19 17:48
自己レスです。

BaseFont.AddToResourceSearch("iTextAsian-1.0.dll");

に相当する記述が抜けていることが問題でした。
参照設定すればいいのかと思ったら、フォント情報をリソースに
埋め込んでいるようなので、それを明示的にロードしないと
だめだったようです。

ということで、私もうまく動作しました。
alfa
会議室デビュー日: 2006/07/13
投稿数: 1
投稿日時: 2008-10-30 21:20
.NET2.0での解決法が出てないようなので。

System.Reflection.Assembly.LoadFrom(Server.MapPath("~") + "\\Bin\\iTextAsian.dll");

を入れれば出来そうです。
1

スキルアップ/キャリアアップ(JOB@IT)