【发布时间】:2019-07-08 06:25:13
【问题描述】:
我想将通过 Javascript 从 HTML5 画布检索到的 base64 字符串保存到使用 Tcl 的 PDF 文件中。
我通过 JS 从 Canvas 获得 base 64 SDtring:let data = chart.getImage('stream').data;
同时我将这个base64数据保存在一个文件中进行测试。在我的 Tcl 脚本中,我加载此文件并尝试使用包 pdf4tcl 进行转换。
#! /bin/env tclsh
# import Tcl (optional) but makes script more portable
package require Tcl
# import pdf4tcl
lappend auto_path "C:/Users/ - deleted for privacy ^^ -"
package require pdf4tcl
# Read demo File (contains base64 encoded canvas)
set fp [open "singerGraph.txt" r]
set canvas_data [read $fp]
close $fp
# create a pdf object
pdf4tcl::new mypdf -paper a4 -margin 15mm
mypdf startPage
# this command doesnt work
# mypdf putRawImage $image_data 60 20 -height 40
# write pdf to a file
mypdf write -file mypdf.pdf
mypdf destroy
putRawImage 方法产生
instead
while executing
"binary format H* $row"
(class "::pdf4tcl::pdf4tcl" method "putRawImage" line 88)
invoked from within
"mypdf putRawImage $canvas_data 60 20 -height 40"
(file "base64ToPdf.tcl" line 28)
但我认为无论如何这是错误的命令......
对于一个简单的测试,这个 base 64 可能就足够了
data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
但是我的数据以:data:application/octet-stream;base64, 开头,但我不知道这是否重要。测试数据太长,无法粘贴到这里。
有人能引导我走向正确的方向吗?所以我现在可以将这些数据转换成 PDF 甚至 PNG 就足够了。
【问题讨论】:
标签: tcl