mygems

Como converter um CSV em PDF

Um CSV não tem páginas e um PDF é só páginas, por isso as colunas saem pela borda. Veja como decidir o que entra antes de converter.

Por uos ·

O motivo de isso ser chato é que um CSV não tem página. Ele é uma grade sem limites, enquanto um PDF é uma pilha de retângulos fixos. Toda conversão precisa decidir onde cortar, e toda ferramenta que faz isso mal toma a mesma decisão: corta onde o papel acaba e deixa as colunas restantes caírem pela borda direita.

Então a pergunta útil não é "como converter", já que quase qualquer coisa gera um arquivo, mas quais colunas e quais linhas realmente vão para o PDF. Responda isso primeiro e a conversão fica trivial.

Antes de converter: reduza o arquivo

Um PDF de 40.000 linhas não é um documento, é um erro com tamanho de arquivo. Ninguém abre a página 612. Se o destinatário precisa de todas as linhas, envie o CSV.

O PDF é o formato certo quando a saída é para ser lida e não processada, o que significa que ela deve ser:

  • Filtrada. As linhas relevantes para este destinatário, não a exportação inteira.
  • Estreita. De seis a dez colunas cabem com legibilidade numa página A4 em paisagem. Quinze não cabem, em nenhum tamanho de fonte que uma pessoa vá ler.
  • Resumida, com frequência. Um GROUP BY que transforma 40.000 linhas em 30 costuma ser o documento que realmente se queria.

Fazer isso antes da conversão é toda a diferença entre um relatório utilizável e 600 páginas de grade cortada.

Orientação e largura das colunas

Duas configurações decidem se o resultado fica legível, e as duas vêm erradas por padrão.

Paisagem, sempre, a menos que o arquivo tenha menos de cinco colunas. Em retrato, um A4 comporta cerca de seis colunas estreitas; em paisagem, dez.

Ajustar à largura, não a uma porcentagem. Toda planilha tem isso e quase ninguém encontra: no Excel fica em Layout da Página → Dimensionar para Ajustar → Largura: 1 página. Sem isso, as colunas da onze em diante são impressas num conjunto próprio de páginas depois da última linha, e é assim que você acaba com um PDF de 40 páginas para uma tabela de 12.

Depois, duas coisas que vale configurar uma vez só:

  • Repetir a linha de cabeçalho em todas as páginas. O Excel chama isso de Imprimir Títulos → Linhas a repetir na parte superior. Uma tabela cujo cabeçalho aparece só na primeira página fica ilegível a partir da segunda.
  • Ativar as linhas de grade. Elas vêm desligadas na impressão, e uma tabela larga sem elas é muito difícil de acompanhar na horizontal.

Os caminhos, por situação

De uma planilha, no computador

Abra o CSV, aplique as configurações acima e depois Imprimir → Salvar como PDF. É o resultado de melhor aparência entre todos os métodos aqui, e o único em que dá para colocar título e número de página sem escrever código.

Mas atenção à importação: ao abrir um CSV, o Excel converte tudo que parece uma data, e um PDF é um registro permanente desse erro. Uma coluna de IDs de pedido que chega como 43831 era 2020-01-01 no arquivo. Importe como texto se os dados tiverem IDs, zeros à esquerda ou números longos.

Pela linha de comando

Para uma tabela simples e correta, sem decisões de estilo:

csvlook data.csv | enscript -B -f Courier8 -o - | ps2pdf - out.pdf

Mais prático, se você quer controlar o layout, é passar pelo HTML. Todo sistema tem um navegador headless e os navegadores são excelentes em paginar tabelas:

csvtomd data.csv > table.md
pandoc table.md -o out.pdf

A vantagem do caminho via HTML é que @page { size: A4 landscape } e thead { display: table-header-group } numa folha de estilo dão exatamente as duas coisas que as planilhas enterram em caixas de diálogo: orientação e cabeçalhos repetidos.

Pelo celular

É aqui que a conversão realmente aparece: o arquivo está no seu e-mail, quem precisa dele quer algo que dê para ler na tela sem um aplicativo de planilha, e você não está perto de um notebook.

O essencial é o mesmo de sempre: filtrar e reduzir as colunas antes de exportar. Um PDF do tamanho de um celular com cinco colunas e quarenta linhas é uma boa entrega. Um PDF do arquivo inteiro, não.

CSV File Viewer - Smart CSViPhone e iPad · Android

Converte direto para PDF, com as colunas e o estilo da exportação escolhidos em vez de herdados. O editor visual de filtros ou uma consulta SQL reduzem antes o arquivo às linhas que valem a impressão, e esse é o passo que decide se o PDF fica legível.

O que ele faz

Quando o PDF é a resposta errada

Três casos, que cobrem a maioria dos pedidos.

"Para que possam abrir sem o Excel." Eles já podem: um CSV abre no Bloco de Notas, no TextEdit, em qualquer navegador, no Google Planilhas, no Numbers e em todo celular. Se a preocupação é que fique feio, a solução costuma ser um arquivo mais estreito, não outro formato.

"Para que não possam alterar." Um PDF não é somente leitura em nenhum sentido relevante. É trivial de editar e trivial de extrair. Se o requisito é integridade, a resposta é uma assinatura ou um checksum, não um formato de arquivo.

"Para que possam usar os dados." O PDF é o pior contêiner possível para dados tabulares, e tirá-los de lá é uma tarefa em torno da qual existe toda uma indústria. Se o destinatário vai fazer qualquer coisa com os números, envie o CSV e, junto, um PDF de resumo.

Os casos genuínos para PDF: algo que será impresso, algo que será arquivado com paginação fixa, algo que será anexado a um registro formal ou algo cujo layout precisa sobreviver a um encaminhamento.

Fazendo parecer um relatório

Quatro coisas, em ordem de quanto melhoram o resultado:

  1. Alinhe números à direita e texto à esquerda. Nada muda tanto a legibilidade, e é uma única configuração.
  2. Fixe as casas decimais. Uma coluna que mistura 1.5 e 1.4999999 parece desleixada e geralmente é um artefato de ponto flutuante, não precisão real.
  3. Adicione cabeçalho e rodapé. Título, a data que os dados cobrem (não a data em que você imprimiu) e números de página.
  4. Diga o que é o arquivo. Uma linha no topo: a fonte, o filtro aplicado, a contagem de linhas. Seis meses depois, isso é a diferença entre um documento e um mistério.
CSV Editor - Smart CSViPhone e iPad

Quando o arquivo precisa de ajustes antes de sair, seja uma coluna arredondada, um total calculado ou linhas excluídas, as colunas de fórmula resolvem no celular. O resultado é salvo dentro do CSV, então os números são os mesmos em qualquer programa que imprima.

O que ele faz

Gráficos em vez de tabelas

Vale perguntar antes de converter qualquer coisa: o destinatário quer as linhas ou a forma? Uma tendência de doze meses é uma linha, e uma tabela de doze meses é uma linha pior que leva mais tempo para ler.

A versão mais forte deste documento costuma ser um gráfico na primeira página e a tabela resumida atrás dele, o que é trabalho de dois minutos em qualquer ferramenta capaz de produzir os dois, e bem mais útil do que qualquer um dos dois sozinho.

Perguntas

Como converto um arquivo CSV em PDF?
Abra-o numa planilha, defina orientação paisagem e 'ajustar à largura: 1 página', ative a repetição das linhas de cabeçalho e as linhas de grade e depois imprima em PDF. Na linha de comando, converta para HTML ou Markdown e deixe um navegador ou o pandoc paginar. No celular, um aplicativo que exporta PDF diretamente faz isso em alguns toques. Nos três casos, filtrar o arquivo antes é o que decide se o resultado fica legível.
Por que minhas colunas ficam cortadas no PDF?
Porque a escala de impressão vem em 100% por padrão, então o que passa da largura da página é impresso num conjunto separado de páginas depois da última linha, em vez de ser reduzido. Defina 'ajustar à largura: 1 página'; no Excel fica em Layout da Página → Dimensionar para Ajustar. Se a tabela ainda não puder ser lida nesse tamanho, o arquivo tem colunas demais para uma página e precisa ser estreitado, não encolhido.
Como repito a linha de cabeçalho em todas as páginas do PDF?
No Excel é Layout da Página → Imprimir Títulos → 'Linhas a repetir na parte superior', apontando para a linha de cabeçalho. No Google Planilhas é Imprimir → Cabeçalhos e rodapés → Repetir linhas congeladas. Numa conversão baseada em HTML, colocar o cabeçalho num `thead` e definir `display: table-header-group` faz a mesma coisa.
Devo enviar um PDF ou o CSV?
Envie o CSV se o destinatário vai fazer qualquer coisa com os números, porque o PDF é o contêiner do qual é mais difícil recuperar dados tabulares. Envie um PDF quando a saída for para ser lida, impressa ou arquivada com paginação fixa. Um PDF não torna os dados não editáveis, então não é a resposta se a preocupação é integridade.
Quantas linhas devem ir numa exportação de CSV para PDF?
O mínimo que responda à pergunta. Um PDF com dezenas de milhares de linhas não é um documento que alguém leia além da primeira página. Filtre para as linhas relevantes ou resuma com um GROUP BY. Trinta linhas de resumo e um gráfico costumam ser o que realmente se queria, e o arquivo completo é melhor anexado como o CSV original.
Por que minhas datas e IDs mudaram no PDF?
A planilha os converteu na importação, antes de o PDF existir. IDs de pedido viram datas seriais, números longos viram notação científica e os zeros à esquerda somem. Importe o CSV como texto em vez de deixar as colunas serem detectadas automaticamente, ou converta com uma ferramenta que não reinterprete os valores. O PDF registra permanentemente qualquer erro ocorrido antes.

uos — Desenvolvo o Smart CSV Viewer, que exporta PDF, então a dúvida sobre o que deve e o que não deve entrar num PDF aparece com frequência.