首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我在IIS (dotnet core)的已发布网站上运行它时,SelectPDF HtmlToPdf的PDF结果是不同的。

当我在IIS (dotnet core)的已发布网站上运行它时,SelectPDF HtmlToPdf的PDF结果是不同的。
EN

Stack Overflow用户
提问于 2019-05-11 06:38:34
回答 1查看 1.1K关注 0票数 1

我在一个PDF生成的网站上工作,但结果在本地执行和最终部署的站点之间发生了变化(该站点有效地生成了PDF,并且用dotnet run -c Release检查了相同的二进制文件,结果在本地主机版本和本地主机调试中是相同的)。

我寻找了一些信息或部署的具体说明,这些是来自https://selectpdf.com/html-to-pdf/docs/html/Deployment.htm的官方文档,但它没有什么特别的东西,我已经做了更大的修改,我不知道这是不是类似于配置问题。

这是Pdf渲染的函数

代码语言:javascript
复制
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没有什么特别的东西,但这里有

代码语言:javascript
复制
<?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>

使用当前方法,我的结果从本地到服务器是不同的。我需要设置元素在网站中的位置,但如果我不知道哪个视口被选中,我就不能设置。

EN

回答 1

Stack Overflow用户

发布于 2019-05-13 13:26:27

内容在转换为pdf:https://selectpdf.com/docs/ResizingContentDuringConversion.htm时调整大小

尝试更改视口宽度以查看发生的情况:

代码语言:javascript
复制
converter.Options.WebPageWidth = 1024;

尝试设置一些其他值(取决于您的网页宽度):800、1920 (这些值以像素为单位)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56085636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档