public static iTextSharp.text.Image GetITextSharpImageFromImageFile(this string imageFilePath, bool cacheImages = true)
{
if (!cacheImages)
return iTextSharp.text.Image.GetInstance(imageFilePath).checkImage();
iTextSharp.text.Image image;
var pathHash = imageFilePath.ToLowerInvariant().MD5Hash();
if (_imageFilesCache.TryGetValue(pathHash, out image))
return image.checkImage();
image = iTextSharp.text.Image.GetInstance(imageFilePath);
_imageFilesCache.Add(pathHash, image);
return image.checkImage();
}