Я написал некоторый код для преобразования TIFF-файлов в PDF-файлы с помощью Itext7. Но когда я запускаю его, он блокируется на методе Image.ImageDataFactory.CreateTiff
. Если заменить Parallel.Foreach на foreach, все работает правильно. Что я делаю не так?
void Run(List<string> tiffsPaths)
{
Parallel.ForEach(tiffsPaths, ConvertTiffToPdf)
}
void ConvertTiffToPdf(string tiffPath)
{
var fileName = Path.GetFileNameWithoutExtension(tiffPath);
var pdfPath = Path.Combine(this.outputPicPath, fileName + ".pdf");
var pdfWriter = new PdfWriter(pdfPath);
var document = new PdfDocument(pdfWriter);
var workDir = Path.GetDirectoryName(SourceFile) ?? string.Empty;
var pageNum = 1;
var tiffImage = Image.ImageDataFactory.CreateTiff(new Uri(tiffPath), true, pageNum, true);
var tiffPageSize = new Geom.Rectangle(tiffImage.GetWidth(),
tiffImage.GetHeight());
var newPage = document.AddNewPage(new Geom.PageSize(tiffPageSize));
var canvas = new PdfCanvas(newPage);
canvas.AddImage(tiffImage, tiffPageSize, false);
document.Close();
pdfWriter.Close();
}
UPD
Найден, где внутри тупика находится исходный код IText7 в методе public IRandomAccessSource CreateSource(Uri url)
класса itext.io.source.RandomAccessSourceFactory
. Там эта часть кода:
WebRequest wr = WebRequest.Create(url);
wr.Credentials = CredentialCache.DefaultCredentials;
Stream isp = wr.GetResponse().GetResponseStream();