プロが教えるわが家の防犯対策術!

こんにちわ。
お世話になっております。

WebアプリケーションにおいてiTextを利用したPDFの作成を行っています。
今回どうしても上手くいかない所があり質問させて頂きます。

■簡単な処理の流れを説明します

(1)PdfPTableを使い、テーブルを作成
(2)Phraseを作成
(3)それをPdfPCellに代入
(4)PdfPCellにpaddingを設定し、セル内の任意の文字数で改行するように調整する

ここで問題となっているのが、(2)で作成した文字が自動改行されてしまうということです。
具体的に説明します。以下のソースを参照下さい。

-------------------------------------------------------------------
Document document = new Document(PageSize.A4, 15, 13, 0, 0);

PdfPTable tbl_ef2 = new PdfPTable(9);
int widthF2[] = { 5, 12, 5, 16, 14, 18, 10, 8, 12 };
tbl_ef2.setWidths(widthF);
tbl_ef2.setWidthPercentage(100);

PdfPCell cell2 = new PdfPCell(new Phrase("あいう1-2000");
  cell2.setHorizontalAlignment(Element.ALIGN_LEFT);
  cell2.setVerticalAlignment(Element.ALIGN_TOP);
cell2.setFixedHeight(24f);
◎cell2.setPaddingTop(0);
◎cell2.setPaddingBottom(0f);
◎cell2.setPaddingLeft(11f);
◎cell2.setPaddingRight(10f);
tbl_ef.addCell(cell2);

(以下省略)

document .add(tbl_ef);

-------------------------------------------------------------------


◎でpaddingを設定し、ちょうど6文字で改行するようにセル内を調整しています。
しかし、実際には
⇒(間違い):「あいう<改行>
        1-2000」となります。
⇒(なってほしい姿):「あいう1-2<改行>
             000」

いま分かっている範囲では、数字が入る文字がきて、それが前の行に入らないと
自動で改行されているようです。

なにか改行の設定を行うような機能はあるのでしょうか?
また、上手く文字列を6文字ずつで改行させる方法はないでしょうか?

よろしくお願いします。

A 回答 (3件)

いえ、ですから、折り返して欲しい箇所に改行コードを入れてみては?と申しているのですが…


あいう1-2000

あいう(折り返し)
1-2000
ってなってしまうなら、折り返しを入れたい箇所に改行コードを入れて
あいう1-2(改行コード)000
にすれば、表示は
あいう1-2(改行コード)
000
になりませんか?

厳密には改行と折り返しなので、違いますが、
見た目は同じになるはずだと思います。
(表示するデータ全てに改行を入れるのは面倒ですが。)
    • good
    • 1
この回答へのお礼

最小の文字単位chunkを使用し、その中で任意の折り返し位置を
指定できるitextで用意されてるインターフェイスisSplitCharacterを
オーバーライドする形で初期で設定されている折り返しの設定を
無効化することができました。

アドバイスいただきましてありがとうございました。

お礼日時:2011/11/08 11:55

>phaseにいれてしまうと自動改行されてしまうとおもうのですが


ホント?
あいう1-2<改行>000
を入れると
あいう1-2<改行>
<改行>
000
になるってこと?
それは考えられないけど、試してみました?

で、「自動改行」と仰ってますが、「折り返し」で、実際には改行が入ってるわけではありません。

この回答への補足

説明が悪かったです。
すみません。
仰る通りです。自動改行ではなく折り返しです。

実際のデータは「あいう1-2000」
で出力結果が「あいう (折り返し)
         1-2000」となります。
        ↓
これを「あいう1-2 (折り返し)
    000」
としたいわけです。

便宜上<改行>と書いただけで改行コード等は入っていません。
よろしくお願いします。

補足日時:2011/10/21 15:59
    • good
    • 0

単語の途中で改行できないからです。


予め文字数をカウントして、自前で改行してはどうでしょう。

この回答への補足

回答ありがとうございます。

やはり[文字+数字]=[単語]と認識してしまっているのでしょうか。
文字数をカウントして改行コードを埋め込んだとしても
phaseにいれてしまうと自動改行されてしまうとおもうのですが
何か方法があるのでしょうか?

補足日時:2011/10/21 14:55
    • good
    • 0

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


このQ&Aを見た人がよく見るQ&A