Come sbarazzarsi di pagine vuote in PDF esportate da SSRS


195

Ho un rapporto SSRS di due pagine. Quando l'ho esportato in PDF ci sono volute 4 pagine a causa della sua larghezza, dove la 2a e la 4a pagina mostravano uno dei miei campi dalla tabella. Ho provato a impostare la dimensione del layout nelle proprietà del report come larghezza = 18 pollici e altezza = 8,5 pollici.

Mi ha dato l'intera tabella in una singola pagina di PDF, ma sto ancora lasciando vuote la seconda e la quarta pagina.

Il modo in cui lo sto facendo non è corretto? In quale altro modo posso liberarmi di quelle pagine bianche?

Risposte:


345

In BIDS o SSDT-BI, attenere alla seguente procedura:

  1. Fare clic su Rapporto> Proprietà rapporto> scheda Layout (scheda Imposta pagina in SSDT-BI)
  2. Prendi nota dei valori di Larghezza pagina , Margine sinistro , Margine destro
  3. Chiudi e torna alla superficie di progettazione
  4. Nella finestra Proprietà, selezionare Corpo
  5. Fare clic sul simbolo + per espandere il nodo Dimensione
  6. Prendi nota del valore per Larghezza

Per eseguire correttamente il rendering in PDF Larghezza corpo + Margine sinistro + Margine destro deve essere minore o uguale alla larghezza della Pagina. Quando vedi il rendering delle pagine vuote è quasi sempre perché la larghezza del corpo più i margini è maggiore della larghezza della pagina.

Ricorda: (Larghezza corpo + Margine sinistro + Margine destro) <= (Larghezza della pagina)


14
Non funziona La larghezza del mio corpo è inferiore a "Larghezza rapporto - margini". E ho ancora un sacco di pagine bianche lì dentro.
Adolf Aglio,

2
@adolfgarlic Ho scoperto che le impostazioni di larghezza della pagina non funzionano sempre correttamente nelle proprietà del rapporto. Hai provato a trascinare manualmente la larghezza del rapporto in Visual Studio? Ciò ha risolto questo problema per me oggi dopo aver sbattuto la testa contro il muro per un bel po '. Vale la pena controllare anche le larghezze dell'intestazione / piè di pagina, potrebbero essere leggermente troppo grandi.
Michael A

15
Ho scoperto che la regola che ha funzionato qui non era (Larghezza corpo + Margine sinistro + Margine destro) <= (Larghezza della pagina) ma più simile a (Larghezza del corpo + Margine sinistro + Margine destro) <(Larghezza della pagina-1 cm)
Jafin

3
Un'altra cosa da notare è l'altezza dell'intestazione + corpo + piè di pagina + margine superiore + inferiore <Altezza pagina altrimenti la pagina scorrerà su più pagine.
desiguy,

4
Quando crei un rapporto per la prima volta, il costruttore esegue un'area bianca (il "Corpo" menzionato da Nathan) attraverso la larghezza dello schermo per mettere le cose. In genere, questa area bianca è larga 17 pollici su uno schermo più recente per le cassette delle lettere. Ciò che non è intuitivamente ovvio è che questo è considerato un oggetto stampabile e deve essere ristretto alla larghezza delle cose che ci metti sopra. Se non lo fai, otterrai pagine vuote, indipendentemente da tutte le altre cose che tutti menzionano.
BobRodes,

112

Un'altra cosa da provare è quello di impostare la proprietà rapporto chiamato ConsumeContainerWhitespacea True(il valore predefinito è false). Ecco come è stato risolto per me.


2
Sì, ha funzionato anche per me. Ho un contenitore con una tablix con gruppi di colonne. Chiaramente il contenitore stava crescendo per contenere i gruppi di colonne e senza consumare lo spazio bianco del contenitore avrebbe traboccato il bordo della pagina.
Ciarán,

4
Questa è stata sicuramente la chiave per me. Uso sempre la risposta accettata da Nathan, con risultati contrastanti. In ogni caso in cui la soluzione di Nathan non ha risolto il problema, questa ha funzionato. Tieni presente che dovresti comunque utilizzare ciò che suggerisce Nathan.
Bojingo,

SÌ x100! Peccato che non si possano avere 2 "risposte accettate", perché sembra che il corso corretto sia una combinazione di questa e di quella accettata. Complimenti a te!
NateJ,

2
Whoops, riprendilo. Sto usando VS 2017 SSRS / SSDT; mi ci è voluto un po 'per capire che è necessario utilizzare la finestra Proprietà per trovare questa funzione, non la Report Properties...finestra di dialogo.
codeMonkey,

1
che ha funzionato per me dopo aver lottato per un po '... grazie mille
Joel_J,

28

Dopo ore di lotta con questo problema, mi sono imbattuto in una soluzione che ha funzionato per me:

In SSDT (2012), originariamente avevo impostato le mie unità di impostazione della pagina / pagina su Centimetri. Quando l'ho cambiato in pollici, stranamente, sono stato in grado di esportare il mio rapporto in PDF senza che ogni altra pagina fosse vuota.

inserisci qui la descrizione dell'immagine


Questo ha funzionato perfettamente per me. Cambiare pollici in Cm funzionerà o viceversa, ma non è necessario attenersi al Cm. Un'altra cosa è, è necessario impostare i margini per almeno 1 cm, quindi il report viene generato senza ulteriore pagina vuota.
Ravi Shankar,

21

È meglio farlo nell'area di progettazione ( viene mostrato Visual Studio 2012, ma può essere fatto in altre versioni ) prima di calcolare qualsiasi calcolo matematico durante la modifica di un documento SSRS.

Di seguito i seguenti numeri in cerchi rossi associati a questi passaggi seguenti:

  1. Nell'area di progettazione, a volte l'editor crea un pageoggetto più grande dei controlli effettivi; quindi l'area fantasma in fase di stampa.
  2. Ridimensiona ai controlli. Osserva visivamente la larghezza / altezza e vedi se non riesci a portare la pagina nell'area di progettazione per ridimensionarla nello spazio effettivamente richiesto dai controlli e non di più.
  3. Quindi prova a creare un PDF e vedi se lo risolve.
  4. Se il numero 3 non risolve il problema, allora ci sono controlli che richiedono troppe dimensioni della pagina effettiva e vanno in lunghezza / larghezza. Quindi sarà necessario ridurre le dimensioni dei controlli per adattarsi a dimensioni di pagina inferiori.

I passaggi per rimediare manualmente


Inoltre in alcune circostanze si può semplicemente cambiare una proprietà della pagina del report impostando ConsumeContainerWhitespacesu trueper consumare automaticamente gli spazi.


2
Grazie! Sapevo che doveva essere più semplice che passare attraverso i numeri e fare matematica. Non sapevo che stesse stampando uno spazio bianco solo perché il corpo del report era così grande.
Tor

L'impostazione di ConsumeContainerWhitespace su true l'ha fatto per me. Avevo già ripulito il mio rapporto, il corpo e le larghezze del tavolo
Jon Dosmann,

18

Il problema per me era che SSRS tratta di proposito il tuo spazio bianco come se volessi che fosse onorato:

inserisci qui la descrizione dell'immagine

Oltre allo spazio bianco, assicurati che non ci sia margine giusto.


1
Ciao @Jeremy-Thompson, il tuo suggerimento sembra essere molto utile. Saluti
Andy K,

1
La rimozione del margine giusto ha funzionato per me e non ha influito sul rendering nel visualizzatore di report Web o in PDF.
Andrej351,

1
5 anni dopo, questo era quello per me.
MPJ567

17

Se le pagine sono vuote provenienti da SSRS, è necessario modificare il layout del report. Ciò sarà molto più efficiente dell'esecuzione dell'output e del post-processo per riparare gli effetti collaterali di un problema di layout.

SSRS è molto schizzinoso quando si tratta di spingere i confini dei margini. È facile ampliare / allungare accidentalmente il rapporto semplicemente regolando la casella di testo o altri controlli sul rapporto. Controllare attentamente la proprietà larghezza e altezza della superficie del report e comprimerli il più possibile. Fai attenzione alle grandi intestazioni e piè di pagina.


5

Oltre ai margini, il problema più comune di gran lunga, ho visto anche altre due possibilità:

  1. Usando +per concatenare il testo. Dovresti usare &invece.
  2. Testo che trabocca della larghezza della casella di testo specificata. Quindi se la tua casella di testo contiene solo 30 caratteri e provi a riempirne 300, potresti finire con pagine extra.

5

Ho lavorato con SSRS per oltre 10 anni e le risposte sopra sono le risposte. MA. Se non funziona nulla e sei completamente pieno .... rimuovi gli elementi dal rapporto fino a quando il problema non scompare. Dopo aver identificato quale riga o elemento del report causa il problema, inseriscilo in un contenitore rettangolare. Questo è tutto. Ci ha aiutato molte volte! Le pagine extra sono principalmente causate da elementi del report che scorrono sul margine destro. Quando tutto il resto fallisce, mettere le cose dentro un rettangolo o un rettangolo vuoto a destra di un oggetto, può impedire che ciò accada. Buona fortuna là fuori!


Ha funzionato per me. Aggiungendo una colonna vuota in più nella tabella, il mio rapporto in formato pdf non mostra le pagine vuote extra ..!
lucciola

4

Hai provato a vedere se c'è spazio bianco sulla destra del tuo rapporto? In tal caso, puoi trascinarlo nuovamente alla fine del rapporto, quindi trascinare lo sfondo del rapporto nello stesso punto.


4

Nella scheda delle proprietà del rapporto (myReport.rdlc), modifica l'attributo "Mantieni insieme" su Falso. Ho lottato con questo problema per un po 'e questo sembra aver risolto il mio problema. inserisci qui la descrizione dell'immagine


3

Di recente ho ereditato un rapporto di cui avevo bisogno per apportare alcune modifiche. Dopo aver seguito tutte le raccomandazioni di cui sopra, non ha aiutato. Il rapporto storicamente aveva questa pagina in più, e nessuno poteva capire il perché.

Ho cliccato con il tasto destro sulla tablix e ho selezionato le proprietà. C'era una casella di spunta che diceva aggiungere un'interruzione di pagina dopo. Dopo averlo rimosso, viene ora stampato su una pagina.

inserisci qui la descrizione dell'immagine


2

Se il report include un sottoreport, la larghezza del sottoreport potrebbe spingere i confini del corpo se il sottoreport e la gerarchia possono crescere. Ho avuto un problema simile con un sottoreport che poteva essere collocato in una cella (su 2 colonne). Sembrava che lo span potesse contenerlo nella finestra di progettazione e che fosse riprodotto correttamente in una forma di win o in un browser e, in origine, poteva generare output della stampante (o file pdf) senza riversarsi sulle pagine in eccesso.
Quindi, dopo aver modificato alcune altre larghezze di colonna (e senza superare la larghezza del corpo più i margini), i rendering di winform e browser sembravano ancora buoni ma quando l'output (stampante o pdf) è stato generato, è cresciuto oltre i margini e ha scritto il lato destro di ciascuna pagina come seconda (quarta, ecc.) pagina. Potrei eliminare il mio problema aumentando colspan in cui è stato inserito il sottoreport.
Indipendentemente dal fatto che tu stia utilizzando o meno dei sottoreport, se hai lo spillover della pagina e il design del tuo corpo si adatta ai margini della pagina, cerca qualcosa che può crescere che spinga fuori la larghezza del corpo.


-3

Ho usato con successo pdftk per rimuovere pagine che non volevo / non avevo bisogno in pdf. Puoi scaricare il programma qui

Potresti provare qualcosa di simile al seguente. Tratto da qui sotto esempi

Rimuovere 'page 13' da in1.pdf per creare out1.pdf pdftk in.pdf cat 1-12 output 14-end out1.pdf

o:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.