Como se livrar de páginas em branco em PDF exportadas do SSRS

194

Eu tenho um relatório do SSRS de duas páginas. Quando o exportei para PDF, ele estava ocupando 4 páginas devido à sua largura, onde a 2ª e a 4ª páginas exibiam um dos meus campos da tabela. Tentei definir o tamanho do layout nas propriedades do relatório como width = 18in e height = 8.5in.

Ele me deu a tabela inteira em uma única página de PDF, mas ainda estou deixando a segunda e a quarta páginas em branco.

A maneira como estou fazendo isso está incorreta? De que outra forma posso me livrar dessas páginas em branco?

Mark Hions
fonte

Respostas:

344

No BIDS ou SSDT-BI, faça o seguinte:

  1. Clique em Relatório> Propriedades do relatório> guia Layout (guia Configuração da página no SSDT-BI)
  2. Anote os valores para Largura da página , Margem esquerda , Margem direita
  3. Feche e volte à superfície de design
  4. Na janela Propriedades, selecione Corpo
  5. Clique no símbolo + para expandir o nó Tamanho
  6. Anote o valor para Largura

Para renderizar corretamente no PDF Largura do corpo + Margem esquerda + Margem direita deve ser menor ou igual à largura da página. Quando você vê páginas em branco sendo renderizadas, é quase sempre porque a largura do corpo mais as margens são maiores que a largura da página.

Lembre-se: (Largura do corpo + Margem esquerda + Margem direita) <= (Largura da página)

Nathan Griffiths
fonte
14
Não funciona A largura do meu corpo é menor que "Largura do relatório - margens". E ainda tenho uma tonelada de páginas em branco lá.
Adolf alho
2
@adolfgarlic Descobri que as configurações de largura da página nem sempre funcionam corretamente nas propriedades do relatório. Você já tentou arrastar manualmente a largura do relatório no Visual Studio? Isso resolveu esse problema para mim hoje depois de bater minha cabeça contra a parede por um bom tempo. Vale a pena verificar as larguras do cabeçalho / rodapé também, elas podem ser um pouco grandes demais.
Michael A
15
Descobri que a regra que funcionava aqui não era (largura do corpo + margem esquerda + margem direita) <= (largura da página), mas mais parecida com (largura do corpo + margem esquerda + margem direita) <(largura da página-1cm)
Jafin
3
Outra coisa a se notar é a altura do cabeçalho + corpo + rodapé + margem superior + inferior <Altura da página, caso contrário a página fluirá em várias páginas.
Desiguy 9/09/14
4
Quando você cria um relatório pela primeira vez, o construtor executa uma área branca (o "Corpo" mencionado por Nathan) em toda a largura da tela para colocar coisas. Normalmente, essa área branca tem 17 polegadas de largura em uma tela de caixa de correio mais recente. O que não é intuitivamente óbvio é que este é considerado um objeto imprimível e precisa ser reduzido à largura do material que você coloca nele. Se você não fizer isso, receberá páginas em branco, independentemente de todas as outras coisas mencionadas por todos.
BobRodes
112

Outra coisa é tentar definir a propriedade relatório chamado ConsumeContainerWhitespacepara True(o padrão é false). Foi assim que foi resolvido para mim.

Crisálida
fonte
2
Sim, funcionou para mim também. Eu tenho um contêiner com um tablix com grupos de colunas. Claramente, o contêiner estava crescendo para conter os grupos de colunas e, sem consumir o espaço em branco do contêiner, ele excederia o limite da página.
Ciarán 21/01
4
Esta foi certamente a chave para mim. Eu sempre utilizo a resposta aceita por Nathan, com resultados mistos. Em todos os casos em que a solução de Nathan não resolveu o problema, este fez o truque. Esteja ciente de que você ainda deve utilizar o que Nathan sugere.
bojingo
SIM x100! É uma pena que você não possa ter 2 "respostas aceitas", porque parece que o curso adequado é uma combinação disso e do aceito. Parabéns a você!
NateJ 31/08/16
2
Opa, pegue de volta. Estou usando o VS 2017 SSRS / SSDT; Demorei um pouco para descobrir que você precisa usar a janela Propriedades para encontrar esse recurso, não a Report Properties...caixa de diálogo.
precisa saber é o seguinte
1
que funcionou para mim depois de lutar por um tempo ... muito obrigado
Joel_J
28

Depois de horas lutando com esse problema, me deparei com uma solução que funcionava para mim:

No SSDT (2012), eu originalmente tinha minhas unidades Page Setup / Page definidas em Centímetros. Quando mudei isso para Polegadas, estranhamente, consegui exportar meu relatório para PDF sem que todas as outras páginas estivessem em branco.

insira a descrição da imagem aqui

sion_corn
fonte
Isso funcionou para mim perfeitamente. Alterar polegadas para Cm funcionará ou vice-versa, mas não há necessidade de manter o Cm. Mais uma coisa é, é necessário definir margens para pelo menos 1 cm, em seguida, o relatório será gerado sem página em branco adicional.
Ravi Shankar
21

É melhor fazer isso na superfície de design (o Visual Studio 2012 é mostrado, mas pode ser feito em outras versões ) antes de calcular qualquer matemática ao editar um documento SSRS.

Abaixo dos seguintes números em círculos vermelhos que são mapeados para as seguintes etapas:

  1. Na superfície de design, algumas vezes o editor cria um pagetamanho maior que os controles reais; daí a área fantasma sendo impressa.
  2. Redimensione para os controles. Observe visualmente a largura / altura e veja se você não pode trazer a página na superfície de design para dimensioná-la no espaço realmente necessário pelos controles e não mais.
  3. Em seguida, tente criar um PDF e veja se isso o corrige.
  4. Se o nº 3 não resolver o problema, existem controles que exigem muito do tamanho real da página e são revisados em comprimento / largura. Portanto, é necessário diminuir o tamanho dos controles para acomodar um tamanho de página menor.

Etapas para corrigir manualmente


Além disso, em algumas circunstâncias, é possível alterar uma propriedade da página do relatório configurando ConsumeContainerWhitespacepara trueconsumir automaticamente os espaços.

ΩmegaMan
fonte
2
Obrigado! Eu sabia que tinha que ser mais simples do que passar por números e fazer contas. Eu não sabia que estava imprimindo espaço em branco apenas porque o corpo do relatório era muito grande.
Tor
Definir ConsumeContainerWhitespace como true fez isso por mim. Eu já tinha limpado o meu relatório, larguras corpo, e mesa embora
Jon Dosmann
18

O problema para mim foi que o SSRS trata propositadamente seu espaço em branco como se você pretendesse que fosse honrado:

insira a descrição da imagem aqui

Além de espaço em branco, verifique se não há margem certa.

Jeremy Thompson
fonte
1
Olá @ jeremy-thompson, sua dica é muito útil. Cheers
Andy K
1
A remoção da margem certa funcionou para mim e não afetou a renderização no visualizador de relatórios da Web ou no PDF.
precisa saber é o seguinte
1
5 anos depois, este foi o único para mim.
MPJ567
17

Se as páginas estiverem em branco provenientes do SSRS, você precisará ajustar o layout do seu relatório. Isso será muito mais eficiente do que executar a saída e pós-processo para reparar os efeitos colaterais de um problema de layout.

O SSRS é muito exigente quando se trata de ultrapassar os limites das margens. É fácil ampliar / prolongar acidentalmente o relatório apenas ajustando a caixa de texto ou outro controle no relatório. Verifique as propriedades de largura e altura da superfície do relatório com cuidado e aperte-as o máximo possível. Cuidado com os cabeçalhos e rodapés grandes.

HectorMac
fonte
5

Além das margens, o problema mais comum de longe, também vi duas possibilidades adicionais:

  1. Usando +para concatenar o texto. Você deve usar em seu &lugar.
  2. Texto excedendo a largura da caixa de texto especificada. Portanto, se sua caixa de texto tiver apenas 30 caracteres e você tentar amontoar 300, poderá acabar com páginas extras.
Joshua Drake
fonte
5

Trabalho com o SSRS há mais de 10 anos e as respostas acima são para as respostas. MAS. Se nada funcionar e você estiver completamente cheio ... remova os itens do relatório até que o problema desapareça. Depois de identificar qual item de linha ou relatório está causando o problema, coloque-o dentro de um contêiner de retângulo. É isso aí. Nos ajudou muitas e muitas vezes! Páginas extras são causadas principalmente por itens de relatório que fluem pela margem direita. Quando tudo mais falhar, colocar coisas dentro de um retângulo ou de um retângulo vazio à direita de um item pode impedir que isso aconteça. Boa sorte lá fora!

LucasF
fonte
Funcionou para mim. Ao adicionar uma coluna vazia extra à tabela, meu relatório em formato pdf não mostra as páginas em branco extras ..!
Firefly
4

Você tentou ver se há algum espaço em branco à direita do seu relatório? Nesse caso, você pode arrastá-lo de volta para o final do seu relatório e depois arrastar o plano de fundo do relatório de volta para o mesmo local.

user2585349
fonte
4

Na guia de propriedades do relatório (myReport.rdlc), altere o atributo "Keep Together" para False. Estou lutando com esse problema há um tempo e isso parece ter resolvido meu problema. insira a descrição da imagem aqui

Omar
fonte
2

Se o seu relatório incluir um sub-relatório, a largura do sub-relatório poderá ultrapassar os limites do corpo se o sub-relatório e a hierarquia puderem crescer. Eu tive um problema semelhante com um sub-relatório que poderia ser colocado em uma célula (abrangendo 2 colunas). Parecia que a extensão poderia contê-lo no designer e renderizada com precisão em um winform ou em um navegador e, originalmente, poderia gerar a saída da impressora (ou arquivo pdf) sem derramar sobre o excesso de páginas.
Depois de alterar algumas outras larguras de coluna (e sem exceder a largura do corpo mais as margens), as renderizações do winform e do navegador ainda pareciam boas, mas quando a saída (impressora ou pdf) era gerada, ela ultrapassava as margens e escrevia no lado direito de cada página como uma segunda (quarta, etc.) página. Eu poderia eliminar meu problema aumentando o colspan onde o sub-relatório foi colocado.
Independentemente de você estar usando sub-relatórios, se você tem a propagação da página e o design do seu corpo se encaixa nas margens da página, procure algo que permita crescer, que empurre a largura do corpo.

Bill1260231
fonte
2

Recentemente, herdei um relatório que precisava fazer algumas alterações. Depois de seguir todas as recomendações acima, não ajudou. O relatório historicamente tinha essa página extra, e ninguém conseguia descobrir o porquê.

Cliquei com o botão direito do mouse no tablix e selecionei as propriedades. Havia uma caixa de seleção marcada que dizia adicionar uma quebra de página depois. Depois de removê-lo, ele será impresso em uma página agora.

insira a descrição da imagem aqui

crh225
fonte
-3

Usei com êxito o pdftk para remover páginas que eu não queria / precisava em pdfs. Você pode baixar o programa aqui

Você pode tentar algo como o seguinte. Retirado daqui em exemplos

Remova a 'página 13' de in1.pdf para criar out1.pdf pdftk in.pdf cat 1-12 14-end output out1.pdf

ou:

pdftk A = in1.pdf cat A1-12 A14 - saída final1.pdf

vinc456
fonte