Estou trabalhando em um site que precisa para exportar o conteúdo de uma página da web como um arquivo pdf, mas tem de respeitar as seguintes condições:
- O fundo tem que ser totalmente impresso em cada página
- O conteúdo não deve sobrepor-se o plano de fundo
Desde que o site usa PHP eu tentei usar o mPDF que eu usei anteriormente em outro PHP site que tinha as mesmas condições. mPDF mostrou o completo plano de fundo em cada página do arquivo pdf, mesmo quando a página não foi completamente preenchido com o conteúdo e que eu poderia definir margens, que afetou o conteúdo, mas não a fundo o que ainda cobria toda a página.
Infelizmente, mPDF não é trabalhar com este novo site, muito provavelmente porque ele usa bootstrap e flex layouts (ele me devolveu um pdf com cerca de mil páginas, principalmente em branco, outros com muito ampliada em pedaços de página), em cima de que parte do conteúdo é alterado pelo javascript antes de apresentá-lo para o usuário e que não foi levado em conta pelo mPDF (notei que foi quando eu removido bootstrap.css o que me permitiu ver o resultado da conversão).
Então eu mudei para marionetista https://github.com/puppeteer/puppeteer o que imprime o conteúdo bem a usar o chrome sob o capô, mas estou tendo alguns problemas.
O primeiro problema foi que eu não conseguia imprimir o plano de fundo em cada página, mas eu resolvi que ao escrever esta questão através da criação de uma div com position: fixed
e width
e height
no 100%
que funciona como pano de fundo
O segundo problema é que quando eu definir as margens em puppeteer (que, no final, são as mesmas margens de impressão no chrome) que afetam o plano de fundo também (isso foi um problema, mesmo antes de criar o fixo div), de modo que eu não consigo encontrar uma forma para que o texto não se sobrepõem ao fundo
Aqui você pode ver um exemplo: https://stackblitz.com/edit/web-platform-vlfqfz?file=index.html
Se você abrir a visualização em outra aba e tente imprimi-lo, você pode ver o problema que estou enfrentando