Avoir des marges pour le contenu mais pas d'arrière-plan sur chaque page lors de la conversion/d'impression de code HTML vers PDF

0

La question

Je suis en train de travailler sur un site web qui a besoin d'exporter le contenu d'une page web en format pdf, mais il doit respecter les conditions suivantes:

  • L'arrière-plan doit être imprimé sur chaque page
  • Le contenu ne doivent pas se superposer à l'arrière-plan

Depuis, le site utilise PHP, j'ai essayé d'utiliser mPDF que j'ai déjà utilisé sur un autre site PHP qui avait les mêmes conditions. mPDF a montré un arrière-plan sur chaque page du fichier pdf, même lorsque la page n'a pas été complètement rempli avec du contenu et j'ai pu définir des marges qui a affecté le contenu, mais pas le fond qui est toujours couvert l'ensemble de la page.

Malheureusement, mPDF est de ne pas travailler avec ce nouveau site, très probablement parce qu'il utilise bootstrap et flex mises en page (il me fit un pdf avec environ un millier de pages, la plupart vides, d'autres avec de très agrandie en morceaux de la page), sur le dessus de la partie du contenu est modifié par javascript avant de le présenter à l'utilisateur et qui n'a pas été prise en compte par mPDF (j'ai remarqué que c'était quand je l'ai enlevé de bootstrap.css qui m'a permis de voir le résultat de la conversion).

Donc je suis passé à marionnettiste https://github.com/puppeteer/puppeteer qui imprime le contenu de l'amende à l'aide de chrome sous le capot, mais je vais avoir quelques problèmes. Le premier problème était que je ne pouvais pas imprimer un arrière-plan sur toutes les pages, mais je l'ai résolu lors de l'écriture de cette question par la création d'un div avec position: fixed et width et height au 100% qui fonctionne comme arrière-plan

Le deuxième problème est que lorsque j'ai mis les marges du marionnettiste (qui à la fin sont les mêmes que l'impression des marges dans google chrome), ils touchent le fond trop (c'était un problème avant même la création de l'fixe div) donc je ne peux pas trouver un moyen d'avoir le texte se chevauchent pas l'arrière-plan

Ici vous pouvez voir un exemple: https://stackblitz.com/edit/web-platform-vlfqfz?file=index.html

Si vous ouvrez l'aperçu dans un autre onglet et essayez de l'imprimer, vous pouvez voir la question que je me pose

google-chrome printing puppeteer
2021-11-23 10:09:26
1

La meilleure réponse

0

Donc, apparemment, il n'est pas possible de faire ce que j'étais exactement de poser cette question, j'ai donc trouvé une autre solution.
J'ai coupé la partie supérieure et inférieure de l'arrière-plan et les ont utilisés comme des images à l'intérieur d'un montreur d'en-tête et pied de page. Il a fallu un certain temps pour réaliser les images de coïncider avec l' position: fixed div qui sert d'arrière-plan (qui ne contient plus que les côtés de l'arrière-plan) mais la définition d'une largeur fixe sur le corps fait la job

2021-11-24 15:44:17

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................