web-dev-qa-db-fra.com

Enregistrer la page Web directement dans PDF en utilisant JS

Je souhaite enregistrer la page Web directement au format PDF.

Ce que j'ai fait, c'est-

<form>
    <input type=button name=print value="Print" onClick="window.print()">
</form>

Mais cela me donne la possibilité d'imprimer ou d'enregistrer la page au format PDF.

Mais ce que je veux, c'est quand je clique sur le bouton, il enregistre directement la page sous PDF ne montrant aucune option.

Existe-t-il une solution en JavaScript?

Merci d'avance pour votre aide.

17
Abrar Jahin

La réponse courte est non, vous ne pouvez pas empêcher les utilisateurs de voir l'option dans leur navigateur en utilisant simplement le javascript.

La réponse légèrement plus longue est que vous pouvez faire cela avec un peu plus que javascript.

En utilisant un service tel que html2canvas , vous pouvez envoyer une demande POST) à une page de votre serveur. Utilisez cette page pour convertir l'image en PDF et l'avoir sortir le fichier en téléchargement.

En supposant que vous utilisez PHP:

<?php
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='screen-shot.pdf'");
// The above headers will cause the file to automatically be downloaded.
// Use a library to convert the image to a PDF here.

Un exemple de bibliothèque pour convertir une image en un PDF est mPDF , ou TCPDF . Feel gratuit pour les autres Google, surtout si vous n'utilisez pas PHP.

Notez que cette solution est inférieure à leur choix, car la qualité ne sera certainement pas aussi agréable.

6
jperezov

Doit remarquer ici que la solution suggérée convertit le HTML en image puis l'image raster est convertie en PDF.

Si vous souhaitez enregistrer dans PDF qui est consultable (donc peut être archivé et imprimé avec la meilleure qualité) et le texte est imprimé clairement, alors vous devriez considérer l'une de ces options:

  1. Demander à l'utilisateur d'enregistrer la page dans PDF en fournissant des instructions pour le faire pour Google Chrome ou Safari (les deux navigateurs peuvent "imprimer" la page dans des fichiers PDF ). Vous pouvez peut-être même essayer d'afficher cette instruction et d'appeler la boîte de dialogue d'impression

  2. Utilisez certaines des bibliothèques javascript côté client pour générer PDF à partir des données avec l'outil comme jsPDF (gratuit, open source) ou similaire

4
Eugene