6
votes

Enregistrer la table HTML comme une image

J'ai un site Web que je suis en construction qui prend des données (nom de la personne) à partir d'un formulaire et la publie dans une "note" personnalisée dans une table de la page suivante. Je souhaite que l'utilisateur puisse ensuite enregistrer leur "note" comme une image avec leur nom personnalisé dessus. Existe-t-il un moyen d'enregistrer une table HTML spécifique en tant que PNG? Peut-être prendre une capture d'écran d'une coordonnée spécifique sur une page Web?

Si ce n'est pas un moyen de repasser de contenu PHP affiché du formulaire dans une toile HTML?

Toute aide serait formidable. Je suis dans un peu sur ma tête en ce moment.


1 commentaires

Regardez les fonctions d'image intégrées de PHP: NZ.PHP.net/ Manuel / fr / refs.utilspec.image.php


5 Réponses :


1
votes

Solution fonctionnelle

  • Utilisez FPDF pour créer PDF à partir de HTML (Table)
  • Utilisez ImageMagick pour convertir PDF en PNG

0 commentaires

0
votes

Vous pouvez utiliser quelque chose comme HTML2PS


0 commentaires

0
votes

Vous pouvez également utiliser XVFB . C'est un paquet Linux. Il signifie "tampon de cadre virtuel X-window" (si vous vous demandiez pourquoi, il avait un nom aussi ésotérique).

Qu'est-ce que cela va faire, est chargé une page, exécutez n'importe quel JavaScript et appliquez les différentes styles de CSS, le tout dans la mémoire tampon du serveur. Ensuite, vous pouvez enregistrer l'image.

XVFB ne sera probablement pas disponible sur la plupart des services d'hébergement partagés, cependant, si cela n'a pas d'importance, ce serait une solution viable.


0 commentaires

5
votes

Bien que vous puissiez rendu HTML à l'aide d'une variété d'outils, vous ne pouvez pas être sûr que ces outils rendront le code HTML de la même manière que votre navigateur le rend.

Si votre objectif final est de Générer une image avec du texte sur celui-ci em> strong>, puis résolvons ce problème au lieu d'essayer de faire la solution que vous avez suggéré de travailler. p>

regarder sur PHP 'A Href = "HTTP : //www.php.net/manual/fr/function.imagettetftext.php "rel =" nfollow NOREFERRER "> ImageTtFtext () fonction. Il contient un exemple # 1 em> qui crée une image simple et simple du texte qui peut être stockée dans n'importe quelle variable ... y compris une variable de forme. P>

En utilisant cet exemple, et en ajoutant quelques autres de Fonctions GD de PHP , vous pouvez faire une décente Réplique d'une table et assurez-vous qu'il ressemble exactement à la façon dont vous le souhaitez, plutôt que de la manière dont HTML2PS ou un autre outil le rend. p>

<?php
// Set the content-type
header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = isset($_POST['name']) ? $_POST['name'] : "name";
// Replace path by your own font path
$font = 'arial.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>


3 commentaires

Je pense que le serveur informatique est un overkillant pour cette tâche, qui peut être accompli de manière beaucoup plus simple avec la bibliothèque suggérée par @anber. Exemple ici jsfiddle.net/arthurcamara/6phhb5g9


@Arthurcamara - Je suis d'accord sur le fait que ce côté client fait une solution plus propre, mais la question de l'OP était spécifiquement sur la manière de générer un PNG dans PHP.


Je pense que sa question était de générer un PNG avec la table. et "sinon y a-t-il un moyen de rendre PHP affiché". Donc, PHP était une 2ème option, comme il devrait être :)



3
votes

Vous pouvez essayer Cette bibliothèque JS sur le côté du client.


3 commentaires

Pour moi, c'est une solution beaucoup plus propre. Exemple Jsfiddle avec la bibliothèque suggérée (HTML2CANVAS) ici: jsfiddle.net/arthurcamara/6phhb5g9


C'est une bibliothèque utile. Ce serait également génial si cette réponse a fourni le contexte pour le lien et a répondu à l'exigence énoncée dans la question suivante: " Je veux que l'utilisateur puisse ensuite sauvegarder leur "note" comme une image avec leur nom personnalisé sur celui-ci. "


D'accord avec @ghoti :) Plus de contexte et une réponse plus profonde serait génial. Une note avec leur nom personnalisé sur l'image est également possible avec la toile, il ne devrait donc pas être de problème avec une solution côté client pour cela.