So entfernen Sie leere Seiten in PDFs, die aus SSRS exportiert wurden

194

Ich habe einen zweiseitigen SSRS-Bericht. Als ich es als PDF exportierte, dauerte es aufgrund seiner Breite 4 Seiten, wobei auf der 2. und 4. Seite eines meiner Felder aus der Tabelle angezeigt wurde. Ich habe versucht, die Layoutgröße in den Berichtseigenschaften auf width = 18in und height = 8.5in festzulegen.

Es gab mir die ganze Tabelle auf einer einzigen Seite PDF, aber ich bekomme immer noch die 2. und 4. Seite leer.

Ist die Art und Weise, wie ich es mache, falsch? Wie kann ich diese leeren Seiten sonst noch loswerden?

Mark Hions
quelle

Antworten:

344

Gehen Sie in BIDS oder SSDT-BI wie folgt vor:

  1. Klicken Sie auf Bericht> Berichtseigenschaften> Registerkarte Layout (Registerkarte Seite einrichten in SSDT-BI).
  2. Notieren Sie sich die Werte für Seitenbreite , linker Rand , rechter Rand
  3. Schließen Sie und kehren Sie zur Entwurfsoberfläche zurück
  4. Wählen Sie im Eigenschaftenfenster Body aus
  5. Klicken Sie auf das Symbol +, um den Knoten Größe zu erweitern
  6. Notieren Sie sich den Wert für Breite

Um in PDF korrekt zu rendern, muss die Körperbreite + der linke Rand + der rechte Rand kleiner oder gleich der Seitenbreite sein. Wenn Sie sehen, dass leere Seiten gerendert werden, liegt dies fast immer daran, dass die Körperbreite plus Ränder größer als die Seitenbreite ist.

Denken Sie daran: (Körperbreite + linker Rand + rechter Rand) <= (Seitenbreite)

Nathan Griffiths
quelle
14
Funktioniert nicht Meine Körperbreite ist kleiner als "Berichtsbreite - Ränder". Und trotzdem habe ich eine Menge leerer Seiten drin.
Adolf Knoblauch
2
@adolfgarlic Ich habe festgestellt, dass die Einstellungen für die Seitenbreite unter Berichtseigenschaften nicht immer korrekt funktionieren. Haben Sie versucht, die Berichtsbreite in Visual Studio manuell zu ziehen? Damit war dieses Problem für mich heute gelöst, nachdem ich meinen Kopf eine Weile gegen die Wand geschlagen hatte. Es lohnt sich auch, die Breite Ihrer Kopf- / Fußzeilen zu überprüfen, da diese möglicherweise etwas zu groß sind.
Michael A
15
Ich fand, dass die Regel, die hier funktionierte, nicht (Körperbreite + linker Rand + rechter Rand) <= (Seitenbreite) war, sondern eher (Körperbreite + linker Rand + rechter Rand) <(Seitenbreite-1 cm)
Jafin
3
Beachten Sie auch die Höhe der Kopfzeile + des Körpers + der Fußzeile + des oberen + unteren Randes <Seitenhöhe, andernfalls wird die Seite auf mehreren Seiten fließen.
Desiguy
4
Wenn Sie zum ersten Mal einen Bericht erstellen, führt der Builder einen weißen Bereich (den von Nathan erwähnten "Körper") über die Breite des Bildschirms aus, um Inhalte zu erstellen. Normalerweise ist dieser weiße Bereich auf einem neueren Briefkastenbildschirm 17 Zoll breit. Was nicht intuitiv offensichtlich ist, ist, dass dies als druckbares Objekt betrachtet wird und auf die Breite des Materials, das Sie darauf legen, eingegrenzt werden muss. Wenn Sie dies nicht tun, erhalten Sie leere Seiten, unabhängig von all den anderen Dingen, die jeder erwähnt.
BobRodes
112

Eine andere Sache , zu versuchen, die festlegen Bericht Eigenschaft genannt ConsumeContainerWhitespacezu True(der Standard ist false). So wurde es für mich gelöst.

Chrysalis
quelle
2
Ja, hat auch für mich gearbeitet. Ich habe einen Container mit einem Tablix mit Spaltengruppen. Offensichtlich wuchs der Container, um die Spaltengruppen zu enthalten, und ohne den Leerraum des Containers zu verbrauchen, würde er die Seitengrenze überlaufen.
Ciarán
4
Dies war sicherlich der Schlüssel für mich. Ich benutze immer die akzeptierte Antwort von Nathan mit gemischten Ergebnissen. In jedem Fall, in dem Nathans Lösung das Problem nicht löste, tat dies den Trick. Seien Sie sich bewusst, dass Sie immer noch das verwenden sollten, was Nathan vorschlägt.
Bojingo
JA x100! Es ist schade, dass Sie keine 2 "akzeptierten Antworten" haben können, denn es scheint, dass der richtige Kurs eine Kombination aus dieser und der akzeptierten ist. Hut ab!
NateJ
2
Hoppla, nimm es zurück. Ich verwende VS 2017 SSRS / SSDT. dauerte eine Weile , um herauszufinden , Sie Eigenschaften zu verwenden , haben Fenster diese Funktion zu finden, die nicht der Report Properties...Dialog.
CodeMonkey
1
das hat bei mir funktioniert, nachdem ich eine Weile gekämpft hatte ... vielen Dank
Joel_J
28

Nachdem ich stundenlang mit diesem Problem zu kämpfen hatte, stieß ich auf eine Lösung, die für mich funktionierte:

In SSDT (2012) hatte ich ursprünglich meine Seiteneinstellungen / Seiteneinheiten auf Zentimeter eingestellt. Als ich dies seltsamerweise in Zoll änderte, konnte ich meinen Bericht als PDF exportieren, ohne dass jede andere Seite leer war.

Geben Sie hier die Bildbeschreibung ein

sion_corn
quelle
Das hat bei mir perfekt funktioniert. Das Ändern von Zoll in cm funktioniert oder umgekehrt, es ist jedoch nicht erforderlich, auf dem cm zu bleiben. Eine weitere Sache ist, dass Sie Ränder für mindestens 1 cm festlegen müssen, damit der Bericht ohne zusätzliche leere Seite generiert wird.
Ravi Shankar
21

Es ist besser, dies zuerst auf der Entwurfsoberfläche zu tun ( Visual Studio 2012 wird angezeigt, kann aber auch in anderen Versionen ausgeführt werden ), bevor beim Bearbeiten eines SSRS-Dokuments Mathematik berechnet wird.

Unterhalb der folgenden Zahlen in roten Kreisen, die den folgenden Schritten zugeordnet sind:

  1. In der Entwurfsoberfläche erstellt der Editor manchmal eine, pagedie größer als die tatsächlichen Steuerelemente ist. daher wird der Geisterbereich gedruckt.
  2. Ändern Sie die Größe der Steuerelemente. Sehen Sie sich die Breite / Höhe visuell an und prüfen Sie, ob Sie die Seite auf der Entwurfsoberfläche nicht einfügen können, um sie an den von den Steuerelementen tatsächlich benötigten Platz anzupassen, und nicht mehr.
  3. Versuchen Sie dann, ein PDF zu erstellen, und prüfen Sie, ob dies das Problem behebt.
  4. Wenn # 3 das Problem nicht lösen, dann gibt es Kontrollen zu viel von der tatsächlichen Seitengröße erfordern und gehen über in jeder Länge / Breite. Daher muss die Größe der Steuerelemente verkleinert werden, um eine kleinere Seitengröße zu ermöglichen.

Schritte zur manuellen Korrektur


Auch in einigen Fällen kann man nur eine Eigenschaft des Berichts Seite ändern , indem Sie ConsumeContainerWhitespaceauf trueautomatisch , um die Räume zu konsumieren.

ΩmegaMan
quelle
2
Danke! Ich wusste, dass es einfacher sein musste, als Zahlen durchzugehen und zu rechnen. Mir war nicht bewusst, dass es Leerzeichen druckte, nur weil der Berichtskörper so groß war.
Tor
Das Setzen von ConsumeContainerWhitespace auf true hat es für mich getan. Ich hatte jedoch bereits meine Berichts-, Körper- und
Tischbreiten aufgeräumt
18

Das Problem für mich war, dass SSRS Ihren Leerraum absichtlich so behandelt, als ob Sie beabsichtigen, ihn zu ehren:

Geben Sie hier die Bildbeschreibung ein

Stellen Sie neben dem Leerraum sicher, dass kein rechter Rand vorhanden ist.

Jeremy Thompson
quelle
1
Hallo @ jeremy-thompson, dein Tipp ist sehr praktisch. Prost
Andy K
1
Das Entfernen des rechten Randes funktionierte für mich und hatte keinen Einfluss auf das Rendern in Web Report Viewer oder PDF.
andrej351
1
5 Jahre später war dies das Richtige für mich.
MPJ567
17

Wenn die von SSRS stammenden Seiten leer sind, müssen Sie Ihr Berichtslayout anpassen. Dies ist weitaus effizienter als das Durchlaufen und Nachbearbeiten der Ausgabe, um die Nebenwirkungen eines Layoutproblems zu beheben.

SSRS ist sehr pingelig, wenn es darum geht, die Grenzen der Ränder zu verschieben. Es ist leicht, den Bericht versehentlich zu erweitern / zu verlängern, indem Sie einfach das Textfeld oder ein anderes Steuerelement im Bericht anpassen. Überprüfen Sie die Breite und Höhe der Berichtsoberfläche sorgfältig und drücken Sie sie so weit wie möglich zusammen. Achten Sie auf große Kopf- und Fußzeilen.

HectorMac
quelle
5

Neben den Rändern, dem mit Abstand häufigsten Problem, habe ich auch zwei zusätzliche Möglichkeiten gesehen:

  1. Verwenden Sie, +um Text zu verketten. Sie sollten &stattdessen verwenden.
  2. Text, der die Breite des angegebenen Textfelds überschreitet. Wenn Ihr Textfeld also nur 30 Zeichen enthält und Sie versuchen, 300 Zeichen darin zu stopfen, werden möglicherweise zusätzliche Seiten angezeigt.
Joshua Drake
quelle
5

Ich arbeite seit über 10 Jahren mit SSRS und die obigen Antworten sind die Antworten. ABER. Wenn nichts funktioniert und Sie vollständig gestopft sind, entfernen Sie Elemente aus dem Bericht, bis das Problem behoben ist. Wenn Sie festgestellt haben, welche Zeile oder welches Berichtselement das Problem verursacht, legen Sie es in einen rechteckigen Container. Das ist es. Hat uns viele, viele Male geholfen! Zusätzliche Seiten werden hauptsächlich durch Berichtselemente verursacht, die über den rechten Rand fließen. Wenn alles andere fehlschlägt, kann das Platzieren von Objekten in einem Rechteck oder einem leeren Rechteck rechts neben einem Element dies verhindern. Viel Glück da draußen!

LucasF
quelle
Es hat bei mir funktioniert. Durch Hinzufügen einer zusätzlichen leeren Spalte zur Tabelle werden in meinem Bericht im PDF-Format keine zusätzlichen leeren Seiten angezeigt.
Glühwürmchen
4

Haben Sie versucht festzustellen, ob rechts in Ihrem Bericht Leerzeichen vorhanden sind? In diesem Fall können Sie es an das Ende Ihres Berichts zurückziehen und dann den Hintergrund des Berichts an dieselbe Stelle zurückziehen.

user2585349
quelle
4

Ändern Sie auf der Registerkarte "Eigenschaften" des Berichts (myReport.rdlc) das Attribut "Zusammenhalten" in "Falsch". Ich habe eine Weile mit diesem Problem zu kämpfen und dies scheint mein Problem gelöst zu haben. Geben Sie hier die Bildbeschreibung ein

Omar
quelle
2

Wenn Ihr Bericht einen Unterbericht enthält, kann die Breite des Unterberichts die Grenzen des Körpers verschieben, wenn Unterbericht und Hierarchie wachsen dürfen. Ich hatte ein ähnliches Problem mit einem Unterbericht, der in einer Zelle (über 2 Spalten) platziert werden konnte. Es sah so aus, als könnte die Spanne sie im Designer enthalten und in einer Winform oder einem Browser einwandfrei wiedergegeben werden. Ursprünglich konnte sie eine Druckerausgabe (oder eine PDF-Datei) generieren, ohne auf überschüssige Seiten überzugehen.
Nach dem Ändern einiger anderer Spaltenbreiten (und ohne die Körperbreite plus Ränder zu überschreiten) sahen die Winform- und Browser-Renderings immer noch gut aus, aber als die Ausgabe (Drucker oder PDF) generiert wurde, wuchs sie über die Ränder hinaus und schrieb die rechte Seite jeder Seite als 2. (4. usw.) Seite. Ich konnte mein Problem beseitigen, indem ich Colspan vergrößerte, in dem der Unterbericht platziert wurde.
Unabhängig davon, ob Sie Unterberichte verwenden oder nicht, ob Sie einen Seitenüberlauf haben und Ihr Körperdesign in den Rand der Seite passt, suchen Sie nach etwas, das wachsen kann und die Breite des Körpers nach außen drückt.

Bill1260231
quelle
2

Ich habe kürzlich einen Bericht geerbt, für den ich einige Änderungen vornehmen musste. Nachdem alle oben genannten Empfehlungen befolgt wurden, hat es nicht geholfen. Der Bericht hatte historisch gesehen diese zusätzliche Seite, und niemand konnte herausfinden, warum.

Ich habe mit der rechten Maustaste auf das Tablix geklickt und Eigenschaften ausgewählt. Es wurde ein Kontrollkästchen aktiviert, das besagte, dass nachher ein Seitenumbruch hinzugefügt werden soll. Nachdem Sie dies entfernt haben, wird es jetzt auf einer Seite gedruckt.

Geben Sie hier die Bildbeschreibung ein

crh225
quelle
-3

Ich habe pdftk erfolgreich verwendet, um Seiten zu entfernen, die ich in pdfs nicht wollte / brauchte. Sie können das Programm hier herunterladen

Sie könnten etwas wie das Folgende versuchen. Aus Beispiel hier entnommen

Entfernen Sie 'Seite 13' aus in1.pdf, um out1.pdf pdftk in.pdf zu erstellen. Cat 1-12 14-end output out1.pdf

oder:

pdftk A = in1.pdf cat A1-12 A14-Ende Ausgabe out1.pdf

vinc456
quelle