2016-10-07 2 views
3

Я работаю над обновлением .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.

Error message.

Ссылка доступна и доступна за прокси-сервером. Метод 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"); 
     } 
    } 
} 
+0

У меня такая же проблема, удалось ли вам это решить? – Yatiac

ответ

0

Мой коллега был в состоянии решить.

Прежде всего: если нам нужен прокси-сервер, мы не должны использовать AuthenticationOptions. Я считаю, что они предназначены для входа в вашу учетную запись ExpertPDF. Для класса PdfConverter существуют прокси-атрибуты, которые могут быть использованы для этого.

Но это не проблема. Моя проблема заключалась в том, что я использовал лицензию для более ранней версии. Ошибка была непонятна, но это был недействительный лицензионный ключ.

Чтобы проверить это, мы задокументировали лицензионный ключ. Мы автоматически использовали демонстрационную версию, которая помещает водяной знак поверх генерируемых PDF-файлов, но он сказал нам, что это был неправильный лицензионный ключ, который испортил его.

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