Ошибка во время выполнения "Не удалось загрузить файл или сборку" Select.HtmlToPdf, Version=2.4.0.1"в SharePoint 2013. Использование сторонней библиотеки Select.HtmlToPdf
Моя ошибка:
Не удалось загрузить файл или сборку 'Select.HtmlToPdf, версия =2.4.0.1, Culture= нейтральный, PublicKeyToken=e0ae9f6e27a97018' или одну из ее зависимостей. Система не может найти указанный файл.
Итак, я создал свою веб-часть и установил пакет Select.HtmlToPdf с помощью этой команды "PM> Install-Package Select.HtmlToPdf" ( https://www.nuget.org/packages/Select.HtmlToPdf/).
Я не получаю ошибки при развертывании, только во время выполнения. Хотя все выглядит хорошо и на месте для меня, но эта ошибка просто не пойдет. Я что-то делаю не так или здесь что-то упускаю?
Изменить: эта ошибка появляется только при попытке запустить 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);
}
}
}
}
2 ответа
Как сказал Том, я добавил библиотеку Select.PdfToHtml.dll в GAC.
"Я попытался добавить файл Select.HtmlToPdf.dll в GAC, и он работал как чудо. Я дважды щелкнул Package.package > Дополнительно> Добавить> Добавить из существующих сборок> Выбрал мой файл Select.HtmlToPdf.dll(Net20) > Проверить Цель развертывания: GAC> Сохранить! Ссылки: добавить библиотеку в GAC. Не удалось загрузить файл или сборку. Select.HtmlToPdf "
После этого я мог загрузить свою страницу и посмотреть мой контент. но когда я нажал кнопку; Я получил эту ошибку
"Ошибка преобразования. Не удалось найти" Select.Html.dep ". Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде". "
Чтобы исправить это, выполните следующие действия:
во-первых, я скопировал свой файл Select.Html.Dep (Net20) в свою папку 15 кустов "\15\TEMPLATE\CONTROLTEMPLATES\SelectPDFTest\VisualWebPart1\Select.Html.Dep"
затем я установил свой полный путь, как это в коде:
"// создаем новый PDF-документ, преобразующий HTML-строку страницы SelectPdf.GlobalProperties.HtmlEngineFullPath = @"C:\Program Files\Common Files\microsoft shared\ Расширения веб-сервера \15\TEMPLATE\CONTROLTEMPLATES\SelectPDFTest\VisualWebPart1\Select.Html.dep"; PdfDocument doc = converter.ConvertHtmlString(myWriter.ToString(), Request.Url.AbsoluteUri);" Ссылка: не удалось загрузить файл или сборку. 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);
}
}
}
}
С любой SharePoint WebPart, которая использует сторонние библиотеки, решение состоит в том, чтобы добавить эту библиотеку в GAC:
Нажмите Package.package > Дополнительно> Добавить> Добавить из существующих сборок> Выбранный файл Select.HtmlToPdf.dll > Проверить цель развертывания как GAC > Сохранить!
Более подробно здесь: https://social.msdn.microsoft.com/Forums/office/en-US/0b9ef307-e15c-4bc1-b5c0-dfc7aef04900/deploying-third-party-dll-from-solution?forum=sharepointdevelopmentprevious