Как ограничить отчет RDLC для одной страницы в PDF? - PullRequest
28 голосов
/ 09 января 2009

У меня есть отчет RDLC, и я отображаю его в элементе управления Report Viewer в моем приложении переднего плана. Я могу просматривать отчет отлично.

Но проблема возникает, когда я пытаюсь экспортировать отчет в PDF (используя встроенную опцию).

Я печатаю отчет на 3 страницах, тогда как мой клиент хочет, чтобы он был на одной странице. Я не могу понять причину этого, так как в моем средстве просмотра отчетов я вижу только одну страницу, но в PDF есть 3 страницы.

Можно ли с этим что-то сделать, чтобы я мог контролировать размер отчета?

Ответы [ 4 ]

71 голосов
/ 26 июня 2009

Ответ очень похож на то, что сказал Дуган, но это не всегда только поля. Это довольно просто:

Когда вы редактируете файл rdlc в режиме разработки, сначала нажмите на пустую часть области BODY вашего дизайна. Нажмите F4, чтобы увидеть вкладку свойств. Здесь вы увидите свойство «Размер». Это может быть расширен для ширины и высоты. Ширина, которую вы видите здесь, представляет собой ширину, которая требуется для тела вашего отчета в качестве области для печати. Даже если у вас есть пробелы по всему, страница знает, что нужно сохранить ее как область для печати. Это в некотором смысле резервирует пространство. Что касается высоты, система обычно знает, что она может увеличиваться или уменьшаться по мере необходимости, если вы не указали иное в своих элементах управления. Таким образом, ширина - это то, что, как правило, будет играть наиболее важную роль.

Затем щелкните пустую область отчета (за пределами верхнего колонтитула, основного текста и нижнего колонтитула; в основном, серую область вокруг дизайна), затем нажмите F4, чтобы просмотреть панель свойств. Под категорией свойств «Макет» вы увидите 3 различных варианта: InteractiveSize, Поля, Размер страницы. Каждый из этих атрибутов размера может быть расширен для отображения ширины и высоты. Атрибут Margins можно расширить для левого / правого / верхнего / нижнего.

По сути, экспорт в pdf работает вне PageSize (хотя я обычно стараюсь, чтобы Interactive и Размер страницы были одинаковыми). Когда файл PDF отображается с помощью встроенной функции экспорта ReportViewer, ширина и высота каждой «страницы» в PDF-файле будет определяться шириной и высотой в атрибуте PageSize отчета (вы можете переопределить это, если использовали свой собственный пользовательский код для рендеринга PDF). Что касается полей, они указывают, сколько места ДОЛЖНО быть оставлено пустым и недоступным для печати между областью печати, зарезервированной для вашего отчета, и краем страницы.

Другими словами: Ширина тела вашего отчета, плюс левое поле отчета, плюс правое поле отчета, ДОЛЖНЫ быть меньше или равны ширине страницы PageSize отчета!

Так что ... если ваши поля слишком широки, или если тело вашего отчета слишком широкое, или если ширина PageSize слишком узкая, результат рендеринга должен быть разбит на несколько страниц, чтобы соответствовать!

Например: если тело моего отчета имеет ширину 7,75 дюйма, мое левое поле равно 0,5 дюйма, мое правое поле равно 0,5 дюйма, а ширина, указанная в PageSize, равна 8,5 дюйма, мой отчет всегда будет использовать 2 страницы для каждого 1 страница данных. Ширина тела 7,75 дюйма плюс 0,5 дюйма + 0,5 дюйма для полей в сумме составляют 8,75 дюйма, что больше, чем 8,5 дюйма, доступного на моей странице. Таким образом, первые 7,5 дюйма (или около того) каждой страницы моего отчета Тело будет показано на первой странице, а остальные будут разделены на следующую страницу. Это не будет сделано в средстве просмотра отчетов, так как оно позволяет увеличить размер отчета за пределы размера страницы, просто добавив полосу прокрутки, но это будет досадно заметно при экспорте в PDF. Чтобы привести пример отчета на 1 странице, я могу либо попытаться уменьшить размер моего отчета до 7,5 "или менее, либо уменьшить левую и правую поля в целом на 0,25" или более (например, установите их на 0,3 "для полного уменьшения на 0,4"), или я могу увеличить PageSize до чего-то большего, чем 8,75 ". Примечание: Acrobat Reader довольно умный и знает о различных размерах бумаги. Поэтому, хотя произвольные размеры страницы будут работать, обычно лучше использовать реальные размеры страниц. Таким образом, в моем последнем примере я бы предпочел установить для PageSize значение Width = 11 "и Height = 8.5", что является реальным размером букв в альбомной ориентации! Adobe обычно понимает это и печатает правильно. Также обратите внимание: на некоторых принтерах, особенно старых, возникают проблемы с печатью с полями менее 0,3 ". Если вы хотите быть удобными для своих пользователей, лучше всего держать поля достаточно большими для этих старых принтеров;)

Надеюсь, это поможет.

6 голосов
/ 20 августа 2009

Всегда поддерживайте ширину тела: 7,5 или менее

влево, ширина поля справа меньше 0,5 Сначала установите ширину поля -> перейти в главное меню Отчеты-> Свойства отчета-> Макет-> изменить левое поле и правое поле

Общая ширина страницы: 8,5

Рамана

3 голосов
/ 13 октября 2011

В дополнение к просмотру вашей ширины, я обнаружил другие несвязанные вещи, которые могут вызвать дополнительную пустую страницу в PDF.

Если у tablix есть какое-либо поле с переносом слов, это может быть причиной. Возможно, вы захотите уменьшить шрифт, если у вас длинные данные. Сделайте свойство размера шрифта примерно таким:

  =iif(len(Fields!RepGroupName.Value) > 25, "6pt","8pt")

Еще одна вещь, которую вам, возможно, придется сделать. И это помогло мне, когда у меня не было видимой причины для дополнительной страницы. На странице свойств отчета установите: ConsumeContainerWhitespace = true

Еще одна вещь, за которой нужно следить. Размер тела может увеличиваться без вашего ведома при внесении изменений в макет. Возможно, вам придется снова сбить его с ног.

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

2 голосов
/ 19 марта 2009

Если кто-то еще столкнется с этой проблемой и окажется здесь, это, скорее всего, проблема с вашей наценкой. Если поля установлены неправильно, вы часто получаете «лишние» страницы, которые появляются при попытке печати, тогда как при просмотре документа все в порядке.

...