Crystal Reports обрезает текст в PDF

Я нашел этот пост в Crystal Reports, обрезая текст в PDF, но он не решил мою проблему.

У меня есть Crystal Report, который содержит поле в текстовом объекте (для управления межстрочным интервалом) и выбрал "может расти". Когда я экспортирую отчет Crystal Report в PDF, возникают случаи, когда текст обрезается.

В этом примере текст обрезается с правой стороны, но в некоторых случаях, когда текст состоит из множества строк, нижняя часть последней строки будет частично обрезана.

Я использую Crystal Reports, который входит в состав Visual Studio 2008. В текстовой области отмечен флажок "может расти", для шрифта установлено значение Helvetica LT Condensed, полужирный 14, а междустрочный интервал установлен в 0,75 раза больше нормального.

У кого-нибудь есть мысли о том, как я могу это исправить?

10 ответов

Решение

Я думаю, что я обнаружил проблему. Ширина ограничивающего вложенного отчета была меньше ширины объекта поля. Регулировка его ширины исправила усечение, происходящее с правой стороны.

Что касается примечания, то усечение текста снизу, по-видимому, является результатом слишком малой регулировки межстрочного интервала. если вы зададите межстрочный интервал, кратный исходному размеру текста, и сделаете его слишком маленьким, нижняя часть линии будет обрезана. Я изменил это значение на "точное" и ввел определенный размер точки (например, межстрочный интервал 18 пунктов для моего текста 16 пунктов), и это, казалось, решило проблему. Если межстрочный интервал слишком мал, кажется, что Crystal скрывает нижнюю часть текста.

Я также столкнулся с этим - Кристалл, кажется, немного смущен тем, где находятся границы текстового поля. Я предлагаю добавить небольшой правый отступ в текстовое поле (щелкните правой кнопкой мыши на текстовом поле, выберите "Форматировать объект", выберите вкладку "Абзац" и введите небольшие числа (возможно, 0,2 или около того) в текстовое поле "Право". должен помочь с правильным запасом.

Что касается нижнего среза, вы не можете добавить поля. Можете ли вы добавить разрыв строки в конец вашего текста, как это происходит из БД? Или вы можете попробовать поле формулы, чтобы добавить разрыв строки:

{table_name.field_name} + chr(13) + chr(10)
  • Щелкните правой кнопкой мыши на текстовом поле
  • Выберите вкладку "Общие"
  • В разделе "Выравнивание по горизонтали" я изменил его на "Оправданный".

Это позволило откорректировать текст так, чтобы он не обрезался преждевременно при использовании Can Grow.

В одной среде с Crystal Reports нам помогло установить ключ реестра: ForceLargerFonts = 0

Как найти?

Для 64-битной версии MS Windows:
HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \Wow6432Node\SAP BusinessObjects\Suite XI 4.0\Crystal Reports\Export\PDF

Для 32-битной версии MS Windows:
HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ SAP BusinessObjects \ Suite XI 4.0 \ Crystal Reports \ Export \ PDF

См. Также следующее решение по адресу https://apps.support.sap.com/sap/support/knowledge/public/en/0001835763

Я столкнулся с этой проблемой при обновлении хранимой процедуры. Я изменил поле Описание, которое я перетаскивал в отчет, с VARCHAR(100) на VARCHAR(150), встроенный с запрошенным изменением. Отчет Crystal в режиме предварительного просмотра хранил старое ограничение в 100 символов и обрезал метку. Это было исправлено, когда я снова проверил базу данных.

Вкладка базы данных -> Проверка базы данных

Это сложная проблема, которую вы должны атаковать с 3 разных фронтов:

  1. Hot Fix
  2. Принтер по умолчанию
  3. Создание формы

Оперативноеисправление: вам нужно скачать CRRuntime, включающий в себя исправление 20. Это исправление устраняет проблемы усечения при создании PDF. Вы можете найти его по адресу http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_64bit_13_0_20.msi

Принтер по умолчанию: принтер, который вы используете при создании отчета, должен соответствовать принтеру, на котором вы отображаете отчет. На наших серверах не установлено никаких принтеров, кроме Microsoft XPS Document Writer. Обязательно выберите его в качестве принтера по умолчанию при написании отчета.

Создание формы. Когда вы добавляете поле базы данных в свой отчет, не перетаскивайте его из проводника полей на поверхность конструктора. Сначала вставьте текстовый объект в область дизайна. Когда вы разместите и измените размер текстового объекта так, как вам нравится, перетащите поле базы данных на текстовый объект. Вы увидите, как имя элемента базы данных в фигурных скобках появится в текстовом объекте. По какой-то причине поле базы данных будет лучше переноситься, когда оно будет заключено в текстовый объект.

Это заставило меня буквально нервничать на всю ночь !! Для меня сработало следующее: если вы используете отчеты Crystal с набором данных (связанным с набором данных), скорее всего, вы изменили длину поля в базе данных. поэтому, если длина была 10, и вы изменили, например, 20, независимо от того, что вы делаете, отчет читает "Старый" набор данных с полем длиной 10 символов и усекает его до 10 (я не знаю, почему это так что) ... хотите верьте, хотите нет, я просто скопировал запрос из моего "старого" набора данных, создал новый набор данных и ВОЙЛА !!! это работало как шарм ...

Я попробовал это, и это решило эту проблему.

Попробуйте сделать следующее:

Текстовый объект> Правый клик> Формат текста> Вкладка "Граница"

Изменить стиль линии: вправо / влево / сверху / снизу как одиночный и изменить цвет на белый.

Если вы перепробовали все методы и все еще не работали, вы можете попробовать следующее:

     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

Я тоже обнаружил это тоже. Только произошло в представлении HTML. Я сделал несколько вещей, которые для 3 блоков мне нужно было сделать по-разному, и попробовал множество сценариев, чтобы выбрать лучший вариант. - Отформатируйте текст слева направо до выровненного - Возьмитесь за правый край текстового поля и тяните его в галочку от правого поля - Переключите шрифт с Times New Roman на другой (странный) - Экспорт из BI LP как CR RPT и экспортировано из клиента CR 2013 в PDF - измените размер шрифта - у нас была "и / или" средняя линия, и мы изменили ее на "и / или"

Мы пошли с оправданным выравниванием, так как оно было близко к полной строке и не выглядело иначе, чем оригинал.

Множество странных обходных путей, которые исправили это. Для меня это указывает на сбой обновления системы в отчете.

Надеюсь, что то, что я нашел, помогает другим.

Другие вопросы по тегам