2017-10-31 2 views
0

Die Website, die ich geschrieben habe, erfordert eine Convert-Webseite in PDF-Funktionalität. Nachdem ich die Optionen angeschaut hatte, sah HiQPdf wie die beste Option aus und tat alles, was benötigt wurde. Momentan nutze ich die kostenlose Version, bis die Tests abgeschlossen sind.HiQPdf nicht finden die CSS

Folgen Sie den Anweisungen, erstellen Sie die Webseite und übergeben Sie sie an den PDF-Ersteller zusammen mit einem Speicherort, um alle verknüpften Elemente (hauptsächlich css) zu finden. Der Code lautet

var model = new SomeKindOfModel 
{ 
    SetSomeStuff = stuff 
}; 

string htmlToConvert = RenderRazorViews.RenderViewAsString(ControllerContext, "Print", model); 
string baseUri = $"{Request.Url.Scheme}://{Request.Url.Authority}"; 

HtmlToPdf htmlToPdfConverter = new HtmlToPdf(); 
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory(htmlToConvert, baseUri); 

return new FileContentResult(pdfBuffer, "application/pdf"); 

Ziemlich Standardcode.

Jetzt, wenn ich dies von Visual Studio ausführen, funktioniert es wie ich erwarten würde, das resultierende PDF sieht richtig aus, alles ist an der richtigen Stelle. Wenn ich im Dateisystem auf meinem Computer veröffentliche, funktioniert es gut. Wenn ich die oben genannten Dateien auf einen anderen Laptop kopiere und über ipAddress darauf zugreife, funktioniert es einwandfrei.

Das Problem tritt auf, wenn ich ein Webbereitstellungspaket verwende, um es auf dem Haupttestserver zu platzieren. An diesem Punkt wird das PDF erstellt und der Text ist da, aber es gibt kein Styling, alles ist nur schwarz auf weißem Text. Wenn ich etwas vom Styling in die cshtml-Datei einfüge, dann wird das abgeholt. Alles andere auf der Website funktioniert ordnungsgemäß. Ich habe die lokale site.css zum Bootstrap-Bundle hinzugefügt und keiner von ihnen wird abgeholt

Ich denke, die string baseUri Zeile zeigt nicht die PDF-Ersteller an den richtigen Speicherort, aber ich habe untersucht, was in der Variable ist und versuchte viele verschiedene Variationen und nichts funktioniert.

Ich habe den Text in der htmlToConvert angesehen und es sieht richtig aus die Links scheinen in die richtige Richtung zu zeigen.

Sogar ein Link-Tag auf der Seite mit der Position des css hart codiert in es hinzufügen nicht die CSS.

Gibt es einige subtile in Bezug auf die Veröffentlichung einer Website, die ich hier vermisse? Obwohl ich viele Jahre lang ASP.NET MVC-Anwendungen entwickelt habe, war es das erste Mal, dass ich eine Website veröffentlichen musste. Bei meinen früheren Unternehmen war es immer das Problem eines anderen. Hier ist es meins.

Antwort

0

OK, nach vielen Tests tritt das Problem bei jedem PDF-Generator, den ich versuche, auf. Das Testen an einem anderen Ort außer dem Betrachten der CSS-Dateien auf dem Server funktioniert, aber das Testen auf dem Server verursacht das Problem.

Ich löste es, indem ich die Stile in der cshtml-Datei einfügte und Dinge änderte, so dass es richtig aussieht. Es ist eine Lösung, die ich hasse, aber es funktioniert.

Verwandte Themen