Невозможно распечатать содержимое HTML вне экрана из приложения AIR - PullRequest
1 голос
/ 21 августа 2009

Я новичок в Adobe AIR и пытаюсь распечатать HTML-код из своего приложения, однако этот HTML никогда не должен отображаться на экране. Я использую HTMLLoader для этого, согласно некоторому примеру, который я видел в Интернете.

Что происходит, так это то, что есть диалоговое окно печати, но оно печатает пустую страницу.

Если это оконное приложение, и я нажимаю какую-то кнопку для печати (только HTMLLoader), оно печатается.

Ниже приведен мой код.

var mySprite: Sprite = new mySprite ()

var loader: HTMLLoader = новый HTMLLoader () loader.loadString ("АДРЕС
Чт, 20 августа 21:37:20 GMT + 0530 2009
")

var html: HTML = новый HTML ()

html.htmlLoader = loader

mySprite.addChild (HTML);

// После этого довольно стандартно

var pJob: PrintJob = new PrintJob (); html.width = pJob.pageWidth html.height = pJob.pageHeight loader.height = pJob.pageHeight loader.width = pJob.pageWidth

если (! PJob.start ()) { выбросить новую PrintingCanceled («Печать, отмененная пользователем»); } pJob.addPage (загрузчик, ноль); pJob.send (); * * 1 023

Пожалуйста, дайте мне знать, что мне не хватает. Любая помощь или предложения приветствуются.

1 Ответ

0 голосов
/ 21 августа 2009

вы уверены, что страница загружается? рамка не должна быть видимой, НО ей нужен контент. Это означает, что данные htmlLoader должны быть загружены и «показаны» на холсте. Затем вы можете сделать холст невидимым, если не хотите, чтобы пользователи видели, что будет напечатано.

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

   1. // Event Handler - called when the print button is clicked  
   2. private function onPrintClick ():Void  
   3. {  
   4.     // Remove the clipping so all of the content is printed  
   5.     clipForPrinting( true );  
   6.       
   7.     // Start the delay to allow clipping to update before  
   8.     // printing anything.  
   9.     doLater( this, "doActualPrinting" );  
  10. }  
  11.   
  12. // Adjust the clipping to prepare for or recover from print.  
  13. private function clipForPrinting( printing:Boolean ):Void  
  14. {  
  15.     // Assume printing is true if not passed in  
  16.     if ( printing == undefined ) {  
  17.         printing = true;      
  18.     }  
  19.   
  20.     // Modify the root clipContent so the application's width/height  
  21.     // doesn't interfere with bounds of the print content  
  22.     Application.application.clipContent = !printing;  
  23.           
  24.     // Modify the container holding the content to be printed to remove  
  25.     // the scroll masking   
  26.     printArea.clipContent = !printing;  
  27.           
  28. }  
  29.   
  30. // Handles the actual printing of the content in the popup  
  31. private function doActualPrinting():Void  
  32. {  
  33.     var printJob:PrintJob = new PrintJob();  
  34.     // Keep track of # of pages - only print if there are pages to print  
  35.     var pageCount:Number = 0;  
  36.   
  37.     // Show the print dialog  
  38.     if ( printJob.start() ) {  
  39.         // The user has opted to print - add the pages that  
  40.         // need to be printed  
  41.         pageCount += PrintUtil.pagenate( printArea, printJob );  
  42.   
  43.         // Send the content to the printer  
  44.         if ( pageCount > 0 ) {  
  45.             printJob.send();  
  46.         }  
  47.     }  
  48.   
  49.     // Explicitly delete the printJob  
  50.     delete printJob;  
  51.   
  52.     // Fix clipping now that print is done  
  53.     clipForPrinting( false );  
  54. }  

кредитов к оригиналу: Ссылка на источник

...