我正在尝试将图像插入到pdf中,我正在使用PDFkit创建服务器端.我正在使用cfs:dropbox来存储我的文件.在我使用cvs:filesystem之前,很容易将图像添加到我的pdf中,因为它们就在那里.现在它们被远程存储,我不知道如何添加它们,因为PDFkit不支持仅使用url添加图像.但是,它会接受一个缓冲区.如何从我的CollectionFS文件中获取缓冲区?
到目前为止,我有这样的事情:
var portrait = Portraits.findOne('vS2yFy4gxXdjTtz5d');
readStream = portrait.createReadStream('portraits');
Run Code Online (Sandbox Code Playgroud)
到目前为止,我试过两种方式获取缓冲区:
首先使用dataMan,但最后一个命令永远不会回来:
var dataMan = new DataMan.ReadStream(readStream, portrait.type());
var buffer = Meteor.wrapAsync(Function.prototype.bind(dataMan.getBuffer, dataMan))();
Run Code Online (Sandbox Code Playgroud)
第二次手动缓冲流:
var buffer = new Buffer(0);
readStream.on('readable', function() {
buffer = Buffer.concat([buffer, readStream.read()]);
});
readStream.on('end', function() {
console.log(buffer.toString('base64'));
});
Run Code Online (Sandbox Code Playgroud)
这似乎永远不会回来.我仔细检查了我的文档以确保它在那里并且它有一个有效的URL并且当我将URL放入浏览器时图像出现.我错过了什么吗?
我正在使用meteor(基于节点构建)和CollectionCFS(允许我使用gm [GraphicsMagick]进行缩略).
我执行以下操作以自动创建上传图像的缩略图:
new FS.Store.FileSystem("thumbs", {
transformWrite: function(fileObj, readStream, writeStream) {
gm(readStream, fileObj.name()).resize('100', '100').stream().pipe(writeStream);
},
path: "/Volumes/Public/Thumbs",
})
Run Code Online (Sandbox Code Playgroud)
transformWrite函数接收readStream(原始图像),修改它并将结果传递给writeStream.我怎么能创建PDF的缩略图?
事件成功后我需要导航到路线.自从以前的版本以来,这似乎已经改变了 以前我们会这样做:
import { browserHistory } from 'react-router';
...
handleClick(){
doSomething();
browserHistory.push('/some/path');
}
Run Code Online (Sandbox Code Playgroud) 现在我在这里使用代码:https://github.com/CollectionFS/Meteor-CollectionFS#basic-example 假设我想要一个缩略图100x100.
但是说我的图像是400x200,上面的代码将产生100x50的缩略图.
我想在这个例子中发生的是将图像大小调整为200x100,然后剪切为100x100.我怎么做?我怎样才能获得高度和宽度?我知道我可以使用gm的大小函数,但我无法绕过所有的回调.