2016-11-21 2 views
0

Моя ошибка:Ошибка во время выполнения «Не удалось загрузить файл или сборку«Select.HtmlToPdf, Version = 2.4.0.1" на SharePoint 2013. Использование Select.HtmlToPdf третьей партии библиотеки

Не удалось загрузить файл или сборка 'Select.HtmlToPdf, Version = 2.4.0.1, Культура = нейтральная, PublicKeyToken = e0ae9f6e27a97018' или одна из ее зависимостей . Система не может найти указанный файл.

Хорошо до сих пор, я создал свой веб-части и установлен пакет Select.HtmlToPdf через эту команду "Select.HtmlToPdf PM> Install-Package" (https://www.nuget.org/packages/Select.HtmlToPdf/)

я не получаю сообщение об ошибке при развертывании, только в время выполнения. Хотя все выглядит хорошо и на месте, но эта ошибка просто не пойдет. Я что-то делаю что-то не так или что-то здесь не вижу?

Edit: Эта ошибка появляется только тогда, когда я пытаюсь запустить Select.HtmlToPdf на SharePoint 2013 (Visual WebPart)

Мой код:

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

ответ

1

Так же, как сказал Том, я добавил библиотеку Select.PdfToHtml.dll в GAC.

«Я попытался добавить файл Select.HtmlToPdf.dll в GAC, и он работал как шарм. Я дважды нажал на Package.package> Дополнительно> Добавить> Добавить из существующих сборок> Выбрал мой Select.HtmlToPdf.dll (Net20)> Проверить цель развертывания в GAC> Сохранить Ссылки: add library to GACCould not load file or assembly Select.HtmlToPdf "

После этого я мог загрузить мою страницу и увидеть мое содержание. но когда я нажал кнопку; Я получил эту ошибку

«Ошибка преобразования не удалось найти„Select.Html.dep“Описание:... Необработанное исключение при выполнении текущего веб-запроса Пожалуйста, просмотрите трассировку стека для получения дополнительной информации около ошибка и где она возникла в коде. "

Чтобы исправить это выполните следующие шаги:

во-первых, я скопировал мой Select.Html.Dep файл (Net20) к моему 15 улья папку «\ 15 \ ШАБЛОН \ CONTROLTEMPLATES \ SelectPDFTest \ VisualWebPart1 \ Select.Html.Dep»

тогда я установил свой полный путь в коде:

"// создать новый документ в формате PDF, преобразующий HTML строку страницы SelectPdf.GlobalProperties.HtmlEngineFullPath = @" C: \ Program Files \ Common Files \ microsoft shared \ Web Server Расширения \ 15 \ TEMPLATE \ CONTROLTEMPLATES \ SelectPDFTest \ VisualWebPart1 \ Select.Html.dep "; PdfDocument док = converter.ConvertHtmlString (myWriter.ToString(), Request.Url.AbsoluteUri);»Ссылка: Could not load file or assembly Select.HtmlToPdf

Итак, наконец, мой код выглядит следующим образом:

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

С любой SharePoint WebPart, который использует 3-й сторонних библиотек, решение состоит в том, чтобы добавить эту библиотеку в GAC:

Нажмите Package.package> Дополнительно> Добавить> Добавить из существующих сборок> Selected Select.Ht mlToPdf.dll> Проверить цель развертывания как GAC> Сохранить!

Подробнее здесь: https://social.msdn.microsoft.com/Forums/office/en-US/0b9ef307-e15c-4bc1-b5c0-dfc7aef04900/deploying-third-party-dll-from-solution?forum=sharepointdevelopmentprevious

+0

Да Спасибо , это помогло. –

Смежные вопросы