- PR -

XSL-FOで作成される帳票ファイルの半角文字改行方法

1
投稿者投稿内容
悩むSE
会議室デビュー日: 2006/09/26
投稿数: 9
投稿日時: 2006-09-26 20:16
私は仕事でWebアプリの開発の一環で、帳表出力の担当をしております。
@ITさんで過去の情報をキャッシュでみたりしたのですが、
値が可変であるWebアプリには適用は難しいと思い、質問としてあげます。

症状
指定しているセル幅を超過する長さの半角文字が改行されない。

↓こんな感じです。
|----------|
|abcdefghijklmn ←このようになります。
|おはようござ | ←全角文字は折り返してくれます。
|います。   |
|----------|

状況
・FOPのバージョンは0.20.5を使用している。
・折り返しに該当する値はDBより引き出す項目であるため、
何文字目で改行といった手段が取れない。

どうかご教授のほどよろしくお願いします。

[ メッセージ編集済み 編集者: 悩むSE 編集日時 2006-09-26 20:17 ]

[ メッセージ編集済み 編集者: 悩むSE 編集日時 2006-09-26 20:18 ]

[ メッセージ編集済み 編集者: 悩むSE 編集日時 2006-09-26 20:19 ]
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-09-26 23:49
こんばんは。

同じことで悩んだことがあります。
<fo:block hyphenate="true"> で折り返せましたが、下のようなエラーも出ました。

[ERROR] Couldn't find hyphenation pattern ja
[ERROR] Error building hyphenation tree for language ja

より適切な方法があれば教えていただきたいです。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
悩むSE
会議室デビュー日: 2006/09/26
投稿数: 9
投稿日時: 2006-09-27 10:12
ue様ご回答ありがとうございます。

ue様のご回答を早速試してみましたが、改行を行ってはくれませんでした。

今回の問題に関連する部分を抜粋してみましたので、
更なるアドバイスをいただけると本当に助かります。

何が起因しているか分からないので、問題箇所とその親タグに該当する部分、
あとはレイアウトを取り決めている部分は掲載しました。
読みづらいとは思いますが、よろしくお願いします。
なお、コピー&ペーストをしてためしていただける方は、
申し訳ないことではございますが、下記に掲載するソースは見易さを重視したため、
行頭に挿入しているスペースが全角となっています。
お使いのエディタ機能で置換してご活用いただけると幸いです。

<xsl:stylesheet
 version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:fo="http://www.w3.org/1999/XSL/Format"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
 xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes">
 <fo:layout-master-set>
  <fo:simple-page-master
   master-name="default-page" page-height="11.69in" page-width="8.27in"
   margin-left="0.6in" margin-right="0.6in">
   <fo:region-before extent="0.79in" />
   <fo:region-body margin-top="0.79in" margin-bottom="0.95in" />
   <fo:region-after extent="0.79in" />
  </fo:simple-page-master>
 </fo:layout-master-set>
 <xsl:output
  version="1.0" encoding="UTF-8" indent="no"
  omit-xml-declaration="no" media-type="text/html" />
 <xsl:template match="/">
  <fo:root language="ja" >
   <xsl:copy-of select="$fo:layout-master-set" />
   <fo:page-sequence
    master-reference="default-page" initial-page-number="1" format="1">
    <fo:flow flow-name="xsl-region-body">
     <fo:block background-color="white" font-size="10pt">
      <xsl:for-each select="XXXXXX"> <!-- XXXXXXは実際は業務アプリ内での名前になっています -->
       <fo:table
        table-layout="fixed" border-bottom-color="black" border-bottom-style="outset"
        border-left-color="black" border-left-style="outset" border-right-color="black"
        border-right-style="outset" border-top-color="black" border-top-style="outset"
        font-size="10pt" padding="2" width="100%"
        space-before.optimum="1pt" space-after.optimum="2pt">
        <fo:table-body>
         <!-- 中略 -->
         <fo:table-row
          border-bottom-color="black" border-left-color="black"
          border-right-color="black" border-top-color="black" font-size="10pt">
          <fo:table-cell
           border-bottom-color="black" border-bottom-style="inset" border-left-color="black"
           border-left-style="inset" border-right-color="black" border-right-style="inset"
           border-top-color="black" border-top-style="inset" font-size="10pt"
           height="14px" padding-bottom="2px" padding-left="2px"
           padding-right="2px" padding-top="2px" border-style="solid"
           border-width="1pt" border-color="black" padding-start="2pt"
           padding-end="2pt" padding-before="2pt" padding-after="2pt"
           number-columns-spanned="5" display-align="center" text-align="start">
           <fo:block>
            <xsl:for-each select="ZZZZZZ"> <!-- ZZZZZZは実際は業務アプリ内での名前になっています -->
             <fo:inline font-size="10.0pt" font-family="MS 明朝" font-weight="bold">
              <xsl:apply-templates />
             </fo:inline>
            </xsl:for-each>
           </fo:block>
          </fo:table-cell>
         </fo:table-row>
        </fo:table-body>
       </fo:table>
      </xsl:for-each>
     </fo:block>
    </fo:flow>
   </fo:page-sequence>
  </fo:root>
 </xsl:template>
</xsl:stylesheet>

[ メッセージ編集済み 編集者: 悩むSE 編集日時 2006-09-27 10:30 ]
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-09-27 10:35
wrap-option="wrap"プロパティ適用したらどうなるんだろう。
悩むSE
会議室デビュー日: 2006/09/26
投稿数: 9
投稿日時: 2006-09-27 11:12
かずくん様、ご回答ありがとうございます。
かずくん様のご回答方法を試したところ残念ながらできませんでした。

ue様、かずくん様たいへんすみませんでした。
ue様が打診して下さった方針できちんと改行できることが確認できました。
コチラの導入ミスが原因でした。本当にすみません。

ue様の言っていたエラーメッセージも出力されることなく、
PDF帳票を作成できております。

お二方には本当に感謝の限りです。ありがとうございます。
1

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