1818import org .cef .callback .CefFileDialogCallback ;
1919import org .cef .callback .CefJSDialogCallback ;
2020import org .cef .callback .CefMenuModel ;
21+ import org .cef .callback .CefPrintDialogCallback ;
22+ import org .cef .callback .CefPrintJobCallback ;
2123import org .cef .callback .CefRequestCallback ;
2224import org .cef .handler .CefClientHandler ;
2325import org .cef .handler .CefContextMenuHandler ;
3032import org .cef .handler .CefKeyboardHandler ;
3133import org .cef .handler .CefLifeSpanHandler ;
3234import org .cef .handler .CefLoadHandler ;
35+ import org .cef .handler .CefPrintHandler ;
3336import org .cef .handler .CefRenderHandler ;
3437import org .cef .handler .CefRequestHandler ;
3538import org .cef .handler .CefResourceHandler ;
3639import org .cef .handler .CefResourceRequestHandler ;
3740import org .cef .handler .CefScreenInfo ;
3841import org .cef .handler .CefWindowHandler ;
3942import org .cef .misc .BoolRef ;
43+ import org .cef .misc .CefPrintSettings ;
4044import org .cef .misc .StringRef ;
4145import org .cef .network .CefRequest ;
4246import org .cef .network .CefRequest .TransitionType ;
4650
4751import java .awt .Component ;
4852import java .awt .Container ;
53+ import java .awt .Dimension ;
4954import java .awt .FocusTraversalPolicy ;
5055import java .awt .KeyboardFocusManager ;
5156import java .awt .Point ;
6570public class CefClient extends CefClientHandler
6671 implements CefContextMenuHandler , CefDialogHandler , CefDisplayHandler , CefDownloadHandler ,
6772 CefDragHandler , CefFocusHandler , CefJSDialogHandler , CefKeyboardHandler ,
68- CefLifeSpanHandler , CefLoadHandler , CefRenderHandler , CefRequestHandler ,
69- CefWindowHandler {
73+ CefLifeSpanHandler , CefLoadHandler , CefPrintHandler , CefRenderHandler ,
74+ CefRequestHandler , CefWindowHandler {
7075 private HashMap <Integer , CefBrowser > browser_ = new HashMap <Integer , CefBrowser >();
7176 private CefContextMenuHandler contextMenuHandler_ = null ;
7277 private CefDialogHandler dialogHandler_ = null ;
@@ -78,6 +83,7 @@ public class CefClient extends CefClientHandler
7883 private CefKeyboardHandler keyboardHandler_ = null ;
7984 private CefLifeSpanHandler lifeSpanHandler_ = null ;
8085 private CefLoadHandler loadHandler_ = null ;
86+ private CefPrintHandler printHandler_ = null ;
8187 private CefRequestHandler requestHandler_ = null ;
8288 private boolean isDisposed_ = false ;
8389 private volatile CefBrowser focusedBrowser_ = null ;
@@ -203,6 +209,11 @@ protected CefLoadHandler getLoadHandler() {
203209 return this ;
204210 }
205211
212+ @ Override
213+ protected CefPrintHandler getPrintHandler () {
214+ return this ;
215+ }
216+
206217 @ Override
207218 protected CefRenderHandler getRenderHandler () {
208219 return this ;
@@ -587,6 +598,7 @@ private void cleanupBrowser(int identifier) {
587598 removeKeyboardHandler (this );
588599 removeLifeSpanHandler (this );
589600 removeLoadHandler (this );
601+ removePrintHandler (this );
590602 removeRenderHandler (this );
591603 removeRequestHandler (this );
592604 removeWindowHandler (this );
@@ -634,6 +646,57 @@ public void onLoadError(CefBrowser browser, CefFrame frame, ErrorCode errorCode,
634646 loadHandler_ .onLoadError (browser , frame , errorCode , errorText , failedUrl );
635647 }
636648
649+ // CefPrintHandler
650+
651+ public CefClient addPrintHandler (CefPrintHandler handler ) {
652+ if (printHandler_ == null ) printHandler_ = handler ;
653+ return this ;
654+ }
655+
656+ public void removePrintHandler () {
657+ printHandler_ = null ;
658+ }
659+
660+ @ Override
661+ public void onPrintStart (CefBrowser browser ) {
662+ if (printHandler_ != null && browser != null ) printHandler_ .onPrintStart (browser );
663+ }
664+
665+ @ Override
666+ public void onPrintSettings (
667+ CefBrowser browser , CefPrintSettings settings , boolean getDefaults ) {
668+ if (printHandler_ != null && browser != null )
669+ printHandler_ .onPrintSettings (browser , settings , getDefaults );
670+ }
671+
672+ @ Override
673+ public boolean onPrintDialog (
674+ CefBrowser browser , boolean hasSelection , CefPrintDialogCallback callback ) {
675+ if (printHandler_ != null && browser != null )
676+ return printHandler_ .onPrintDialog (browser , hasSelection , callback );
677+ return false ;
678+ }
679+
680+ @ Override
681+ public boolean onPrintJob (CefBrowser browser , String documentName , String pdfFilePath ,
682+ CefPrintJobCallback callback ) {
683+ if (printHandler_ != null && browser != null )
684+ return printHandler_ .onPrintJob (browser , documentName , pdfFilePath , callback );
685+ return false ;
686+ }
687+
688+ @ Override
689+ public void onPrintReset (CefBrowser browser ) {
690+ if (printHandler_ != null && browser != null ) printHandler_ .onPrintReset (browser );
691+ }
692+
693+ @ Override
694+ public Dimension getPdfPaperSize (CefBrowser browser , int deviceUnitsPerInch ) {
695+ if (printHandler_ != null && browser != null )
696+ return printHandler_ .getPdfPaperSize (browser , deviceUnitsPerInch );
697+ return null ;
698+ }
699+
637700 // CefMessageRouter
638701
639702 @ Override
0 commit comments