Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JsPDF和chart.js:提高图表分辨率_Javascript_Canvas_Chart.js_Resolution_Jspdf - Fatal编程技术网

Javascript JsPDF和chart.js:提高图表分辨率

Javascript JsPDF和chart.js:提高图表分辨率,javascript,canvas,chart.js,resolution,jspdf,Javascript,Canvas,Chart.js,Resolution,Jspdf,我编写了一些代码,在网页上显示两个chart.js图表,然后允许用户使用jsPDF下载pdf格式的图表。问题是pdf格式图表的分辨率取决于显示器的dpi设置。例如,当我使用我的工作PC(1080p)创建pdf时,分辨率非常差。然而,当我的同事使用us Macbook生成pdf时,图像非常清晰 如何使图像独立于显示分辨率并始终生成高分辨率图像。我正在使用toDataURL和addImage将图像插入PDF 如果需要,我也可以上传代码 谢谢因为您正在网页上的chart.js中显示图表,所以jsPDF

我编写了一些代码,在网页上显示两个chart.js图表,然后允许用户使用jsPDF下载pdf格式的图表。问题是pdf格式图表的分辨率取决于显示器的dpi设置。例如,当我使用我的工作PC(1080p)创建pdf时,分辨率非常差。然而,当我的同事使用us Macbook生成pdf时,图像非常清晰

如何使图像独立于显示分辨率并始终生成高分辨率图像。我正在使用
toDataURL
addImage
将图像插入PDF

如果需要,我也可以上传代码


谢谢

因为您正在网页上的chart.js中显示图表,所以jsPDF中的addImage数据始终取决于您的显示分辨率。 在您的例子中,您是在低分辨率PC和带有视网膜显示器的macbook上生成的,由于addImage中图像数据集的大小不同,PDF的分辨率也会自然变化

我的想法是通过始终保持addImage设置的图像数据的大小不变来解决这个问题

我认为您可以使用Window.devicePixelRatio来保持图像数据的大小不变,同时考虑屏幕的分辨率。


你怎么看?

正如@HandDod所写,DPI是解决方案

因为有几个版本的Chart.js具有参数devicePixelRatio。 默认情况下,画布由监视器以DPI编号呈现,因此96或视网膜-不适合打印输出,但非常适合屏幕

如果增加此值,将创建更多像素。展开该值,以便可以将具有打印质量的图表导出为Base64图像。该值不影响图表在监视器上的显示

在我的例子中,我将该值设置为1.5

options:{
      devicePixelRatio: 1.5
}
文件: 非常有效