ios/Mobile/DocumentViewController.mm |   27 +++++++++++++++++++++++++++
 loleaflet/src/control/Toolbar.js     |    8 ++++++--
 2 files changed, 33 insertions(+), 2 deletions(-)

New commits:
commit f1508239b3f71e36e53aa305be5dfa7498dfec45
Author:     Tor Lillqvist <t...@collabora.com>
AuthorDate: Tue Feb 26 17:44:00 2019 +0200
Commit:     Tor Lillqvist <t...@collabora.com>
CommitDate: Tue Mar 5 09:50:59 2019 +0200

    tdf#122584: Implement printing in the iOS app
    
    I don't have an AirPrint printer so I couldn't verify that it actually
    prints, but the system print dialog is displayed and shows a preview
    correctly, so I am fairly sure it works.
    
    Change-Id: I5e8a704386cd5053b8689dc63f26e545df323193

diff --git a/ios/Mobile/DocumentViewController.mm 
b/ios/Mobile/DocumentViewController.mm
index fa3d77648..b6c128b56 100644
--- a/ios/Mobile/DocumentViewController.mm
+++ b/ios/Mobile/DocumentViewController.mm
@@ -294,6 +294,32 @@
             self.webView.hidden = false;
 
             return;
+        } else if ([message.body isEqualToString:@"PRINT"]) {
+
+            // Create the PDF to print.
+
+            std::string printFile = Util::createRandomTmpDir() + "/print.pdf";
+            NSURL *printURL = [NSURL fileURLWithPath:[NSString 
stringWithUTF8String:printFile.c_str()] isDirectory:NO];
+            lok_document->saveAs([[printURL absoluteString] UTF8String], 
"pdf", nullptr);
+
+            UIPrintInteractionController *pic = [UIPrintInteractionController 
sharedPrintController];
+            UIPrintInfo *printInfo = [UIPrintInfo printInfo];
+            printInfo.outputType = UIPrintInfoOutputGeneral;
+            printInfo.orientation = UIPrintInfoOrientationPortrait; // FIXME 
Check the document?
+            printInfo.jobName = @"Document"; // FIXME
+
+            pic.printInfo = printInfo;
+            pic.printingItem = printURL;
+
+            [pic presentFromRect:CGRectZero
+                          inView:self.webView
+                        animated:YES
+               completionHandler:^(UIPrintInteractionController *pic, BOOL 
completed, NSError *error) {
+                    LOG_TRC("print completion handler gets " << 
(completed?"YES":"NO"));
+                    std::remove(printFile.c_str());
+                }];
+
+            return;
         }
 
         const char *buf = [message.body UTF8String];
@@ -309,3 +335,4 @@
 @end
 
 // vim:set shiftwidth=4 softtabstop=4 expandtab:
+
diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js
index 7e871a0db..8f3820431 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -81,8 +81,12 @@ L.Map.include({
        },
 
        print: function () {
-               this.showBusy(_('Downloading...'), false);
-               this.downloadAs('print.pdf', 'pdf', null, 'print');
+               if (window.ThisIsTheiOSApp) {
+                       window.webkit.messageHandlers.lool.postMessage('PRINT', 
'*');
+               } else {
+                       this.showBusy(_('Downloading...'), false);
+                       this.downloadAs('print.pdf', 'pdf', null, 'print');
+               }
        },
 
        saveAs: function (url, format, options) {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to