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

时间:2011-08-23 10:26:16

标签: flex alivepdf

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

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

我已粘贴以下代码供参考:

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

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

先谢谢,

此致

作者Srini

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

尝试使用此代码以更高分辨率捕获:

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