Flex Alive PDF - Добавление изображений с высоким разрешением - PullRequest
2 голосов
/ 23 августа 2011

Я использую AlivePDF для печати компонентов во флекс.Компоненты имеют текст и изображения, создаются динамически.В этом у нас есть изображение с высоким разрешением и текст со встроенным стилем шрифта.Качество вывода текста и изображения в AlivePDF не очень хорошее.Текст выглядит размытым, а качество изображения не таким четким, как мы видим на исходном изображении.

Я пытался добавить страницу в качестве imagestream, но качество вывода все равно не изменилось.

Я вставил приведенный ниже код для справки:

var image:ImageSnapshot = ImageSnapshot.captureImage(
    templGroup.getChildAt(i),300,new mx.graphics.codec.JPEGEncoder());
printPDF.addImageStream(image.data,"",null,0,0);

Дайте мне знать, есть ли способ улучшить качество выходного изображения в формате PDF из живого файла PDF.

Заранее спасибо,

С уважением

Срини

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

JPEGEncoder имеет аргумент качества: JPEGEncoder (качество = 50), измените его на 90, и результаты будут намного лучше, т.е. новый JPEGEncoder (90);

0 голосов
/ 23 августа 2011

Попробуйте этот код для захвата в более высоком разрешении:

function capture(source: DisplayObject, dpi:uint = 72, bgColor:Number = 0xFFFFFF): BitmapData
{
    var scale:Number = dpi/72.0;
    var bmd:BitmapData = new BitmapData(source.width * scale, source.height * scale, false, bgColor);
    var m: Matrix = new Matrix();
    m.scale(scale, scale);
    bmd.draw(source, m);
    return bmd;
}

Вы можете использовать это так:

function addHighResSnapshot(pdf: PDF, snapshotObject: DisplayObject, imageRect: Rectangle, dpi: uint = 300): void
{
    var bitmapData: BitmapData = capture(snapshotObject, dpi);
    var encodedImage: ByteArray = new JPEGEncoder().encode(bitmapData);
    pdf.addImageStream(encodedImage, ColorSpace.DEVICE_RGB, null, 
        imageRect.x, imageRect.y, imageRect.width, imageRect.height);
}
...