-1

我目前正在尝试在我的网站上生成包含一堆图像的 PDF 报告。所有这些图像都以其原始大小存储在 Azure blob 存储中。

在整个网站中,我都在使用带有 Azure 和 DiskCache 插件的 ImageResizer 中间件,它们运行良好,但是对于 PDF 报告,我似乎必须使用 ImageResizer API,它只接受流、位图或路径作为输入。

我当前的实现在技术上有效(即下载 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

4

1 回答 1

0

它应该类似于 /azure/path/to/document.pdf?format=png&page=1

HTTP API 支持 Azure 提供的 PDF blob 的磁盘缓存,这对于这种情况是最好的。

于 2018-03-19T20:47:43.697 回答