我有一个奇怪的问题发生在我的一个项目(而不是其他项目)上,我看不到其他人有任何类似的东西。 (由于缺少适当的示例,我事先表示歉意,因为这是实际的公司代码。
我遇到的问题是在.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使文本变白,但是文件大小表明文本确实不存在。
有没有人知道在连接调试器后Visual Studio会如何使其正常工作?
答案 0 :(得分:0)
经过一段时间的努力,我可能已经解决了这个问题。时间。
尽管附加了调试器(没有附加断点),但可能会导致稍长的延迟,以至于无法生成PDF。
快速浏览一下,我发现:How to set time delay in javascript
我添加了1秒的延迟,并且它在没有附加调试器的情况下正确生成了带有文本的PDF。