Я работаю на веб-сайте с генерацией 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>
При текущем методе мои результаты отличаются от локальных к серверу. Мне нужно установить расположение элементов на веб-сайте, но я не могу, если не знаю, какой видовой экран выбран.