我目前正在尝试使用一堆图片在我的网站上生成PDF报告。所有这些图像都以原始大小存储在Azure blob存储中。
在整个网站中我使用带有Azure和DiskCache插件的ImageResizer中间件,它们工作得很好,但是对于PDF报告我似乎必须使用ImageResizer API,它只接受Stream,Bitmap或路径作为输入。
我当前的实现在技术上有效(下载blob并提供流),但速度非常慢。
有没有办法在使用磁盘缓存时调用API?我试图提供类似/azure/someblob.jpg的路径,但它不起作用。
编辑:根据Natahniel的建议,我想出了这个解决方案(用于iTextSharp):
private Image GetImageResized(string path) {
var request = HttpContext.Current.Request.Url;
var uri = new Uri(request.Scheme + "://" + request.Authority + "/" + path, UriKind.Absolute);
Stream dest = null;
using (var client = new WebClient()) {
dest = new MemoryStream(client.DownloadData(uri));
}
return iTextSharp.text.Image.GetInstance(dest);
}
这种情况下的路径类似于azure / mycontainer / someblob.jpg?height = 500
答案 0 :(得分:0)
应该是/ azure/path/to/document.pdf?format=png&page=1
HTTP API支持Azure提供的PDF blob的磁盘缓存,这种情况最适合这种情况。