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 разных фронтов:
- Hot Fix
- Принтер по умолчанию
- Создание формы
Оперативноеисправление: вам нужно скачать 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 - измените размер шрифта - у нас была "и / или" средняя линия, и мы изменили ее на "и / или"
Мы пошли с оправданным выравниванием, так как оно было близко к полной строке и не выглядело иначе, чем оригинал.
Множество странных обходных путей, которые исправили это. Для меня это указывает на сбой обновления системы в отчете.
Надеюсь, что то, что я нашел, помогает другим.