2016-11-21 1 views
0

Mein Fehler Verwendung:Fehler auf runtime „Konnte Datei oder Assembly‚Select.HtmlToPdf laden, Version = 2.4.0.1" auf Sharepoint 2013 Select.HtmlToPdf 3rd Party Bibliothek

Datei konnte nicht geladen werden oder Assembly 'Select.HtmlToPdf, Version = 2.4.0.1, Culture = neutral, PublicKeyToken = e0ae9f6e27a97018' oder eine seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden.

Okay, so weit, ich habe meine webpart erstellt und Select.HtmlToPdf Paket durch diesen Befehl installiert "PM> Install-Package Select.HtmlToPdf" (https://www.nuget.org/packages/Select.HtmlToPdf/)

bekomme ich keine Fehler bei der Bereitstellung, Nur bei Laufzeit Obwohl alles gut aussieht und an Ort und Stelle, aber dieser Fehler wird einfach nicht gehen. Mache ich etwas falsch oder vermisse etwas hier?

bearbeiten: Dieser Fehler nur kommt, wenn ich versuche Select.HtmlToPdf auf Sharepoint 2013 (Visual WebPart)

Mein Code auszuführen:

using SelectPdf; 
using System; 
using System.Data; 
using System.IO; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 

namespace downloadPDF.VisualWebPart1 
{ 
    public partial class VisualWebPart1UserControl : UserControl 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       GetRecord(); 
      } 
     } 
     private bool startConversion = false; 
     private void GetRecord() 
     { 
      DataTable dt = new DataTable(); 
      dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)), 
          new DataColumn("Name", typeof(string)), 
          new DataColumn("Country",typeof(string)) }); 
      dt.Rows.Add(1, "John Hammond", "United States"); 
      dt.Rows.Add(2, "Mudassar Khan", "India"); 
      dt.Rows.Add(3, "Suzanne Mathews", "France"); 
      dt.Rows.Add(4, "Robert Schidner", "Russia"); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
     protected void Button1_Click(object sender, EventArgs e) 
     { 
      startConversion = true; 
     } 
     protected override void Render(HtmlTextWriter writer) 
     { 
      if (startConversion) 
      { 
       // get html of the page 
       TextWriter myWriter = new StringWriter(); 
       HtmlTextWriter htmlWriter = new HtmlTextWriter(myWriter); 
       base.Render(htmlWriter); 

       // instantiate a html to pdf converter object 
       HtmlToPdf converter = new HtmlToPdf(); 

       // create a new pdf document converting the html string of the page 
       PdfDocument doc = converter.ConvertHtmlString(
        myWriter.ToString(), Request.Url.AbsoluteUri); 

       // save pdf document 
       doc.Save(Response, false, "Sample.pdf"); 

       // close pdf document 
       doc.Close(); 
      } 
      else 
      { 
       // render web page in browser 
       base.Render(writer); 
      } 
     } 
    } 
} 

Antwort

1

Genau wie Tom sagte, fügte ich Select.PdfToHtml.dll Bibliothek GAC.

"Ich habe versucht, die Select.HtmlToPdf.dll-Datei in GAC hinzuzufügen, und es funktionierte wie ein Charme. Ich doppelklickte auf Package.package> Erweitert> Hinzufügen> Hinzufügen von bestehenden Baugruppen> Selected meine Select.HtmlToPdf.dll (Net20)> Ziel als GAC prüfen> Speichern! Referenzen: add library to GACCould not load file or assembly Select.HtmlToPdf "

Danach könnte ich meine Seite laden und meinen Inhalt sehen. aber als ich auf Knopf geklickt habe; Ich habe diesen Fehler

„Conversion Ausfall konnte nicht‚Select.Html.dep‘gefunden Beschreibung:... Eine nicht behandelte Ausnahme während der Ausführung der aktuellen Webanforderung Überprüfen Sie die Stapelüberwachung, um weitere Informationen über der Fehler und wo es im Code entstanden ist. "

dies unter Schritte zu beheben:

zunächst kopiert ich meine Select.Html.Dep Datei (Net20) zu meinem 15 hive Ordner „\ 15 \ TEMPLATE \ Control \ SelectPDFTest \ VisualWebPart1 \ Select.Html.Dep“

dann stellte ich meinen vollen Pfad so in Code:

": \ Program Files // ein neues PDF-Dokument mit dem HTML-String auf der Seite SelectPdf.GlobalProperties.HtmlEngineFullPath = @" C Umwandlung erstellen \ Gemeinsame Dateien \ microsoft shared \ Webserver Erweiterungen \ 15 \ TEMPLATE \ CONTROLTEMPLATES \ SelectPDFTest \ VisualWebPart1 \ Select.Html.dep "; PDFDocument doc = converter.ConvertHtmlString (myWriter.ToString(), Request.Url.AbsoluteUri),“Referenz: Could not load file or assembly Select.HtmlToPdf

So Schließlich sieht mein Code wie folgt aus:

using SelectPdf; 
using System; 
using System.Data; 
using System.IO; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 

namespace SelectPDFTest.VisualWebPart1 
{ 
    public partial class VisualWebPart1UserControl : UserControl 
    { 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       GetRecord(); 
      } 
     } 
     private bool startConversion = false; 
     private void GetRecord() 
     { 
      DataTable dt = new DataTable(); 
      dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id", typeof(int)), 
          new DataColumn("Name", typeof(string)), 
          new DataColumn("Country",typeof(string)) }); 
      dt.Rows.Add(1, "John Hammond", "United States"); 
      dt.Rows.Add(2, "Mudassar Khan", "India"); 
      dt.Rows.Add(3, "Suzanne Mathews", "France"); 
      dt.Rows.Add(4, "Robert Schidner", "Russia"); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
     protected void Button1_Click(object sender, EventArgs e) 
     { 
      startConversion = true; 
     } 
     protected override void Render(HtmlTextWriter writer) 
     { 
      if (startConversion) 
      { 
       // get html of the page 
       TextWriter myWriter = new StringWriter(); 

       HtmlTextWriter htmlWriter = new HtmlTextWriter(myWriter); 
       base.Render(htmlWriter); 

       // instantiate a html to pdf converter object 
       HtmlToPdf converter = new HtmlToPdf(); 

       // set css @media screen 
       converter.Options.CssMediaType = HtmlToPdfCssMediaType.Screen; 

       // create a new pdf document converting the html string of the page 
       SelectPdf.GlobalProperties.HtmlEngineFullPath = @"C:\\Program Files\\Common Files\\microsoft shared\\Web Server Extensions\\15\\TEMPLATE\\CONTROLTEMPLATES\\SelectPDFTest\\VisualWebPart1\\Select.Html.dep"; 

       string css = "<link rel='stylesheet' href='/Style Library/css/main.css' media='screen' /> "; 
       string pageHtml = css + myWriter.ToString(); 

       PdfDocument doc = converter.ConvertHtmlString(pageHtml, Request.Url.AbsoluteUri); 

       // save pdf document 
       doc.Save(Response, false, "Sample.pdf"); 

       // close pdf document 
       doc.Close(); 

       startConversion = false; 
      } 
      else 
      { 
       // render web page in browser 
       base.Render(writer); 
      } 
     } 
    } 
} 
1

Mit jedem Sharepoint-WebPart, die dritte verwendet Party-Bibliotheken, die Lösung besteht darin, diese Bibliothek zu GAC hinzuzufügen:

Klicken Sie auf Package.package> Erweitert> Hinzufügen> Hinzufügen von vorhandenen Baugruppen> Ausgewählte Select.Ht mlToPdf.dll> Implementierungsziel als GAC prüfen> Speichern!

Weitere Details hier: https://social.msdn.microsoft.com/Forums/office/en-US/0b9ef307-e15c-4bc1-b5c0-dfc7aef04900/deploying-third-party-dll-from-solution?forum=sharepointdevelopmentprevious

+0

Ja Danke , es half. –

Verwandte Themen