Я использую вторник-версию для веб-приложения, которое я тестирую локально на 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);
}
Может ли кто-нибудь указать мне в правильном направлении? Большая часть моего устранения неполадок до сих пор приводила к некоторым обсуждениям потоков и объединения, но никаких конкретных кодовых решений для запуска ВтПечкин не раз.
Изменение этой части кода привело к той же проблеме. Я изменил вопрос, включив метод-содержащий, который в настоящее время является только вашей общедоступной пустотой. Вы говорите, что я должен перенести определение конвертера и само преобразование в свой собственный метод и передать ему «документ»? – MikeOShay
Попробуйте переместить 'конвертер' в статический класс или singleton. Из-за зависимости от wkhtmltopdf он может создать только один конвертер, что означает, что вам нужно его повторно использовать. – Nicholas
Обратите внимание, что ваш код немного отличается от моего. В часто задаваемых Вопросах Втпечкина, которые я связывал, упоминается, что вам нужно использовать «RemotingToolset» для приложений IIS. Не уверен, что это влияет на вашу проблему. – Nicholas