Flex Alive PDF -添加高分辨率图像



我使用AlivePDF打印flex中的组件。组件有文本和图像,是动态创建的。在这种情况下,我们有高分辨率的图像和嵌入字体样式的文本。AlivePDF的输出文本和图像质量不好。文本看起来模糊,图像质量不如我们在原始图像中看到的那么清晰。

我尝试将页面添加为imageststream,但输出质量仍然相同。

我粘贴了下面的代码以供参考:

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

让我知道,是否有任何方法可以提高pdf输出的图像质量。

Thanks in Advance,

——Srini

JPEGEncoder有一个质量参数:JPEGEncoder(quality = 50),将其更改为90,结果会更好,即新的JPEGEncoder(90);

尝试以下代码在更高分辨率下进行捕获:

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);
}

相关内容

  • 没有找到相关文章

最新更新