9 Stimmen

Erstellen von pdf mit wkhtmltopdf und Rendering-Javascript

Ich versuche, eine PDF-Datei eines Javascript-Diagramms zu erstellen, die ich in einem Modellfenster habe (mein Diagramm ist eine Kombination aus Javascript und CSS in einer .aspx-Ansicht). Das einzige, was in der gerenderten PDF-Datei ist der statische Inhalt aus dem Fenster, das eigentliche Javascript-Diagramm ist nicht da.

Mein Aufruf zur Erstellung der PDF-Datei lautet wie folgt:

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;
    }

Irgendwelche Ideen, wie ich das Javascript-Diagramm abrufen könnte? Vielleicht wäre die .Net-Version besser geeignet oder ich muss die generierte Seite in einer Datei speichern und diese an das Tool übergeben.

Danke.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X