我使用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,
对
——SriniJPEGEncoder有一个质量参数: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);
}