Mají marže pro obsah, ale ne na pozadí na každé stránce při převodu/tisk HTML do PDF

0

Otázka

Já jsem pracoval na webové stránky, které potřebuje pro export obsahu z webové stránky jako pdf, ale musí respektovat následující podmínky:

  • Pozadí musí být plně tisknout na každé stránce
  • Obsah se nesmí překrývat pozadí

Protože webové stránky používají PHP jsem se pokusil použít mPDF, které jsem dříve používal na jiném PHP webové stránky, které měli stejné podmínky. mPDF ukázal, plné pozadí, na každé stránce souboru pdf, i když stránka nebyla zcela naplněna obsahem, a já jsem mohl nastavit okraje, které ovlivnily obsah, ale ne na pozadí, které se stále vztahuje na celou stránku.

Bohužel, mPDF není práce s tímto nové webové stránky, je velmi pravděpodobné, protože používá bootstrap a flex rozložení (to mě vrátil pdf s asi tisíc stránek, většinou prázdné, jiné s velmi přiblížil kousky stránce), na vrcholu se, že část obsahu je změnit pomocí javascriptu ještě předtím, než předloží ji uživateli a že nebyla vzata v úvahu tím, že mPDF (všiml jsem si, že když jsem odstranil bootstrap.css, které mi umožnilo vidět výsledek konverze).

Tak jsem přešel na loutkáře https://github.com/puppeteer/puppeteer která vytiskne obsah v pohodě používat chrome pod kapotou, ale mám nějaké otázky. První problém byl, že jsem nemohl tisknout plné pozadí na každé stránce, ale vyřešil jsem to při psaní na tuto otázku tím, že vytvoří div s position: fixed a width a height na 100% to funguje jako pozadí

Druhý problém je, že když jsem se nastavit okraje v loutkář (který na konci jsou stejné jako tisk marže v chrome), které mají vliv na pozadí (to byl problém i před vytvořením pevné div), takže nemůžu najít způsob, jak mít text nepřekrývá pozadí

Zde můžete vidět příklad: https://stackblitz.com/edit/web-platform-vlfqfz?file=index.html

Pokud si otevřete náhled na další kartě a zkuste vytisknout můžete vidět problém jsem čelí

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

Nejlepší odpověď

0

Takže, zdá se, že to není možné udělat to, co jsem přesně ptát na tuto otázku, tak jsem našla alternativní řešení.
Jsem řez horní a spodní část pozadí a používal je jako obrázky uvnitř loutkář záhlaví a zápatí. Chvíli to trvalo, aby se obrázky shodují s position: fixed div, že se chová jako pozadí (který nyní obsahuje pouze stranách pozadí), ale nastavení pevné šířky na tělo, dělal svou práci

2021-11-24 15:44:17

V jiných jazycích

Tato stránka je v jiných jazycích

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