Я работаю над обновлением .NET-приложения без изменения его функциональности. То, что я сделал до сих пор:ExpertPdf Ошибка преобразования: время ожидания навигации WebKit в GetPdfBytesFromUrl
- модернизации с MVC 2 до Mvc 4
- обновления от рамок 3.5 до 4.0
- с помощью Visual Studio 2015 вместо 2010
- обновления пользовательских сделали утилиты и Mvc таким же образом
Прямо сейчас я застрял в преобразовании pdf в DLL пользовательских утилит. Ошибка, которую я получаю, находится на изображении ниже. Он говорит:
ExportHtmlToPdfBytes failed for url http://localhost:4984/Rijopdracht.mvc/Print/861175 : Conversion error: WebKit Navigation timeout.
Ссылка доступна и доступна за прокси-сервером. Метод ExportHtmlToPdfBytes выглядит следующим образом:
public byte[] ExportHtmlToPdfBytes(string url)
{
try
{
PdfConverter pdfConverter = CreatePdfConvertor();
byte[] bytes = pdfConverter.GetPdfBytesFromUrl(url);
return bytes;
}
catch (Exception ex)
{
throw new WrapperException(ex, "ExportHtmlToPdfBytes failed for url {0}:", url);
}
}
Во время отладки я обнаружил, что программа перерывы при вызове функции GetPdfBytesFromUrl. После разрыва программы пользователь-прокси, которого я использую для доступа к URL-адресу, блокируется. Я узнал, что пользователь блокируется, если и только если пароль был введен неправильно 6 или более раз.
I triple проверил имя пользователя и пароль, которые пришли из настроек приложения, и они верны. Может кто-нибудь сказать мне, что происходит и как это решить?
Полный PdfUtilities класса, где эта функция приходит из вне:
using ExpertPdf.HtmlToPdf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Jumbo.Utilities
{
public class PdfUtilities
{
public PdfUtilities() {
FooterText = String.Empty;
FitWidth = false;
LeftMargin = 5;
RightMargin = 5;
TopMargin = 5;
BottomMargin = 5;
PdfCompressionLevel = PdfCompressionLevel.Normal;
JpegCompressionLevel = 10;
}
public string FooterText { get; set; }
public string AuthenticationUsername { get; set; }
public string AuthenticationPassword { get; set; }
public bool FitWidth { get; set; }
public string BaseUrl { get; set; }
public int LeftMargin { get; set; }
public int RightMargin { get; set; }
public int TopMargin { get; set; }
public int BottomMargin { get; set; }
public int JpegCompressionLevel { get; set; }
public PdfCompressionLevel PdfCompressionLevel { get; set; }
private PdfConverter CreatePdfConvertor()
{
PdfConverter pdfConverter = new PdfConverter();
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PDFPageOrientation.Landscape;
pdfConverter.PdfDocumentOptions.LiveUrlsEnabled = false;
pdfConverter.PdfDocumentOptions.ShowHeader = true;
pdfConverter.PdfDocumentOptions.ShowFooter = true;
pdfConverter.PdfDocumentOptions.LeftMargin = LeftMargin;
pdfConverter.PdfDocumentOptions.RightMargin = RightMargin;
pdfConverter.PdfDocumentOptions.TopMargin = TopMargin;
pdfConverter.PdfDocumentOptions.BottomMargin = BottomMargin;
pdfConverter.PdfDocumentOptions.GenerateSelectablePdf = true;
pdfConverter.PdfDocumentOptions.EmbedFonts = true;
pdfConverter.PdfDocumentOptions.JpegCompressionLevel = JpegCompressionLevel;
if (FitWidth)
{
pdfConverter.PageWidth = 0;
pdfConverter.PdfDocumentOptions.FitWidth = true;
pdfConverter.PdfDocumentOptions.StretchToFit = true;
}
else
pdfConverter.PdfDocumentOptions.FitWidth = false;
//pdfConverter.PageWidth = 0;
pdfConverter.PdfDocumentOptions.ShowHeader = false;
pdfConverter.PdfFooterOptions.FooterTextColor = System.Drawing.Color.Black;
pdfConverter.PdfFooterOptions.DrawFooterLine = false;
pdfConverter.PdfFooterOptions.PageNumberText = "Page";
pdfConverter.PdfFooterOptions.ShowPageNumber = true;
pdfConverter.PdfFooterOptions.FooterText = FooterText;
if (!string.IsNullOrEmpty(AuthenticationUsername) && !string.IsNullOrEmpty(AuthenticationPassword))
{
pdfConverter.AuthenticationOptions.Username = AuthenticationUsername;
pdfConverter.AuthenticationOptions.Password = AuthenticationPassword;
}
else
{
string username = SettingsUtilities.GetSetting<string>(GenericConstants.AS_PROXY_USERNAME, null);
if (!String.IsNullOrEmpty(username))
{
string password = SettingsUtilities.GetSetting<string>(GenericConstants.AS_PROXY_PASSWORD, null);
pdfConverter.AuthenticationOptions.Username = username;
pdfConverter.AuthenticationOptions.Password = password;
}
}
pdfConverter.LicenseKey = "tZ6HlY2Vh4WBg5WDm4WVhoSbhIebjIyMjA==";
return pdfConverter;
}
public byte[] ExportHtmlToPdfBytes(string url)
{
try
{
PdfConverter pdfConverter = CreatePdfConvertor();
byte[] bytes = pdfConverter.GetPdfBytesFromUrl(url);
return bytes;
}
catch (Exception ex)
{
throw new WrapperException(ex, "ExportHtmlToPdfBytes failed for url {0}:", url);
}
}
public byte[] ExportHtmlStringToPdfBytes(string html)
{
PdfConverter pdfConverter = CreatePdfConvertor();
byte[] bytes;
if (BaseUrl == null)
bytes = pdfConverter.GetPdfBytesFromHtmlString(html);
else
bytes = pdfConverter.GetPdfBytesFromHtmlString(html, BaseUrl);
return bytes;
}
public void SaveHtmlToPdf(string url, string saveLocation)
{
Logging.LogVerboseCaller(Logging.Cat.Utilities, "Start export to htm for " + url);
byte[] contents = ExportHtmlToPdfBytes(url);
Logging.LogVerboseCaller(Logging.Cat.Utilities, "End export. Start save to " + saveLocation);
FileUtilities.SaveFile(saveLocation, contents);
Logging.LogVerboseCaller(Logging.Cat.Utilities, "End save");
}
}
}
У меня такая же проблема, удалось ли вам это решить? – Yatiac