HiQPdf 未在 pdf 上呈现 Chart.js 图表
HiQPdf isn't rendering Chart.js chart on pdf
我的组织使用 HiQPdf 从 .Net MVC Razor 视图创建 PDF。我想在 view/pdf 中包含一个使用 Chart.js 库的图表。问题是当从视图中呈现 pdf 时,图表不会显示在页面上。图表在呈现为视图时显示良好。
这里是 chart.js 代码:
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: '# of Complaints',
data: data,
backgroundColor: 'rgba(11, 73, 150, 1)',
borderColor: 'rgba(11, 73, 150, 1)',
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true,
precision: 0,
fontSize: 18,
fontColor: '#000'
}
}],
xAxes: [{
ticks: {
fontSize: 18,
fontColor: '#000'
}
}]
},
responsive: false
}
});
事实证明,在 HiQPdf 开始将图表转换为 PDF 之前,javascript 创建图表没有机会创建图表并将其包含在 HTML 中。
我需要一种方法让 HiQPdf 在开始转换之前等待图表呈现。
我在 HiQ 的文档中找到了 this demo。它解释了如何使用 javascript.
手动触发转换
在 C# 代码中:
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
htmlToPdfConverter.TriggerMode = ConversionTriggerMode.Manual;
(还有'Auto'和'WaitTime'两种触发方式)
然后在网页上使用javascript:
触发转换
hiqPdfConverter.startConversion();
太棒了!所以现在我所需要的只是一种在我知道图表已完成渲染时调用 startConversion() 函数的方法。 Chart.js 提供了一些选项来自定义找到的图表动画过程 here。
在这些选项中有一个 onComplete 回调。因此,为了将它们整合在一起,我将其添加到图表对象中:
options: {
animation: {
onComplete: function() {
hiqPdfConverter.startConversion();
}
},
...
}
现在图表已完全呈现,html 的一部分通过 HiQPdf 转换为 pdf!
我的组织使用 HiQPdf 从 .Net MVC Razor 视图创建 PDF。我想在 view/pdf 中包含一个使用 Chart.js 库的图表。问题是当从视图中呈现 pdf 时,图表不会显示在页面上。图表在呈现为视图时显示良好。
这里是 chart.js 代码:
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: '# of Complaints',
data: data,
backgroundColor: 'rgba(11, 73, 150, 1)',
borderColor: 'rgba(11, 73, 150, 1)',
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true,
precision: 0,
fontSize: 18,
fontColor: '#000'
}
}],
xAxes: [{
ticks: {
fontSize: 18,
fontColor: '#000'
}
}]
},
responsive: false
}
});
事实证明,在 HiQPdf 开始将图表转换为 PDF 之前,javascript 创建图表没有机会创建图表并将其包含在 HTML 中。
我需要一种方法让 HiQPdf 在开始转换之前等待图表呈现。
我在 HiQ 的文档中找到了 this demo。它解释了如何使用 javascript.
手动触发转换在 C# 代码中:
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
htmlToPdfConverter.TriggerMode = ConversionTriggerMode.Manual;
(还有'Auto'和'WaitTime'两种触发方式)
然后在网页上使用javascript:
触发转换hiqPdfConverter.startConversion();
太棒了!所以现在我所需要的只是一种在我知道图表已完成渲染时调用 startConversion() 函数的方法。 Chart.js 提供了一些选项来自定义找到的图表动画过程 here。
在这些选项中有一个 onComplete 回调。因此,为了将它们整合在一起,我将其添加到图表对象中:
options: {
animation: {
onComplete: function() {
hiqPdfConverter.startConversion();
}
},
...
}
现在图表已完全呈现,html 的一部分通过 HiQPdf 转换为 pdf!