2

我正在使用 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 输出图像质量。

提前致谢,

问候

斯里尼

4

2 回答 2

2

JPEGEncoder有一个质量参数:JPEGEncoder(quality = 50),改成90效果会好很多,即new JPEGEncoder(90);

于 2012-03-28T20:40:23.763 回答
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);
}
于 2011-08-23T11:03:20.717 回答