2015-04-28 3 views
3

Я использую вторник-версию для веб-приложения, которое я тестирую локально на IIS с VS2013. Пользователь нажимает кнопку, а текущий HTML-файл сохраняется в файле PDF, который затем отправляется по электронной почте. Этот процесс будет регулярно запускаться по мере изменения данных сайта.Запуск конвертера WedPechkin более одного раза

Когда converter.Convert(document) в первую очередь запускает, он преобразует без проблем. Однако каждая последующая попытка приводит к зависанию процесса, и мне нужно перезапустить VS.

Ниже приведен код по умолчанию, который я использовал для тестирования.

public void MakePDF() 
{ 
    var document = new HtmlToPdfDocument 
    { 
     GlobalSettings = 
     { 
      ProduceOutline = true, 
      DocumentTitle = "Pretty Websites", 
      PaperSize = PaperKind.A4, // Implicit conversion to PechkinPaperSize 
      Margins = 
      { 
       All = 1.375, 
       Unit = TuesPechkin.Unit.Centimeters 
      } 
     }, 
     Objects = { 
      new ObjectSettings { HtmlText = "<h1>Pretty Websites</h1><p>This might take a bit to convert!</p>" } 
     } 
    }; 

    IConverter converter = 
     new ThreadSafeConverter(
      new PdfToolset(
       new Win32EmbeddedDeployment(
        new TempFolderDeployment()))); 

    byte[] result = converter.Convert(document); 
} 

Может ли кто-нибудь указать мне в правильном направлении? Большая часть моего устранения неполадок до сих пор приводила к некоторым обсуждениям потоков и объединения, но никаких конкретных кодовых решений для запуска ВтПечкин не раз.

ответ

2

Вы пробовали ThreadSafeConverter? StandardConverter подходит только для небольших консольных приложений.

IConverter converter = 
    new ThreadSafeConverter(
     new RemotingToolset<PdfToolset>(
      new Win32EmbeddedDeployment(
       new TempFolderDeployment()))); 

byte[] result = converter.Convert(document); 

Обратите внимание, что вы должны держать преобразователь где-то статичным, или как одноплодной инстанции (как упоминалось here).

+0

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

+3

Попробуйте переместить 'конвертер' в статический класс или singleton. Из-за зависимости от wkhtmltopdf он может создать только один конвертер, что означает, что вам нужно его повторно использовать. – Nicholas

+0

Обратите внимание, что ваш код немного отличается от моего. В часто задаваемых Вопросах Втпечкина, которые я связывал, упоминается, что вам нужно использовать «RemotingToolset» для приложений IIS. Не уверен, что это влияет на вашу проблему. – Nicholas

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