使用wkhtmltopdf库生成PDF时的本地日期时间

时间:2015-10-27 13:26:49

标签: c# .net datetime pdf wkhtmltopdf

我正在使用wkhtmltopdf(https://www.nuget.org/packages/wkhtmltopdf.mingw.86.exe/)为ASP.NET网页生成PDF文件。在我从SQL Server 2012 DB获取的此网页中向用户显示日期和时间。我以UTC格式存储所有日期。当我在浏览器中打开网页时,日期和时间显示为本地日期和时间,因为我使用Moment.js根据用户本地时区对其进行格式化。

使用wkhtmltopdf生成PDF时是否可以做同样的事情? PDF生成发生在服务器上,因此始终显示服务器日期和时间,但我想显示用户本地日期和时间。

1 个答案:

答案 0 :(得分:1)

很棒的工具。它有一些功能。

我建议在页面上放一些脚本来用jQuery评估所有日期字段并专门操作日期字段?如果您的字符串格式为yyyy-MM-dd HH24:mm:ss.zzz UTC,格式为2015-10-27 13:58:46.490 UTC,那么您可以使用new Date('2015-10-27 13:58:46.490 UTC')在JS中解析它,并在其上调用.toString()以获取当地时间。

然后,您可以将--window-status参数与wkhtmltopdf一起使用,以等待运行的脚本中的给定状态。所以我们假设我们将--window-status "Dates Manipulated"传入wkhtmltopdf。当您的客户端脚本完成操作日期字段到您想要的本地时间时,设置window.status = 'Dates Manipulated'和wkhtmltopdf将完成您的文档转换。

由于您在服务器端呈现此内容,因此我认为您可以访问正在设置的URL。假设您的页面类似http://www.example.com/page_renderer,并在后面放置一个查询参数,如http://www.example.com/page_renderer?timzeone=America/Toronto。现在,您可以在Javascript函数中使用该时区转换为指定的时区。

var localTime = moment.tz("2015-10-27 13:58:46.490 UTC", "America/Toronto");