8

こんにちは私はhtml2pdfを使用しています、それはword-break:break-all cssをサポートしていませんか?

   <td style="width:30%;word-break:break-all ;">
      testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets
    </td>

出力pdfは、文字列の長さのサイズのように30%を超える幅を取ります

出力pdf:testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets

出力が欲しい:

testtestetstetstetstetstettstets
tetstetstetstetstetstetstetstets

4

10 に答える 10

14

まあ、それは複雑です。テスト文字列が長すぎますが、複数の単語で構成されていません。つまり、中断する単語がないため、単語の中断は機能しません。明らかに、これは単なる例である可能性があります。その場合、html2pdfは相対的な幅とをサポートしていない可能性があるword-breakため、絶対的な幅とを試してみてくださいword-break

そうは言っても、これが機能することがわかっているものです。PHPのワードラップです。したがって、代わりにecho $yourvar;使用することもできますecho wordwrap($yourvar, 75, "\n", true)。これは、1つの長い文字列であっても、常に文字列をカットします。探している幅に一致する文字数を取得するには少し手間がかかりますが、機能します。

<?php
$foo = str_repeat('test',12);
echo wordwrap($foo, 20, '<br />', true);

出力:

testtesttesttesttest
testtesttesttesttest
testtest
于 2012-10-08T12:24:59.103 に答える
7

これを試して;

<td style="width:30%; word-wrap:break-word;">
   testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets
</td>

word-breakそうではありませんword-wrap;

于 2012-10-14T20:04:04.343 に答える
5

長い文字列を境界コンテナ内で一貫して折り返す必要がある場合は、元の文字列のすべての文字の間にゼロ幅スペース文字または)を挿入する&#8203;\xe2\x80\x8bことでこれを実現できるはずです。これは、すべての文字が独自の単語であるかのように折り返す効果がありますが、エンドユーザーにスペースを表示することはありません。これにより、最終製品のテキスト検索やインデックス作成で問題が発生する可能性がありますが、美的観点からタスクを確実に実行する必要があります。

したがって:

testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets

になる

t&#8203;e&#8203;s&#8203;t&#8203;t&#8203;e&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s&#8203;t&#8203;e&#8203;t&#8203;s

(これは次のように表示されます:「ええとええええええええええええええええええええええええ」)

したがって、ラップすると、コンテナの境界に正確にラップされます。これが例としてのフィドルです

文字列をループしてスペースを挿入するPHPスクリプトを作成するだけです。

$string="testtestetstetstetstetstettstetstetstetstetstetstetstetstetstetstets";
$new_string = "";
for($i=0;$i<strlen($string);$i++){
   if ($string[$i]==' ' || $string[$i+1]==' '){ //if it is a space or the next letter is a space, there's no reason to add a break character
      continue;
   }
   $new_string .= $string[$i]."&#8203;";
}
echo $new_string

これは、とは異なりwordwrap()、固定幅以外のフォント(基本的に実際に使用されるフォントの99%)を自動的に調整するため、特に優れたソリューションです。

繰り返しになりますが、PDFを検索可能にする必要がある場合、これは適切なアプローチではありませんが、希望どおりに表示されます。

于 2012-10-11T22:37:26.333 に答える
4

テストでは、単語の区切りは特定の文の単語間でのみ機能するため、単語の区切りは機能しません。だから、あなたは複数の単語の文を使用してから、ワードブレーカーで試すことができます

于 2012-10-12T06:17:56.770 に答える
4

コードでsubstr関数を使用するだけです。この例を挙げます。まず、出力を変数に入れます。

$get_value = "testtestetstetstetstetstettstetstetstet";
$first = substr("$get_value",0,3);
$second = substr("$get_value",4,7);

等々。

于 2012-10-12T07:08:15.597 に答える
3

"\r\n"改行文字の印刷に使用できます。必ず二重引用符で囲んで使用してください。文字列が変数に含まれている場合は、単語数関数を使用してこの文字列を追加する必要があります。PHP_EOLプラットフォームへの依存を回避するために使用することもできます。

于 2012-10-08T12:55:41.147 に答える
2

html2pdfはこのword-break:break-allcssをサポートしていません

参照:http ://www.yaronet.com/en/posts.php?sl =&h = 0&s = 151321#0

于 2012-10-23T12:20:34.750 に答える
0

この方法を使用できます。

<?php
$get_value = "testtestetstetstetstetstettstetstetstet";
$first = substr("$get_value",0,3);
$second = substr("$get_value",4,7);
$third = substr("$get_value",8,11);
?>
于 2012-10-22T07:44:27.667 に答える
0

HTML2PDFとテーブルに関する独自の経験を少し追加したいと思います。

このソリューションを使用して、配達確認(製品のリスト)が記載された表を含むPDFを生成しました。このようなリストには、最大数千の製品(行)が含まれる場合があります。

セルの書式設定と長い文字列で問題が発生しました。最初の問題は、テーブルの幅を100%に設定し、ヘッダー(<th>)列の幅を設定してもテーブルが広くなりすぎることでした(HTML2PDFはサポートされていないため、グローバルに<colgroup>定義できませんでした)-一部の列が表示領域から外れていました。私はそれが機能しているように見えた長い文字列を分解するためにセパレーターとして使用しました。残念ながら、最初と最後の行にそのような長い文字列がある場合、テーブル全体が先頭追加され、空のページが追加されることが判明しました。本当のバガーではありませんが、見栄えもよくありません。最終的な解決策は次のとおりです(幅が表示領域を超える可能性のあるテーブルに適用されます)。wordwrap()<br />

  • テーブルと各行の固定幅をピクセル単位 で設定します
    • A4レターサイズの場合、デフォルトのマージンで合計幅550ピクセルを使用していますが、列間で幅を分散するために少し遊んでおく必要があります
  • 使用中wordwrapの空きスペースまたは&#8203;/\xe2\x80\x8b区切り文字として

表示領域の幅の100%に広げたい小さなテーブルの場合は、で表される幅を使用してもかまいません%

于 2015-08-12T07:21:30.970 に答える
-1

この機能は足を引きずる解決策だと思います。

function String2PDFString($string,$Length)
    {
    $Arry=explode(" ",$string);
    foreach($Arry as $Line)
        {
        if(strlen($Line)>$Length)
            $NewString.=wordwrap ($Line,$Length," ",true);
        else
            $NewString.=" ".$Line;
        }
    return $NewString;
    }
于 2014-11-24T21:00:12.053 に答える