Jak pozbyć się pustych stron w formacie PDF eksportowanych z SSRS


194

Mam dwustronicowy raport SSRS. Kiedy wyeksportowałem go do formatu PDF, zajmowało 4 strony ze względu na swoją szerokość, gdzie 2. i 4. strona wyświetlały jedno z moich pól z tabeli. Próbowałem ustawić rozmiar układu we właściwościach raportu jako szerokość = 18 cali i wysokość = 8,5 cali.

Dało mi to całą tabelę na jednej stronie pliku PDF, ale nadal mam pustą drugą i czwartą stronę.

Czy sposób, w jaki to robię, jest nieprawidłowy? Jak inaczej mogę pozbyć się tych pustych stron?

Odpowiedzi:


344

W BIDS lub SSDT-BI wykonaj następujące czynności:

  1. Kliknij Raport> Właściwości raportu> karta Układ (karta Ustawienia strony w SSDT-BI)
  2. Zanotuj wartości szerokości strony , lewego marginesu , prawego marginesu
  3. Zamknij i wróć do powierzchni projektowej
  4. W oknie Właściwości wybierz Ciało
  5. Kliknij symbol +, aby rozwinąć węzeł Rozmiar
  6. Zanotuj wartość parametru Szerokość

Aby poprawnie renderować w formacie PDF Szerokość ciała + lewy margines + prawy margines musi być mniejsza lub równa szerokości strony. Renderowanie pustych stron jest prawie zawsze spowodowane tym, że szerokość ciała i marginesy są większe niż szerokość strony.

Pamiętaj: (szerokość ciała + lewy margines + prawy margines) <= (szerokość strony)


14
Nie działa Szerokość mojego ciała jest mniejsza niż „Szerokość raportu - marginesy”. I wciąż mam tam mnóstwo pustych stron.
czosnek Adolf

2
@ adolfgarlic Przekonałem się, że ustawienia szerokości strony nie zawsze działają poprawnie w właściwościach raportu. Czy próbowałeś ręcznie przeciągnąć szerokość raportu w Visual Studio? To rozwiązało dzisiaj ten problem po długim uderzeniu głową w ścianę. Warto sprawdzić również szerokość nagłówka / stopki, ponieważ mogą one być nieco za duże.
Michael A

15
Odkryłem, że zasada, która tu działała, nie była (szerokość ciała + lewy margines + prawy margines) <= (szerokość strony), ale bardziej podobna (szerokość ciała + lewy margines + prawy margines) <(szerokość strony-1 cm)
Jafin

3
Należy również zwrócić uwagę na wysokość nagłówka + treść + stopka + góra + dolny margines <Wysokość strony, w przeciwnym razie strona będzie przepływać na wielu stronach.
desiguy

4
Kiedy tworzysz raport po raz pierwszy, konstruktor uruchamia biały obszar („Ciało”, o którym wspomina Nathan) na całej szerokości ekranu, aby nałożyć rzeczy. Zazwyczaj ten biały obszar ma szerokość 17 cali na nowszym ekranie skrzynki na listy. To, co nie jest intuicyjnie oczywiste, to fakt, że jest to obiekt do druku i należy go zawęzić do szerokości umieszczanych na nim rzeczy. Jeśli tego nie zrobisz, otrzymasz puste strony, bez względu na wszystkie inne rzeczy, o których wszyscy wspominają.
BobRodes,

112

Inną rzeczą jest, aby spróbować ustawić właściwość raportu o nazwie ConsumeContainerWhitespacedo True(domyślnie false). Tak to rozwiązało dla mnie.


2
Tak, też dla mnie pracował. Mam kontener z tablix z grupami kolumn. Najwyraźniej pojemnik wyrastał na grupy kolumn i bez zużywania białej przestrzeni kontenera przepełniłby granicę strony.
Ciarán

4
Z pewnością był to dla mnie klucz. Zawsze wykorzystuję zaakceptowaną odpowiedź Nathana, z mieszanymi rezultatami. W każdym przypadku, gdy rozwiązanie Nathana nie rozwiązało problemu, ten rozwiązał problem. Pamiętaj, że nadal powinieneś korzystać z sugestii Nathana.
bojingo

TAK x100! Szkoda, że ​​nie możesz mieć 2 „zaakceptowanych odpowiedzi”, ponieważ wydaje się, że właściwy kurs jest kombinacją zarówno tej, jak i przyjętej. Uznanie dla ciebie!
NateJ

2
Ups, cofnij to. Używam VSRS SSRS / SSDT; Zajęło mi trochę czasu, aby dowiedzieć się, trzeba użyć Właściwości okno , aby znaleźć tę funkcję, nieReport Properties... dialogowe.
codeMonkey

1
to działało dla mnie po
dłuższej

28

Po wielu godzinach zmagania się z tym problemem natknąłem się na rozwiązanie, które działało dla mnie:

W SSDT (2012) pierwotnie miałem Ustawienia strony / Jednostki strony ustawione na Centymetry. Co dziwne, kiedy zmieniłem to na Cale, byłem w stanie wyeksportować mój raport do formatu PDF bez pozostawiania pustych stron.

wprowadź opis zdjęcia tutaj


To działało dla mnie idealnie. Zmiana cali na Cm będzie działać lub odwrotnie, ale nie ma potrzeby przyklejania się do Cm. Jeszcze jedna rzecz: musisz ustawić marginesy na co najmniej 1 cm, a następnie raport jest generowany bez dodatkowej pustej strony.
Ravi Shankar

21

Lepiej to zrobić na powierzchni projektowej ( pokazano Visual Studio 2012, ale można to zrobić w innych wersjach ) przed obliczeniem matematyki podczas edycji dokumentu SSRS.

Poniżej następujących liczb w czerwonych okręgach, które odpowiadają następującym krokom:

  1. Czasami na powierzchni projektowej edytor utworzy pagewiększy niż rzeczywiste kontrolki; stąd drukowany jest obszar duchów.
  2. Zmień rozmiar na elementy sterujące. Spójrz wizualnie na szerokość / wysokość i sprawdź, czy nie możesz wprowadzić strony na powierzchni projektowej, aby dopasować ją do przestrzeni faktycznie potrzebnej przez elementy sterujące i nie więcej.
  3. Następnie spróbuj utworzyć plik PDF i sprawdź, czy to rozwiązuje problem.
  4. Jeśli nr 3 nie rozwiązuje problemu, istnieją elementy sterujące wymagające zbyt dużego rozmiaru strony i przechodzące w dowolną długość / szerokość. Trzeba będzie więc zmniejszyć rozmiar kontrolek, aby dostosować je do mniejszego rozmiaru strony.

Kroki, aby ręcznie naprawić


Również w niektórych okolicznościach można po prostu zmienić właściwość strony raportu, ustawiając ConsumeContainerWhitespacesię trueautomatycznie konsumować przestrzenie.


2
Dziękuję Ci! Wiedziałem, że to musi być prostsze niż sprawdzanie liczb i robienie matematyki. Nie wiedziałem, że drukuje białe znaki tylko dlatego, że treść raportu była tak duża.
Tor

Ustawienie ConsumeContainerWhitespace na true zrobiło to dla mnie. Wyczyściłem już jednak mój raport, ciało i szerokość stołu
Jon Dosmann

18

Problemem było dla mnie to, że SSRS celowo traktuje twoją białą przestrzeń tak, jakbyś chciał ją uhonorować:

wprowadź opis zdjęcia tutaj

Oprócz białych znaków upewnij się, że nie ma odpowiedniego marginesu.


1
Cześć @ jeremy-thompson, twoja wskazówka okazuje się bardzo przydatna. Na zdrowie
Andy K

1
Usunięcie odpowiedniego marginesu działało dla mnie i nie wpłynęło na renderowanie w przeglądarce raportów internetowych ani w pliku PDF.
andrej351

1
5 lat później był to dla mnie.
MPJ567

17

Jeśli strony są puste pochodzące z SSRS, musisz dostosować układ raportu. Będzie to znacznie bardziej wydajne niż uruchamianie wyjścia i przetwarzania końcowego w celu naprawy skutków ubocznych problemu z układem.

SSRS jest bardzo wybredna, jeśli chodzi o przekraczanie granic marginesów. Łatwo jest przypadkowo poszerzyć / wydłużyć raport, dostosowując pole tekstowe lub inną kontrolę raportu. Sprawdź dokładnie szerokość i wysokość powierzchni raportu i ściśnij je tak bardzo, jak to możliwe. Uważaj na duże nagłówki i stopki.


5

Oprócz marginesów, najczęstszego problemu, widziałem również dwie dodatkowe możliwości:

  1. Używanie +do łączenia tekstu. Zamiast tego powinieneś użyć &.
  2. Tekst przepełnia szerokość określonego pola tekstowego. Więc jeśli twoje pole tekstowe ma tylko 30 znaków i próbujesz tam wcisnąć 300, możesz skończyć z dodatkowymi stronami.

5

Pracuję z SSRS od ponad 10 lat, a powyższe odpowiedzi są odpowiedzią. ALE. Jeśli nic nie działa, a ty jesteś całkowicie wypchany ... usuwaj elementy z raportu, aż problem zniknie. Po określeniu, który element wiersza lub raportu powoduje problem, umieść go w prostokątnym pojemniku. Otóż ​​to. Pomógł nam wiele razy! Dodatkowe strony są głównie spowodowane przez elementy raportu przekraczające prawy margines. Gdy wszystko inne zawiedzie, umieszczenie rzeczy w prostokącie lub pustym prostokącie po prawej stronie przedmiotu może temu zapobiec. Powodzenia!


To zadziałało dla mnie. Dodając dodatkową pustą kolumnę do tabeli, mój raport w formacie pdf nie pokazuje dodatkowych pustych stron ..!
świetlik

4

Czy próbowałeś sprawdzić, czy po prawej stronie raportu jest biała przestrzeń? Jeśli tak, możesz przeciągnąć go z powrotem na koniec raportu, a następnie przeciągnąć tło raportu z powrotem w to samo miejsce.


4

Na karcie właściwości raportu (myReport.rdlc) zmień atrybut „Keep Together” na False. Od dłuższego czasu borykam się z tym problemem i wydaje się, że to rozwiązało mój problem. wprowadź opis zdjęcia tutaj


3

Niedawno odziedziczyłem raport, który musiałem wprowadzić kilka zmian. Po wykonaniu wszystkich powyższych zaleceń nie pomogło. Raport historycznie miał tę dodatkową stronę i nikt nie mógł zrozumieć, dlaczego.

Kliknąłem prawym przyciskiem myszy tablix i wybrane właściwości. Zaznaczono pole wyboru, które mówiło o dodaniu podziału strony po. Po usunięciu drukuje się teraz na jednej stronie.

wprowadź opis zdjęcia tutaj


2

Jeśli raport zawiera podraport, szerokość podraportu może przesunąć granice ciała, jeśli pozwolą na zwiększenie podraportu i hierarchii. Miałem podobny problem z podraportem, który można umieścić w komórce (obejmującej 2 kolumny). Wyglądało na to, że rozpiętość może zawierać ją w projektancie i dobrze renderowała się w przeglądarce lub w przeglądarce i pierwotnie mogła generować wyjście drukarki (lub plik pdf) bez rozlewania się na nadmiarowe strony.
Następnie, po zmianie niektórych innych szerokości kolumn (i bez przekraczania szerokości ciała plus marginesów), wygląd formularza i przeglądarki wyglądał nadal dobrze, ale kiedy wygenerowano wynik (drukarka lub pdf), przekroczył marginesy i napisał prawą stronę każdej strony jako 2. (4. itd.) strona. Mógłbym wyeliminować mój problem, zwiększając zakres colspan w miejscu, w którym został umieszczony podraport.
Niezależnie od tego, czy korzystasz z podraportów, jeśli masz efekt przeniesienia strony, a Twój projekt ciała mieści się w marginesach strony, poszukaj czegoś, co może rosnąć, co wypchnie szerokość ciała.


-3

Z powodzeniem użyłem pdftk do usuwania stron, których nie chciałem / potrzebowałem w plikach pdf. Możesz pobrać program tutaj

Możesz spróbować czegoś takiego. Wykonano stąd pod przykładami

Usuń „stronę 13” z pliku in1.pdf, aby utworzyć plik out1.pdf pdftk in.pdf cat 1-12 Wyjście 14-końcowe out1.pdf

lub:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.