Изображения Stackpanel с ghostscript.net
Я конвертирую многостраничные PDF файлы в JPG и сохраняю их на диск с помощью ghostscript.net-да. Затем я добавляю их в stackpanel (вертикальная ориентация) на холсте внутри ScrollViewer. Это хорошо работает для небольших документов, однако более крупные документы работают только примерно до 10-й страницы при 500 dpi. Что-то большее, чем это, и они, кажется, не появляются в моей стековой панели. Однако, когда я уменьшаю DPI, я могу получить больше страниц, но они, конечно, меньше, что нежелательно.
Я делаю это внутри цикла for и сначала думал, что он катится через цикл слишком быстро, а запись на жесткий диск была слишком медленной, поэтому я вставил в цикл какой-то поток.sleep(2000), чтобы попытаться замедлить его, но это никак не повлияло на количество появившихся страниц.
Я не уверен и не могу найти никакой документации, чтобы указать, является ли это проблемой с тем, сколько информации может появиться в stackpannel, или если есть ограничение на растеризацию ghostscript или растеризацию.getpage()
Что я уже пробовал:
<pre> using (var rasterizer = new GhostscriptRasterizer()) //create an instance for GhostscriptRasterizer { //opens the PDF file for rasterizing string mydocpath = myDir; //Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); rasterizer.Open("test.pdf"); var rasterimg = new GhostscriptRasterizer(); rasterimg.("test.pdf"); double imgHeight = 0; for (int i = 1; i <= rasterizer.PageCount; i++) { rasterimg.Open("test.pdf"); var img = rasterizer.GetPage(400, 400, i); rasterimg.Dispose(); img.Save(mydocpath + "/test_"+i+".jpg", ImageFormat.Jpeg); string imgPath = mydocpath + "/test_" + i + ".jpg"; Image myImage = new Image(); myImage.Name = "test_" + i; myImage.Source = new BitmapImage(new Uri("File://" + imgPath)); pdfcanvas.Children.Add(myImage); imgHeight = imgHeight + myImage.Source.Height; if (pdfcanvas1.Width <= myImage.Source.Width) { pdfcanvas1.Width = myImage.Source.Width; } } pdfcanvas1.Height = imgHeight; }
Richard Deeming
Почему ты звонишь Open
и Dispose
на rasterimg
внутри петли? Просто откройте файл один раз, вне цикла, и избавьтесь от него после завершения цикла.