AS3打印@ 300 dpi - PrintJob

时间:2011-06-09 10:25:38

标签: flash flex actionscript-3 actionscript printing

我的图像为2490x3510像素(300dpi A4),我需要从flash-as3打印。 从外观上看,Printjob / options没有DPI设置或值(感谢adobe: - /)。

那么有谁知道如何直接从as3以300 dpi打印?

注意:我需要直接从as3打印。我已经有了输出到PDF @ 300dpi的选项,但我也想让用户直接从flash中打印。

非常感谢。

5 个答案:

答案 0 :(得分:4)

似乎flash.printing.PrintJobOptions.pixelsPerInch仅限AIR,如果您不使用AIR,则仅限于用户打印机的设置。

答案 1 :(得分:3)

您可以在Web应用程序中设置任何图像分辨率以进行打印。您只需在 之前 执行PrintJob。 这是适合我的方式。 使用Loader下载图像后(无论您想要什么分辨率),请为PrintJob设置变量。

        var btm:Bitmap = Bitmap(yourLoader.content);
        var btmData:BitmapData = btm.bitmapData;
        var matrix:Matrix = new Matrix();
        matrix.scale(612/btmData.width, 791/btmData.height); // '612' and '791' ensure that the image would fit standard page
        yourImagePrintSprite.graphics.beginBitmapFill(btmData, matrix, false);
        yourImagePrintSprite.graphics.lineStyle(1,0x000000, 0); // this rectangle (frame) serves as canvas for the BitmapFill; without it the image is not rendered.
        yourImagePrintSprite.graphics.drawRect(0, 0, 612, 791); 
        yourImageSprite.graphics.endFill();

当然,分辨率越高 - 打印效果越好,但是以更大的文件大小为代价,因此请尝试不同的分辨率,找出哪种最小值可以获得可接受的结果。

HTH, 伊戈尔鲍罗丁

答案 2 :(得分:2)

似乎您可以做的最好的事情是让用户确保他们检查“缩小到页面”选项,除非您使用AIR。

答案 3 :(得分:1)

经过大量研究和浪费时间/天后,我自己的答案:

AS3 Printjob没用,它有时会产生正确的DPI,有时它不会,这一切都取决于你的打印机设置,操作系统和浏览器。 (感谢Adobe让我的生活成为一场噩梦。)

现在,你也可以使用FlexPrintJob,将你的图像添加为元素/子元素(源300dpi),警告用户他们需要在'打印机设置'上设置300dpi然后一切正常(Win + MacOS测试): - )

我对Adobe非常失望,他们应该废弃PrintJob并重新开始。

希望这有助于(至少对于flex而言)。

答案 4 :(得分:0)

有同样的问题。这个给了我很多帮助http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cc6.html

引自链接“如果要在打印之前缩放Sprite对象,请在调用PrintJob.addPage()方法之前设置缩放属性(请参阅操作大小和缩放对象),并将它们设置回原始值打印后.Sprite对象的比例与printArea属性无关。换句话说,如果指定50像素×50像素的打印区域,则打印2500像素。如果缩放Sprite对象,则相同2500打印像素,但Sprite对象以缩放尺寸打印。“

换句话说 - 你应该使用printJob.pageHeight和printJob.pageWidth并在printJob.addPage调用之前根据这些值调整你的Sprite