NodeJS PDF:仅在连接调试器后才能正常工作

时间:2018-07-02 08:26:12

标签: node.js visual-studio debugging asp.net-core pdf-generation

我有一个奇怪的问题发生在我的一个项目(而不是其他项目)上,我看不到其他人有任何类似的东西。 (由于缺少适当的示例,我事先表示歉意,因为这是实际的公司代码。

我遇到的问题是在.NET Core 2项目中,我试图使用nodejs创建PDF(就像我在第二个项目中一样)。但是,只有在附加了Visual Studio(2017)调试器后,PDF才会正确生成

try
{
    var result = await nodeServices.InvokeAsync<byte[]>(pdfSettings, viewWithAbsoluteLinks);

    string invoicePath = _configuration.GetSection("AppSettings")["InvoicePath"];
    string filename = Path.Combine(invoicePath, "invoice.pdf");

    FileUtils.WriteToFile(filename, result);

    return Json(new { success = true, size = result.Count(), viewAsHtml, viewWithAbsoluteLinks, environment, pdfSettings, result });
}
catch
{
    return Json(new { success = false });
}

我正在将jsrender与phantom-pdf一起使用,当我在Visual Studio中附加调试器时,结果是69318。但是,当我在没有附加调试器的情况下运行时,结果= 66167字节。

要进行调试,我返回了变量viewWithAbsoluteLinks,以便查看是否存在任何差异,并且在两种情况下,该变量都相同。

viewWithAbsoluteLinks是:

<html>

<head>
  <style>
    .pdf-hidden {
      display: none;
    }

    .pdf-visible {
      display: block !important;
    }
  </style>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <title>Invoice</title>
  <link rel="stylesheet" href="http://localhost:10795/lib/bootstrap/dist/css/bootstrap.css">
  <link rel="stylesheet" href="http://localhost:10795/css/site.css">
  <link rel="stylesheet" href="http://localhost:10795/css/site.theme.css">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt"
    crossorigin="anonymous">
  <link rel="stylesheet" href="http://localhost:10795/lib/bootstrap-datetimepicker/bootstrap-datetimepicker.css">
  <style>
    body {
      font-family: "DIN 2014 Light", 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
      color: #000;
    }
  </style>
</head>

<body>
  <div class="pull-right" style="border: 1px solid #0f0">
    <img src="http://localhost:10795/images/training-logo.png">
  </div>
  <div style="padding-top: 50px;">
    <table style="width: 100%; border: 1px solid #000">
      <tbody>
        <tr>
          <td style="border: 1px solid #f00"> Address </td>
          <td> Invoice </td>
        </tr>
      </tbody>
    </table>
  </div>
  <script type="text/javascript">        window.JSREPORT_READY_TO_START = true;    </script>
</body>

</html>

连接调试器后,标记中的文本显示在PDF中。未连接调试器时,文本不会出现。 (s具有不同的颜色边框-并且颜色显示正确)

我假设调试正在更改某些内容时运行,但是我不确定是什么。我起初以为只是CSS使文本变白,但是文件大小表明文本确实不存在。

有没有人知道在连接调试器后Vis​​ual Studio会如何使其正常工作?

1 个答案:

答案 0 :(得分:0)

经过一段时间的努力,我可能已经解决了这个问题。时间。

尽管附加了调试器(没有附加断点),但可能会导致稍长的延迟,以至于无法生成PDF。

快速浏览一下,我发现:How to set time delay in javascript

我添加了1秒的延迟,并且它在没有附加调试器的情况下正确生成了带有文本的PDF。