Печать AS3 при разрешении 300 dpi - PrintJob - PullRequest
2 голосов
/ 09 июня 2011

У меня есть изображение 2490x3510 пикселей (300 точек на дюйм A4), и мне нужно распечатать его из flash-as3. Судя по всему, Printjob / options не имеет настройки или значения DPI (спасибо Adobe: - /).

Так кто-нибудь знает, как печатать с разрешением 300 dpi прямо из as3?

Примечание: мне нужно печатать прямо из as3. У меня уже есть возможность вывода в PDF с разрешением 300 dpi, но я также хочу позволить пользователям печатать прямо с флэш-памяти.

Большое спасибо.

Ответы [ 5 ]

4 голосов
/ 09 июня 2011

Похоже, что flash.printing.PrintJobOptions.pixelsPerInch только для AIR, и если вы не используете AIR, вы ограничены настройками принтера пользователя.

3 голосов
/ 09 июня 2011

Вы можете установить любое разрешение изображения для печати в веб-приложении. Вы просто делаете это до 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();

Естественно, чем выше разрешение, тем лучше печать, но за счет большего размера файла, поэтому попробуйте разные разрешения, чтобы найти минимальное, которое дает приемлемые результаты.

НТН, Игорь Бородин

2 голосов
/ 09 июня 2011

Кажется, что лучшее, что вы можете сделать, - это попросить своих пользователей убедиться, что они отмечают опцию «сжать до страницы», если вы не используете AIR.

1 голос
/ 13 июля 2011

Мой собственный ответ после большого количества исследований и потраченных впустую часов / дней:

AS3 Printjob бесполезен, иногда он дает правильный DPI, иногда нет, все зависит от настроек принтера, ОС ибраузер.(Спасибо Adobe за то, что я превратил мою жизнь в кошмар).

Теперь вы также можете использовать FlexPrintJob, добавить свое изображение в качестве элемента / дочернего элемента (источник 300 точек на дюйм), предупредить пользователя, что ему нужно установить 300 точек на дюйм на своем принтере.настройки 'тогда все работает (Win + MacOS протестировано) :-)

Я очень разочарован в Adobe, они должны просто отказаться от PrintJob и начать все заново.

Надеюсь, это поможет (ну хоть для флекса).

0 голосов
/ 09 февраля 2013

была такая же проблема. этот мне очень помог http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cc6.html

quote from link "Если вы хотите масштабировать объект Sprite перед его печатью, задайте свойства масштаба (см. Раздел Управление размерами и объектами масштабирования) перед вызовом метода PrintJob.addPage () и установите для них исходные значения. после печати. ​​Масштаб объекта Sprite не имеет отношения к свойству printArea. Другими словами, если вы укажете область печати размером 50 на 50 пикселей, будет напечатано 2500 пикселей. Если вы масштабируете объект Sprite, то же самое 2500 пиксели печатаются, но объект Sprite печатается в масштабе. "

другими словами - вы должны использовать printJob.pageHeight и printJob.pageWidth и масштабировать свой Sprite в соответствии с этими значениями перед вызовом printJob.addPage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...