当前位置: 首页 > 知识库问答 >
问题:

vue3 - html2canvas内容太多生成不了base64或用file-saver也不行?

司寇山
2023-07-28

需求:项目里有个打印的功能,需要把打印的内容转换成图片或者pdf传给后端,后端拿来推送邮件。
技术:vue3 + html2canvas + printJS。
实现方法:通过html2canvas获取到base64,然后把base64转换成二进制流,然后调取上传接口。
问题:内容里的列表很多,有几百条,甚至几千条,生成不出base64,直接报错了,最多只能100条左右才可以。请问各位前端大佬有什么方法可以解决这个问题?

共有2个答案

云承弼
2023-07-28

试试开源的 jsPDF,直接将生成pdf给后端。

班承德
2023-07-28

分片截图: 你可以试试把大的 DOM 分成小块,每块单独截图,然后把这些小图像合并成一个大图。合并图像在服务端完成,因为客户端做会有性能问题

 类似资料:
  • 我使用下面的库转换我的html div到画布。 https://html2canvas.hertzen.com/ 事情按预期进行。现在,我想要的基本上不是下载(通过saveAsPNG()方法可以下载),而是将数据发送到服务器。现在我们知道,我们需要使用toDataUrl()将其转换为base64。 使用此方法toDataUrl(),表示不是函数。 下面是片段 1) 以画布形式提供输出 2)canv

  • Angular File Saver Angular File Saver is an AngularJS service that leveragesFileSaver.js andBlob.js to implement the HTML5 W3CsaveAs() interface in browsers that do not natively support it Dependencie

  • 我使用JavaFX2.2绘制甘特图。 在SplitPane的左侧可编辑带有计划任务的tableView(名称、开始、结束), 右侧可panning包含图表的滚动窗格。 我在表中添加了一个ObservableList of Tasks,在循环中,为列表中的每个任务创建矩形节点并将其添加到ScrollPane中。图表中表示任务的矩形必须是交互式的,并且可以监听事件,以便它们可以左/右移动,水平调整大小

  • 问题内容: 我在用 单击到容器上的按钮,但随后进行了ajax调用,并且内容使用新内容进行了更新,然后当我尝试单击它时将无法工作…单击该按钮时,将不会返回任何内容。 我什至试过 要么 我该如何运作? 编辑: 我的HTML: 问题答案: 应该以这种方式完成。 如果您的容器在ajax请求期间没有更改,则性能更高: 始终将委托事件绑定到将包含动态元素的最接近的静态元素。

  • 当我的应用程序从前端应用程序接收到JWT令牌时,我不断收到一个错误,前端应用程序正在通过Keycloak进行身份验证。我得到的错误是“不够或太多段”。据我所知,该令牌是一个有效的令牌,应该能够被验证,但我无法通过这个非常通用的错误。有人能帮我看看我做错了什么吗? 下面是正在失败的相关代码片段。请注意,在运行我的测试用例时,相同的代码可以正常工作,这些测试用例使用Vert.x JWTAuth提供程序

  • 为了添加另一个信息,我有一个tasks表,它当然需要引用来跟踪分配给谁,我还有一个列跟踪创建任务的用户。这将分别是和。 虽然有更多的表引用回该键。我可能已经有8个推荐人了。我相信到目前为止我已经把它设计得很好了,但是根据我所提到的,这听起来好吗?