Question

J'ai une exigence de projet pour rendre HTML et de capturer l'image rendue dans un fichier sur un CentOS sans tête 5.4 serveur. Mes exigences spécifiques sont:

1) L'entrée sera une URL de la page pour rendre (ou file: // URL d'un fichier HTML local), la sortie sera un fichier d'image contenant l'image rendu de la page
 2) CSS doit être pris en charge par le moteur de rendu jusqu'au niveau-1 CSS
 3) Les images statiques dans la page doivent être affichés correctement dans l'image rendue, y compris la couleur transparente .GIF ou .PNG
 4) Doit être capable de fonctionner sur un CentOS sans tête 5.4 du serveur.
 5) Solution ne doit pas dépendre d'un produit ou d'un composant qui est pas libre pour un usage commercial

Je ne suis pas besoin de faire quoi que ce soit avec la page autre que d'obtenir la capture d'écran et l'enregistrer dans une image. La partie la plus difficile semble faire cela dans un environnement sans tête. Certaines des solutions que je l'ai vu discuté besoin d'un écran pour travailler.

Toutes les suggestions?

Merci à l'avance, Jim

SOLUTION: J'ai fini à l'aide de la bibliothèque Standard Widget Toolkit (de www.eclipse.org/swt) pour ses capacités de navigateur intégré. Cela m'a permis d'ouvrir une fenêtre avec programmation d'un contrôle du navigateur en elle, afficher la page, puis saisir le contenu de la fenêtre dans un fichier d'image (généralement un PNG). Le seul inconvénient de cette approche qui ne peut être évité est un « scintillement » lorsque la fenêtre doit être visible pour un moment afin de faire la capture d'écran. Je peux vivre avec ça. Le reste était code juste pour initialiser les objets SWT qui obtiennent des ressources système, un écouteur pour vérifier une réussite de la charge de la page, et un code pour nettoyer une connexion hung (lorsque la charge de la page ne se termine jamais pour une raison quelconque).

Je suis un coéquipier à jouer avec xvfb (X Virtual Frame Buffer) sur CentOS Linux. Les premiers tests semblent fonctionner, il ressemble à l'avis de l'affiche ci-dessous (qui a dit d'essayer xvfb) peut être une solution viable pour la partie serveur sans tête de ma question.

Était-ce utile?

La solution

Vous pouvez commencer un environnement Windows X virtuel en utilisant xvfb. Vous pouvez maintenant lancer un navigateur régulier pour afficher la page et utiliser un utilitaire de screencapture pour capturer le contenu de la fenêtre. Il est pas joli, mais straghtforward à faire.

WebKit est open-source et embarquable, vous pouvez peut-être utiliser dans une petite application native pour rendre sur une toile et de l'enregistrer sur le disque?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top