我使用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
答案 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);
}