【发布时间】:2013-11-07 09:25:07
【问题描述】:
问题
我正在尝试使用此库实现签名收集器:github.com/szimek/signature_pad
收集器作为 Google Apps 脚本上的网络应用程序运行。我希望能够使用我们公司的用户列表和 Drive 以及签名来创建 PDF。
我使用常规 HTML 创建了表单,并从库的演示页面添加了 canvas 元素。
我可以绘制签名,但是当我尝试使用 canvas.toDataURL() 提取数据 URL 时,我收到以下消息:
Expected property "toDataURL" to be a function, not undefined: undefined
在 Chrome 开发者控制台中。
我的尝试
我假设 Google Caja 库(我几乎一无所知)没有实现或允许 toDataURL() 方法。我找到了这个库:http://www.nihilogic.dk/labs/canvas2image/,它可以创建画布 BMP 的 base64 编码版本。
这次我可以运行代码并提取一些数据,但是当我尝试在服务器端将图像重新组合在一起时,我得到的只是一个黑盒子。
这是一个演示该问题的示例应用程序:https://script.google.com/macros/s/AKfycbwXo0xFNWqiewoe4oh-cSxTdhmqRTyNDwL9xknbtOdk3rLbHZ8/exec
示例输出
Object [object Object] has no method 'toDataURL'
到开发者控制台。这应该是因为我使用的是 NATIVE 沙盒模式而不是 EMULATED。
这是可编辑项目的链接:https://script.google.com/d/19azWWXnrUO72ryDWhmhKJA-PqoOiDIRNPEIt61h2l_kduUbD87V4P311/edit?usp=sharing。也许某个好人可以为我建立一个合适的链接?
接下来是什么
- 有没有办法让
toDataURL()方法工作? - BMP 解决方案应该起作用吗?怎么了?
- 还有其他我可以使用的库/解决方案吗?
显然我没有提供任何代码。我可以根据要求这样做。如果 BMP 解决方案应该有效,那么我将向您展示我在做什么,我现在没有添加代码,因为它可能只是一个死胡同。
编辑:
- 将
getDataURL()更正为toDataURL() - 添加了示例应用
【问题讨论】:
-
我不确定
canvas.getDataUrl(),你是说canvas.toDataURL吗?显然,在画布上绘制的任何图像都需要来自同一域才能使 toDataURL 工作...如果您的实例是这种情况,此 url 可能会帮助您coderwall.com/p/pa-2uw。如果这不是问题,我会尝试在 DevTools 中调试对画布的引用,只需检查 toDataURL 的值以及您的调用是否正确。也许用一个孤立的例子更新你的帖子让我们看看? -
嗨,是的,我的意思是
toDataURL,我已经更新了我的问题以修复该错误,干杯。我的印象是,如果我在浏览器中绘制图像(而不是拉入外部图像),我会遇到这些安全问题。这不正确吗?我会尽快发布一些代码和一些开发工具输出。
标签: javascript html canvas google-apps-script