Eski pdf dosyalarını, eski görüntü tarayıcıları için ayrı görüntü dosyaları olarak dönüştürmeye çalıştığımda, ABCPdf ile ilgili bir sorunum var.İşleme başlamadan önce ABCPdf ile sayfayı yeniden boyutlandırma (pdf'deki büyük resimler)
Sayfayı mükemmel şekilde işleyen ve görüntüyü istenen boyuta yeniden boyutlandıran bazı çalışma kodum var. Şimdi benim sorunum pdf sayfası büyük w7681px x h10978px
olduğunda oluşur. Geliştirme makinemi neredeyse öldürüyor ve dağıtım makinesi dosyayı bile çiğnemiyor.
Normalde sayfa 1'i 1'i pdf sayfası olarak oluşturuyorum ve sonra bu görüntüyü yeniden boyutlandırmak için başka algoritmalar kullanıyorum. Bu, ABCPdf bu görüntüyü çıkarmak için bir sürü güç aldığından, verimli değildir. Ben aşağıdaki çözümleri denedim
private byte[] GeneratePng(Doc pdfDoc, int dpi)
{
var useDpi = dpi;
pdfDoc.Rendering.DotsPerInch = useDpi;
pdfDoc.Rendering.SaveQuality = 100;
pdfDoc.Rect.String = pdfDoc.CropBox.String;
pdfDoc.Rendering.ResizeImages = true;
int attemptCount = 0;
for (;;)
{
try
{
return pdfDoc.Rendering.GetData("defineFileTypeDummyString.png");
}
catch
{
if (++attemptCount == 3) throw;
}
}
}
: sayfa
pdfDoc.SetInfo(pdfDoc.Page, "/MediaBox:Rect", "0 0 200 300");
sayfayı yeniden boyutlandırma ve çıktısı yeniden boyutlandırma
Aşağıdaki kod var. Hangisi hiçbir değişiklik yapmıyor gibi görünüyor. işleme önce görüntüleri yeniden boyutlandırma
:
foreach (IndirectObject io in pdfDoc.ObjectSoup) {
if (io is PixMap) {
PixMap pm = (PixMap)io;
pm.Realize(); // eliminate indexed color images
pm.Resize(pm.Width/4, pm.Height/4);
}
}
şey yapmadım ya ve hala uzun bir yükleme süresine sonuçlandı.
görüntülenmesinden önce reduzed boyutu operasyonu Koşu:
using (ReduceSizeOperation op = new ReduceSizeOperation(pdfDoc))
op.Compact(true);
de bir şey yapmadım. Sadece doğrudan render yapmaya ve uzun bir zaman aldı.
Bana yardım eden var mı? Belki beni ABCPdf yeniden boyutlandırma algoritmasına veya başka bir şeye işaret et.