Как избавиться от пустых страниц в PDF, экспортированных из SSRS

195

У меня есть двухстраничный отчет по SSRS. Когда я экспортировал его в PDF, он занимал 4 страницы из-за своей ширины, где на 2-й и 4-й страницах отображалось одно из моих полей из таблицы. Я попытался установить размер макета в свойствах отчета как ширина = 18 дюймов и высота = 8,5 дюймов.

Это дало мне всю таблицу на одной странице PDF, но я все еще получаю пустыми 2-ую и 4-ую страницы.

Является ли способ, которым я делаю это неправильно? Как еще я могу избавиться от этих пустых страниц?

Марк Хионс
источник

Ответы:

345

В BIDS или SSDT-BI сделайте следующее:

  1. Нажмите «Отчет»> «Свойства отчета»> «Макет» (вкладка «Параметры страницы» в SSDT-BI).
  2. Запишите значения для ширины страницы , левого поля , правого поля
  3. Закройте и вернитесь к поверхности дизайна
  4. В окне «Свойства» выберите « Тело».
  5. Нажмите на символ +, чтобы развернуть узел Размер
  6. Запишите значение для ширины

Для правильного отображения в PDF Ширина тела + Левое поле + Правое поле должно быть меньше или равно ширине страницы. Когда вы видите, что пустые страницы отображаются, это почти всегда, потому что ширина тела плюс поля больше ширины страницы.

Помните: (Ширина тела + Левое поле + Правое поле) <= (Ширина страницы)

Натан Гриффитс
источник
14
Не работает Ширина моего тела меньше, чем "Ширина отчета - поля". И все же у меня там тонна пустых страниц.
Адольф чеснок
2
@adolfgarlic Я обнаружил, что настройки ширины страницы не всегда работают правильно в свойствах отчета. Вы пытались вручную перетащить ширину отчета в Visual Studio? Это решило эту проблему для меня сегодня, после того, как я долго бился об стену. Стоит также проверить ширину верхнего / нижнего колонтитула, она может быть слишком большой.
Майкл А
15
Я обнаружил, что правило, которое работало здесь, было не (Ширина тела + Левое поле + Правое поле) <= (Ширина страницы), а больше похоже на (Ширина тела + Левое поле + Правое поле) <(Ширина страницы-1 см)
Jafin
3
Также следует обратить внимание на высоту верхнего колонтитула + основной текст + нижний колонтитул + верхний край + нижнее поле <высота страницы, иначе страница будет отображаться на нескольких страницах.
desiguy
4
Когда вы создаете отчет в первый раз, строитель помещает белую область («Тело», которое упоминает Натан) по ширине экрана, чтобы надеть материал. Как правило, эта белая область имеет ширину 17 дюймов на новом экране почтового ящика. Что не является интуитивно очевидным, так это то, что это считается печатаемым объектом, и его необходимо сузить до ширины материала, который вы на него надеваете. Если вы этого не сделаете, вы получите пустые страницы, независимо от того, что все остальные упоминают.
BobRodes
112

Еще одна вещь , чтобы попробовать это установить свойство отчета под названием , ConsumeContainerWhitespaceчтобы True(по умолчанию false). Вот как это было решено для меня.

куколка
источник
2
Да, работал для меня тоже. У меня есть контейнер с табликсом с группами столбцов. Ясно, что контейнер увеличивался, чтобы содержать группы столбцов, и без использования пустого пространства контейнера он переполнял бы границу страницы.
Ciarán
4
Это было, безусловно, ключом для меня. Я всегда использую принятый ответ Натана со смешанными результатами. В каждом случае, когда решение Натана не решало проблему, это помогало. Знайте, что вы все еще должны использовать то, что предлагает Натан.
Божинго
ДА х100! Жаль, что у вас не может быть двух «принятых ответов», потому что кажется, что правильный курс - это комбинация и этого, и принятого. Слава тебе!
NateJ
2
Ой, возьми это обратно. Я использую VS 2017 SSRS / SSDT; Мне потребовалось некоторое время , чтобы выяснить , вы должны использовать Свойства окно , чтобы найти эту функцию, неReport Properties... диалог.
codeMonkey
1
это сработало для меня после некоторой борьбы ... большое спасибо
Joel_J
28

После нескольких часов борьбы с этой проблемой я наткнулся на решение, которое сработало для меня:

В SSDT (2012) мои параметры страницы / страницы были изначально установлены в сантиметрах. Когда я изменил это на дюймы, как ни странно, я смог экспортировать свой отчет в PDF, не оставив при этом ни одной другой пустой страницы.

введите описание изображения здесь

sion_corn
источник
Это сработало для меня отлично. Изменение дюймов в см будет работать или наоборот, но нет необходимости придерживаться см. Еще одна вещь, необходимо установить поля не менее 1 см, тогда отчет генерируется без дополнительной пустой страницы.
Рави Шанкар
21

Лучше сделать это в области проектирования ( показана Visual Studio 2012, но ее можно выполнить в других версиях ), прежде чем вычислять математические вычисления при редактировании документа SSRS.

Ниже приведены цифры в красных кружках, которые соответствуют следующим шагам:

  1. В области дизайна иногда редактор создает объект, pageкоторый больше, чем фактические элементы управления; следовательно область призрака печатается.
  2. Изменить размер элементов управления. Визуально посмотрите на ширину / высоту и посмотрите, не можете ли вы ввести страницу в область дизайна, чтобы увеличить ее по размеру, фактически требуемому элементами управления, и больше.
  3. Затем попробуйте создать PDF и посмотрите, исправит ли это.
  4. Если # 3 не решает проблему, то существуют элементы управления, требующие слишком большого фактического размера страницы и переходящие в длину / ширину. Таким образом, нужно будет уменьшить размер элементов управления, чтобы вместить меньший размер страницы.

Шаги по исправлению вручную


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

ΩmegaMan
источник
2
Спасибо! Я знал, что это должно быть проще, чем просматривать числа и заниматься математикой. Я не знал, что он печатал пустое пространство только потому, что тело отчета было таким большим.
Тор
Установка ConsumeContainerWhitespace в true сделала это для меня. Хотя я уже очистил свой отчет, ширину тела и ширину таблицы
Джон Досманн
18

Проблема для меня заключалась в том, что SSRS преднамеренно обращается с вашим пустым пространством так, как будто вы намерены его соблюдать:

введите описание изображения здесь

Помимо пробелов, убедитесь, что нет правого поля.

Джереми Томпсон
источник
1
Привет, Джереми-Томпсон, твой совет очень удобен. Приветствия
Энди К
1
Удаление правого поля работало для меня и не влияло на рендеринг ни в программе просмотра веб-отчетов, ни в PDF.
andrej351
1
5 лет спустя, это был тот для меня.
MPJ567
17

Если страницы пусты из SSRS, вам нужно настроить макет отчета. Это будет гораздо эффективнее, чем выполнение вывода через и после обработки для устранения побочных эффектов проблемы макета.

SSRS очень привередливы, когда речь идет о расширении границ. Случайно расширить / удлинить отчет легко, просто изменив текстовое поле или другой элемент управления в отчете. Тщательно проверьте свойства ширины и высоты поверхности отчета и сожмите их как можно больше. Остерегайтесь больших колонтитулов.

HectorMac
источник
5

В дополнение к полям, самой распространенной проблеме, я также видел две дополнительные возможности:

  1. Использование +для объединения текста. Вы должны использовать &вместо этого.
  2. Текст переполняет ширину указанного текстового поля. Так что, если ваше текстовое поле содержит только 30 символов, и вы пытаетесь вписать туда 300 символов, у вас могут появиться дополнительные страницы.
Джошуа Дрейк
источник
5

Я работал с SSRS более 10 лет, и ответы выше - это ответы на вопросы. НО. Если ничего не работает, и вы полностью напичканы .... удаляйте элементы из отчета, пока проблема не исчезнет. Как только вы определили, какая строка или элемент отчета вызывает проблему, поместите его в прямоугольный контейнер. Вот и все. Помог нам много много раз! Дополнительные страницы в основном вызваны тем, что элементы отчета перетекают через правое поле. Когда все остальное не удается, размещение вещей внутри прямоугольника или пустого прямоугольника справа от элемента может остановить это. Удачи там!

LucasF
источник
Это сработало для меня. Добавив в таблицу дополнительный пустой столбец, мой отчет в формате pdf не содержит лишних пустых страниц ..!
светлячок
4

Вы пытались увидеть, есть ли какие-либо пробелы справа от вашего отчета? Если это так, вы можете перетащить его обратно в конец отчета, а затем перетащить фон отчета обратно в то же место.

user2585349
источник
4

На вкладке свойств отчета (myReport.rdlc) измените атрибут «Сохранить вместе» на False. Я боролся с этой проблемой некоторое время, и это, кажется, решило мою проблему. введите описание изображения здесь

Омар
источник
3

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

Я щелкнул правой кнопкой мыши на tablix и выбрал свойства. Был отмечен флажок «добавить разрыв страницы после». После удаления он печатается на одной странице.

введите описание изображения здесь

crh225
источник
2

Если в ваш отчет входит вложенный отчет, ширина вложенного отчета может раздвинуть границы тела, если разрешить увеличение вложенного отчета и иерархии. У меня была похожая проблема, возникающая с вложенным отчетом, который мог быть размещен в ячейке (охватывающей 2 столбца). Похоже, что span может содержать его в конструкторе, и он прекрасно отображается в winform или браузере, и первоначально он мог генерировать вывод на принтер (или pdf-файл), не перетекая на лишние страницы.
Затем, после изменения некоторых других значений ширины столбца (и без превышения ширины тела и полей), визуализация winform и браузера выглядела все еще хорошо, но когда был сгенерирован вывод (принтер или pdf), он превысил поля и записал правую часть. каждой страницы в качестве 2-й (4-й и т. д.) страницы. Я мог бы устранить мою проблему, увеличив colspan там, где был размещен подотчет.
Независимо от того, используете ли вы подотчеты, если у вас есть перелив страницы, и ваш дизайн тела вписывается в поля страницы, ищите что-то, что может расти, выталкивая ширину тела.

Bill1260231
источник
-3

Я успешно использовал pdftk для удаления страниц, которые мне не нужны / не нужны в pdfs. Вы можете скачать программу здесь

Вы можете попробовать что-то вроде следующего. Взято отсюда по примерам

Удалите «страницу 13» из in1.pdf для создания out1.pdf pdftk in.pdf cat 1-12 14-end output out1.pdf

или:

pdftk A = in1.pdf cat A1-12 A14-end output out1.pdf

vinc456
источник