function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
thsrthsr 

○○  PDFに出力際( renderAs="pdf")、<td></td>の内容を自動改行させる方法はあるか?  ○○

PDFに出力際(renderAs="pdf")、<td></td>の内容を自動改行させる方法はあるか?

現状は長文の場合、まっすぐ伸びるのです。

 

ご教授いただけたら幸いです。

よろしくお願いいたします。

 

P.S. pageに出力時は大丈夫ですが、PDFに出力するとはみ出る。。。

Message Edited by tjl on 03-31-2010 12:02 AM
Message Edited by tjl on 03-31-2010 12:03 AM
Best Answer chosen by Admin (Salesforce Developers) 
LovelyWankoLovelyWanko

確かにWバイトの文字はPDFにするとHTMLの幅の指定がきかないようです。

 

「改行コード」もしくは「<br />」タグで折り返しができるようです。

 

<apex:page renderAs="PDF"> <head> <style> body { font-family: Arial Unicode MS; } </style> </head> <body> <!-- Begin Default Content REMOVE THIS --> <h4>表1:折り返らない</h4> <table border="1"> <tr> <td width="200">あああああああああああああああ</td> </tr> </table> <!-- End Default Content REMOVE THIS --> <br /> <h4>表2:折り返る</h4> <table border="1"> <tr> <td width="200">ああああああ<br />ああああ<br />あああああ</td> </tr> </table> </body> </apex:page>

 

表1は200pxを指定しているのですが伸びています。

表2は200px以内に文字の中に改行タグ(<br />)があるので200pxが有効になっていると

思われます。

 

なので回避方法としてはコントローラ側で適当な幅になったら「改行コード」もしくは「<br />」タグを
入れるというのが1つの回避方法かもしれません。

 

以下コードは指定した文字数で改行コードを入れてくれる関数です。

 

// 引数1 value = 改行を入れたい文字列 // 引数2 posLength = 何文字目で改行コード(折り返し)を入れるかの文字数 // 戻り値 指定した文字数で改行コード(折り返し)がある文字列 private String kaigyo(String value, Integer posLength ){ if(value == null || value.length() <= posLength) return value; String rtnValue = value.substring(0, posLength ) + '\n'; for(Integer i = posLength; i < value.length(); i++){ if(Math.mod(i, posLength ) == 0){ if(value.length() > i + posLength){ rtnValue += value.substring(i, i + posLength ) + '\n'; }else{ rtnValue += value.substring(i,value.length()); } kaigyoCount[col]++; } } return rtnValue; }

 

pxを考慮してフォントサイズが決まっていれば100pxであれば10文字は入るなど計算ができると

思うのでその文字数になったら改行するなどのロジックをコントローラで実装するのが1つ回避方法と

思われます。

Message Edited by LovelyWanko on 03-31-2010 11:31 PM

All Answers

LovelyWankoLovelyWanko

確かにWバイトの文字はPDFにするとHTMLの幅の指定がきかないようです。

 

「改行コード」もしくは「<br />」タグで折り返しができるようです。

 

<apex:page renderAs="PDF"> <head> <style> body { font-family: Arial Unicode MS; } </style> </head> <body> <!-- Begin Default Content REMOVE THIS --> <h4>表1:折り返らない</h4> <table border="1"> <tr> <td width="200">あああああああああああああああ</td> </tr> </table> <!-- End Default Content REMOVE THIS --> <br /> <h4>表2:折り返る</h4> <table border="1"> <tr> <td width="200">ああああああ<br />ああああ<br />あああああ</td> </tr> </table> </body> </apex:page>

 

表1は200pxを指定しているのですが伸びています。

表2は200px以内に文字の中に改行タグ(<br />)があるので200pxが有効になっていると

思われます。

 

なので回避方法としてはコントローラ側で適当な幅になったら「改行コード」もしくは「<br />」タグを
入れるというのが1つの回避方法かもしれません。

 

以下コードは指定した文字数で改行コードを入れてくれる関数です。

 

// 引数1 value = 改行を入れたい文字列 // 引数2 posLength = 何文字目で改行コード(折り返し)を入れるかの文字数 // 戻り値 指定した文字数で改行コード(折り返し)がある文字列 private String kaigyo(String value, Integer posLength ){ if(value == null || value.length() <= posLength) return value; String rtnValue = value.substring(0, posLength ) + '\n'; for(Integer i = posLength; i < value.length(); i++){ if(Math.mod(i, posLength ) == 0){ if(value.length() > i + posLength){ rtnValue += value.substring(i, i + posLength ) + '\n'; }else{ rtnValue += value.substring(i,value.length()); } kaigyoCount[col]++; } } return rtnValue; }

 

pxを考慮してフォントサイズが決まっていれば100pxであれば10文字は入るなど計算ができると

思うのでその文字数になったら改行するなどのロジックをコントローラで実装するのが1つ回避方法と

思われます。

Message Edited by LovelyWanko on 03-31-2010 11:31 PM
This was selected as the best answer
thsrthsr

返事が大変遅くなって申し訳ございません。

 

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

 

とても参考になりました。

 

またよろしくお願いします。:smileywink: