Результат PDF из SelectPDF HtmlToPdf отличается, когда я запускаю его с выпущенного веб-сайта в IIS (ядро dotnet) - PullRequest
0 голосов
/ 11 мая 2019

Я работаю на веб-сайте с генерацией PDF, но результат изменяется между локальным исполнением и конечным развернутым сайтом (сайт эффективно генерирует PDF, и те же двоичные файлы были проверены с помощью dotnet run -c Release, и результат тот же в выпуске localhost и отладке localhost).

Я искал какую-то информацию или конкретные инструкции по развертыванию, это официальные документы от https://selectpdf.com/html-to-pdf/docs/html/Deployment.htm, но в нем нет чего-то особенного, я уже внес большие изменения и не знаю, является ли это чем-то как проблема конфигурации.

Это функция для рендеринга PDF

private Byte[] GetPdf(DocumentViewModel model)
{
    var url = "a simple URL";
    var converter = new HtmlToPdf();
    converter.Options.CssMediaType = HtmlToPdfCssMediaType.Screen;
    converter.Options.JavaScriptEnabled = true;
    converter.Options.MarginBottom = 0;
    converter.Options.MarginRight = 0;
    converter.Options.MarginLeft = 0;
    converter.Options.MarginTop = 0;
    converter.Options.PdfPageSize = PdfPageSize.Letter;
    converter.Options.AutoFitWidth = HtmlToPdfPageFitMode.AutoFit;
    converter.Options.AutoFitHeight = HtmlToPdfPageFitMode.AutoFit;
    converter.Options.PdfPageOrientation = PdfPageOrientation.Landscape;
    converter.Options.MinPageLoadTime = 2;
    converter.Options.MaxPageLoadTime = 30;
    var doc = converter.ConvertUrl(url);
    using (var stream = new MemoryStream())
    {
         doc.Save(stream);
         return stream.ToArray();
    }
}

Мой web.config не имеет ничего особенного, но вот он

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\WebSite.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
   <staticContent>   
    <remove fileExtension=".pdf" />         
     <mimeMap fileExtension=".pdf" mimeType="application/pdf" />        
   </staticContent>
    </system.webServer>
  </location>
    <system.web>
        <sessionState timeout="60" />
    </system.web>
    <system.webServer>
        <caching>
            <profiles>
                <add extension=".pdf" policy="DisableCache" kernelCachePolicy="DisableCache" />
            </profiles>
        </caching>
    </system.webServer>
</configuration>

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

1 Ответ

0 голосов
/ 13 мая 2019

Содержание изменяется во время преобразования в PDF: https://selectpdf.com/docs/ResizingContentDuringConversion.htm

Попробуйте изменить ширину области просмотра, чтобы увидеть, что происходит:

converter.Options.WebPageWidth = 1024;

Попробуйте установить другие значения (в зависимости от ширины вашей веб-страницы): 800, 1920 (в пикселях).

...