Як позбутися від порожніх сторінок у 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. Запишіть значення для Width

Щоб візуалізувати у PDF правильно Ширина тіла + Лівий край + Правий край повинен бути меншим або рівним ширині сторінки. Коли ви бачите, що порожні сторінки відображаються, це майже завжди, тому що ширина тіла плюс поля перевищують ширину сторінки.

Пам'ятайте: (Ширина тіла + Лівий край + Правий край) <= (Ширина сторінки)


14
Не працює. Ширина мого тіла менша, ніж "Ширина звіту - поля". А ще в мене є тонна порожніх сторінок.
часник адольфа

2
@adolfgarlic Я виявив, що параметри ширини сторінки не завжди працюють належним чином у властивостях звіту. Ви намагалися перетягувати ширину звіту вручну в Visual Studio? Це вирішило для мене це питання сьогодні після удару головою об стіну на довгий час. Варто також перевірити ширину заголовка / колонтитула, вони можуть бути трохи завеликими.
Майкл А

15
Я виявив, що тут працювало не правило (Ширина тіла + Лівий край + Правий край) <= (Ширина сторінки), а більше подібне (Ширина тіла + Лівий край + Правий край) <(Ширина сторінки-1 см)
Джафін

3
Також слід відзначити висоту заголовка + тіло + нижній колонтитул + верхній / нижній край <Висота сторінки, інакше сторінка збирається на декількох сторінках.
desiguy

4
Коли ви створюєте звіт вперше, будівельник виконує білу область ("Тіло", про яку згадує Натан) по всій ширині екрана, щоб нанести на нього речі. Зазвичай ця біла область шириною 17 дюймів на більш новому екрані листів. Що не є інтуїтивно зрозумілим, це те, що це вважається об'єктом для друку, і його потрібно звузити до ширини матеріалів, які ви наділите на нього. Якщо цього не зробити, ви отримаєте порожні сторінки, незалежно від усіх інших речей, про які всі згадують.
BobRodes

112

Ще одна річ , щоб спробувати це встановити властивість звіту під назвою , ConsumeContainerWhitespaceщоб True(за замовчуванням false). Ось так воно вирішилось для мене.


2
Так, працював і для мене. У мене є контейнер з табличкою з групами стовпців. Очевидно, що контейнер зростав, щоб містити групи стовпців, і не витрачаючи пробіл білого контейнера, він переповнює межі сторінки.
Ciarán

4
Це, безумовно, було для мене ключовим. Я завжди використовую прийняту відповідь Натана, зі змішаними результатами. У кожному випадку, коли рішення Натана не вирішило проблему, цей зробив трюк. Будьте в курсі, що ви все ще повинні використовувати те, що пропонує Натан.
боїнго

ТАК x100! Це дуже погано, що ви не можете мати 2 "прийнятих відповіді", тому що здається, що правильний курс є комбінацією як цього, так і прийнятого. Кудо вам!
NateJ

2
Упс, візьміть його назад. Я використовую VS 2017 SSRS / SSDT; Мені потрібно якийсь час , щоб з'ясувати , ви повинні використовувати Властивості вікно , щоб знайти цю функцію, НЕReport Properties... діалог.
codeMonkey

1
що працювало на мене після боротьби деякий час ... велике спасибі
Joel_J

28

Після годин боротьби з цією проблемою я натрапив на рішення, яке працювало на мене:

У SSDT (2012) у мене початково було встановлено, що одиниці налаштування сторінки / сторінки встановлюються на сантиметри. Коли я змінив це на дюйми, як це не дивно, я зміг експортувати свій звіт у PDF, не маючи порожньої сторінки.

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


Це працювало для мене чудово. Зміна дюймів на Cm спрацює або навпаки, але не потрібно дотримуватися Cm. Ще одне - потрібно встановити запаси не менше 1 см, тоді звіт формується без додаткової порожньої сторінки.
Раві Шанкар

21

Краще зробити це на поверхні дизайну ( Visual Studio 2012 показано, але це можна зробити в інших версіях ) спочатку перед обчисленням будь-якої математики під час редагування документа SSRS.

Нижче наведені наступні цифри у червоних колах, які відображають наступні кроки:

  1. На дизайнерській поверхні іноді редактор створює pageвеличину, що перевищує фактичні елементи керування; звідси надрукована область привидів.
  2. Змініть розмір до елементів управління. Візуально подивіться на ширину / висоту і побачите, чи не можете ви привести сторінку на дизайнерській поверхні, щоб розмістити її до простору, потрібного регуляторам, і не більше.
  3. Потім спробуйте створити PDF і подивіться, чи це виправляє.
  4. Якщо проблема №3 не вирішує проблему, існують елементи керування, які вимагають занадто великого фактичного розміру сторінки та переходять на будь-яку довжину / ширину. Таким чином, потрібно буде зменшити розмір елементів керування, щоб розмістити сторінку менше.

Кроки до ручного перенаправлення


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


2
Дякую! Я знав, що це повинно бути простіше, ніж перебирати цифри і займатися математикою. Я не знав, що він друкує пробіли просто тому, що тіло звіту було таким великим.
Тор

Встановлення ConsumeContainerWhitespace на істину зробило це для мене. Я вже прибирав свої звіти, ширину корпусу та таблиці
Джон Досман

18

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

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

Окрім білого простору, переконайтеся, що немає правильної межі.


1
Привіт @ jeremy-thompson, ваша порада виявляється дуже зручною. Ура
Енді К

1
Видалення правильного поля працювало на мене і не впливало на візуалізацію ані в переглядачі веб-звітів, ані в PDF.
andrej351

1
Через 5 років це було для мене.
MPJ567

17

Якщо сторінки порожні надходять із SSRS, вам потрібно змінити макет звіту. Це буде набагато ефективніше, ніж запуск результатів через та після обробки для усунення побічних ефектів проблеми компонування.

SSRS дуже вибагливий, коли справа доходить до просування меж поля. Легко випадково розширити / подовжити звіт, просто скоригувавши текстове поле чи інший елемент управління звітом. Уважно перевірте властивість ширини та висоти поверхні звіту та максимально стисніть їх. Слідкуйте за великими колонтитулами.


5

На додаток до маржі, найпоширенішого на сьогоднішній день, я також бачив дві додаткові можливості:

  1. Використання +для сполучення тексту. Ви повинні використовувати &замість цього.
  2. Текст переповнює ширину вказаного текстового поля. Тож якщо у вашому текстовому вікні є лише 30 символів, а ви намагаєтесь набити там 300, ви можете отримати додаткові сторінки.

5

Я працював з SSRS більше 10 років, і відповіді вище - це відповіді. АЛЕ Якщо нічого не працює, і ви повністю заповнені .... видаліть елементи зі звіту, поки проблема не зникне. Визначивши, який елемент рядка чи звіту викликає проблему, покладіть його всередину контейнера прямокутника. Це воно. Допомагала нам багато разів! Додаткові сторінки здебільшого спричинені елементами звітів, що надходять через правий край. Якщо все інше не вдається, помістивши речі всередину прямокутника або порожнього прямокутника праворуч від предмета, це може зупинити це. Удачі там!


Він працював для мене. Додаючи в таблицю додаткові порожні стовпці, мій звіт у форматі PDF не відображає зайвих порожніх сторінок ..
світлячок

4

Чи намагалися ви перевірити, чи немає білого простору праворуч від вашого звіту? Якщо це так, ви можете перетягнути його назад до кінця звіту, а потім перетягнути фон звіту на те саме місце.


4

На вкладці властивостей звіту (myReport.rdlc) змініть атрибут "Зберігати разом" на "Неправильно". Я певний час боровся з цим питанням, і це, здається, вирішило мою проблему. введіть тут опис зображення


3

Нещодавно я успадкував звіт, що мені потрібно внести кілька змін. Після дотримання всіх рекомендацій, наведених вище, це не допомогло. Звіт історично мав цю додаткову сторінку, і ніхто не міг зрозуміти, чому.

Я правою кнопкою миші натиснув на таблікс та вибрані властивості. Був встановлений прапорець, який сказав додавати перерву на сторінку після. Вилучивши це, він друкує на одній сторінці зараз.

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


2

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


-3

Я успішно використовував pdftk для видалення сторінок, які я не хотів / потребував у pdfs. Завантажити програму можна тут

Ви можете спробувати щось подібне. Взято звідси за прикладами

Видаліть 'сторінку 13' з in1.pdf, щоб створити out1.pdf pdftk in.pdf cat 1-12 14-кінцевий вихід out1.pdf

або:

pdftk A = in1.pdf кішка A1-12 A14-кінцевий вихід out1.pdf

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.