Créer un fichier pdf avec wkhtmltopdf et de rendu javascript
Je suis d'essayer de créer un fichier PDF du javascript graphique que j'ai dans un modèle de fenêtre (ma carte est une combinaison de javascript et de css dans un .aspx vue). La seule chose dans le rendu du fichier PDF est le contenu statique à partir de la fenêtre, le javascript graphique n'est pas là.
Mon appel pour créer le PDF est comme suit:
public byte[] WKHtmlToPdf(string url)
{
var fileName = " - ";
var wkhtmlDir = "C:\\Temp\\wkhtml";
var wkhtml = "C:\\Temp\\wkhtml\\wkhtmltopdf.exe";
var p = new Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = wkhtml;
p.StartInfo.WorkingDirectory = wkhtmlDir;
string switches = "";
switches += "--print-media-type ";
switches += "--margin-top 0mm --margin-bottom 0mm --margin-right 0mm --margin-left 0mm ";
switches += "--page-size Letter ";
p.StartInfo.Arguments = switches + " " + url + " " + fileName;
p.Start();
//read output
byte[] buffer = new byte[32768];
byte[] file;
using (var ms = new MemoryStream())
{
while (true)
{
int read = p.StandardOutput.BaseStream.Read(buffer, 0, buffer.Length);
if (read <= 0)
{
break;
}
ms.Write(buffer, 0, read);
}
file = ms.ToArray();
}
//wait or exit
p.WaitForExit(60000);
//read the exit code, close process
int returnCode = p.ExitCode;
p.Close();
return returnCode == 0 ? file : null;
}
Des idées sur comment je pourrais prendre le javascript graphique? Peut-être l' .Net version serait plus approprié ou je dois enregistrer la page générée dans un fichier et le passer dans l'outil.
Grâce.
J'ai eu ce problème et fixe, en assurant j'ai été en utilisant wkhtmltopdf 0.9.9. Le "gem install" version (0.8.3) n'était pas le couper.
OriginalL'auteur Zero Cool | 2011-08-04
Vous devez vous connecter pour publier un commentaire.
Dans notre projet, nous faire quelque chose de similaires, avec succès. Nous utilisons wkhtmltopdf 0.9.9 en combinaison avec Highcharts pour le moment. Avec jQuery flot nous avons eu trop de succès après un peu de peaufinage. Dans notre projet, nous avons d'abord rendre la vue à une chaîne de caractères et la transmettre à la wkhtml en utilisant son stdin. Ensuite, nous prenons le stdout de wkhtml et transmettre au navigateur.
Votre wkhtml-paramètre semble être de droite, sauf que nous utilisons stdin et stdout. Ne sais pas si cela peut être un problème.
Si vous utilisez l'une de ces cartes, je pense que je peux vous aider. Ce graphique que vous utilisez?
Une dernière remarque: Wkhtmltopdf 0.10rc2 semble avoir quelques problèmes de chargement de ressources externes (js/css) à partir de localhost lors de l'utilisation d'un numéro de port différent du port 80.
Réussi à le faire fonctionner, en gros, j'ai ouvert un cachée du navigateur de la fenêtre de la désactivation des animations, enregistré une image du graphique, puis créé une chaîne html avec l'image à l'intérieur pour le rendu au format PDF.
Vous avez mentionné que déchirante vue de chaîne? comment faire? J'ai un javascript et dynamique de la ligne de tendance graphique (à partir de highchart) le rendu. Mais le tableau lui-même n'est pas indiqué sur le pdf. Les pointeurs?
OriginalL'auteur Rick van Hal
Il semble que vous essayez d'obtenir la sortie d'un tableau, qui à en juger par les balises à partir d'un Extjs 4 script.
L'ext script est probablement à l'aide de certains de la carte de l'animation, et sera certainement en attente pour les événements javascript à exécuter et afficher le graphique. C'est probablement, par conséquent, ne se fait pas par le temps, le temps par défaut (200 ms) est effectuée.
Une solution rapide serait d'ajouter le code javascript-retard de la page option de la ligne de commande:
wkhtmltopdf http://dev.sencha.com/deploy/ext-4.0.2a/examples/charts/Mixed.html --javascript-delay=2000 test.pdf
va certainement travailler sur *nix, et que la même chose devrait fonctionner sur windows.OriginalL'auteur Simon Elliston Ball
J'ai été en utilisant wkhtmltopdf 0.9.9 et la pdfkit ruby gem, et d'avoir un problème similaire.
Je l'ai corrigé en changeant toutes les balises à utiliser des url absolues. Il semble que wkhtmltopdf ne savais pas ce que l'url de la page est accessible via de manière relative les ressources n'étaient pas en cours de chargement. Je ne sais pas si c'est une limitation de la pdfkit ou wkhtmltopdf.
J'ai eu l'idée de https://github.com/mileszs/wicked_pdf.
OriginalL'auteur Dan Benamy