2017-02-08 6 views
-1

Ich versuche, über Webclient eine byte[] eines PDF-gerendert auf der Seite zu downloaden.Dowload-PDF nach dem Rendern HTML-Generierungsseite

This is the URL.

Das Problem, auf das ich stoße, ist, dass die obige Seite keine direkte Seite zur PDF ist, sondern eine Seite, die eine PDF erzeugt und rendert.

Wenn ich meinen Code verwenden:

WebClient labelDL = new WebClient(); 
// Récupération du fichier PDF 

Content = labelDL.DownloadData(_labelSLSResponse.LabelUrl); 

ich die byte [] im gewartet, aber es ist das byte [] des HTML-Inhalt (was ich interessiere mich nicht gerade).

Wie kann ich zuerst die URL rendern (wie in einem Browser, aber programmatisch) und nachdem es erzeugt wurde dann das Byte [] der PDF herunterladen, die gerendert wird?

Vielen Dank im Voraus für Ihre Hilfe, ist dort stecken ...

+1

Wenn ich 'diese URL GET', erhalte ich eine PDF sofort, kein HTML überhaupt. –

+0

Es gibt Werkzeuge wie Aspose, die PDFs zu einem Bild rendern. Oder es gibt z.B. [jsPDF] (https://github.com/MrRio/jsPDF), das PDF in HTML rendert. –

+0

Das erklärt was. Die URL generiert eine PDF. Wenn Sie den Webclient für die URL verwenden, erhalten Sie zuerst den HTML-Code. Ich habe bereits Tools, um ein PDF in das zu rendern, was ich will, das ist nicht meine Frage, aber danke – gstreetspirit

Antwort

0

ich endlich die Lösung gefunden.

In der Tat ist das Problem mit URL-Format verknüpft. Es ist eine neu geschriebene URL. Um von Webclient korrekt interpretiert zu werden, müssen Sie Header (User-Agent) wie bei einem Webbrowser erzwingen.

mit diesem Code:

WebClient labelDL = new WebClient(); 
     // Récupération du fichier PDF 

     labelDL.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 
     //string test = labelDL.DownloadString(_labelSLSResponse.LabelUrl); 
     Content = labelDL.DownloadData(_labelSLSResponse.LabelUrl); 

Es funktioniert endlich!

Vielen Dank für Ihre Zeit und Ihre Hilfe ...

Verwandte Themen