12

Crystal Reports Cutting Off Text in PDFに関するこの投稿を見つけましたが、問題は解決しませんでした。

テキスト オブジェクト内に (行間を制御するための) フィールドを含む Crystal Report があり、「拡張可能」が選択されています。Crystal Report を PDF にエクスポートすると、テキストが途切れる場合があります。

ここに画像の説明を入力

この例ではテキストの右側が途切れていますが、テキストが何行にもわたっている場合、最終行の下部が部分的に途切れる場合があります。

Visual Studio 2008 にバンドルされている Crystal Reports を使用しています。テキスト領域は「拡大可能」にチェックが入っており、フォントは Helvetica LT Condensed、太字 14 に設定され、行間隔は通常の 0.75 倍に設定されています。

どうすればこれを修正できますか?

4

10 に答える 10

7

私もこれに遭遇しました.Crystalは、テキストボックスの境界線がどこにあるかについて少し混乱しているようです. テキスト ボックスに小さな右インデントを追加することをお勧めします (テキスト ボックスを右クリックし、[オブジェクトの書式設定] を選択し、[段落] タブを選択し、右のテキスト ボックスに小さな数字 (おそらく .2 程度) を入力します。この右マージンに役立つはずです。

下切りに関しては、追加できるマージンはありません。データベースからのテキストなので、テキストの最後に改行を追加できますか? または、式フィールドを試して改行を追加することもできます。

{table_name.field_name} + chr(13) + chr(10)
于 2010-03-05T22:46:07.980 に答える
2
  • テキストフィールドを右クリックします
  • [共通]タブを選択します
  • 水平方向の配置セクションで、「ジャスティファイド」に変更しました。

これにより、Can Growを使用するときにテキストが適切にスパンされ、途中で途切れないように調整されました。

于 2010-08-05T21:40:05.063 に答える
2

私は問題を発見したと思います。境界サブレポートの幅が、フィールド オブジェクトの幅よりも小さかった。幅を調整すると、右側で発生する切り捨てが修正されました。

余談ですが、下部のテキストが切り捨てられているのは、行間を調整しすぎた結果のようです。行間隔を元のテキスト ポイント サイズの倍数として設定し、小さすぎると、行の下部が切り捨てられます。これを「正確」に変更し、特定のポイント サイズ (たとえば、16 ポイントのテキストに対して 18 ポイントの行間隔) を入力すると、問題が解決したようです。行間隔が小さすぎると、Crystal がテキストの下部を隠しているように見えます。

于 2010-03-12T20:29:38.143 に答える
0

私はこれを試しましたが、この問題は解決しました。

次のことを試してください:

テキストオブジェクト>右クリック>テキストの書式設定>[境界線]タブ

線のスタイルを変更:右/左/上/下を単一として、色を白に変更します。

于 2012-11-02T12:46:36.923 に答える
0

ストアド プロシージャを更新したときに、この問題が発生しました。レポートに取り込んでいた説明フィールドを、要求された変更に合わせてインラインで VARCHAR(100) から VARCHAR(150) に変更しました。プレビュー モードの Crystal レポートには、100 文字という古い制限が保存されており、ラベルが切り詰められていました。これは、データベースを再度検証したときに修正されました。

データベースタブ -> データベースの検証

于 2013-11-05T14:01:34.643 に答える
0

すべての方法を試してもうまくいかない場合は、次の方法を試してください。

     Local StringVar inString := 'Your text string here.......';

     Local NumberVar strLen := Length (inString);
     Local StringVar result := "";
     Local NumberVar maxLen := 45;    // adjust the length of text per line
     Local NumberVar idx := 0;
     Local NumberVar proceed := 0;

     While strLen > maxLen Do
     (
      proceed := 1;
      idx := maxLen;
      While (mid(inString,idx,1) <> " "  and idx > 1) Do
      (
       idx := idx -1;
       );
      if (idx = 1) then 
             result := result + mid(inString,1,maxlen) + chr(10)
      else
         (
             result := result + mid(inString, 1, idx-1)+ chr(10);
             strLen := strLen-idx;
             inString := mid(inString, idx+1, strLen)
         )
      );

     if proceed = 1 then
      (
        result := result + inString
       )
      else
       (
       result := inString
     );
  result
于 2015-12-11T16:53:48.537 に答える