1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime;
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski public class DocumentPrinter {
main(String args[])28*b1cdbd2cSJim Jagielski     public static void main(String args[]) {
29*b1cdbd2cSJim Jagielski         if ( args.length < 3 ) {
30*b1cdbd2cSJim Jagielski             System.out.println("usage: java -jar DocumentLoader.jar " +
31*b1cdbd2cSJim Jagielski                                "\"<Favoured printer>\" \"<URL|path>\" \"<Pages>\"");
32*b1cdbd2cSJim Jagielski             System.out.println( "\ne.g.:" );
33*b1cdbd2cSJim Jagielski             System.out.println("java -jar DocumentLoader.jar \"amadeus\" " +
34*b1cdbd2cSJim Jagielski                                "\"file:///f:/TestPrint.odt\" \"1-3;7;9\"");
35*b1cdbd2cSJim Jagielski             System.exit(1);
36*b1cdbd2cSJim Jagielski       }
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski         com.sun.star.uno.XComponentContext xContext = null;
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski         try {
41*b1cdbd2cSJim Jagielski             // get the remote office component context
42*b1cdbd2cSJim Jagielski             xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
43*b1cdbd2cSJim Jagielski             System.out.println("Connected to a running office ...");
44*b1cdbd2cSJim Jagielski 
45*b1cdbd2cSJim Jagielski             // get the remote office service manager
46*b1cdbd2cSJim Jagielski             com.sun.star.lang.XMultiComponentFactory xMCF =
47*b1cdbd2cSJim Jagielski                 xContext.getServiceManager();
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski             Object oDesktop = xMCF.createInstanceWithContext(
50*b1cdbd2cSJim Jagielski                 "com.sun.star.frame.Desktop", xContext);
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski             com.sun.star.frame.XComponentLoader xCompLoader =
53*b1cdbd2cSJim Jagielski                 (com.sun.star.frame.XComponentLoader)
54*b1cdbd2cSJim Jagielski                      UnoRuntime.queryInterface(
55*b1cdbd2cSJim Jagielski                          com.sun.star.frame.XComponentLoader.class, oDesktop);
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski             java.io.File sourceFile = new java.io.File(args[1]);
58*b1cdbd2cSJim Jagielski             StringBuffer sUrl = new StringBuffer("file:///");
59*b1cdbd2cSJim Jagielski             sUrl.append(sourceFile.getCanonicalPath().replace('\\', '/'));
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski             // Load a Writer document, which will be automaticly displayed
62*b1cdbd2cSJim Jagielski             com.sun.star.lang.XComponent xComp = xCompLoader.loadComponentFromURL(
63*b1cdbd2cSJim Jagielski                 sUrl.toString(), "_blank", 0,
64*b1cdbd2cSJim Jagielski                 new com.sun.star.beans.PropertyValue[0] );
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski             // Querying for the interface XPrintable on the loaded document
67*b1cdbd2cSJim Jagielski             com.sun.star.view.XPrintable xPrintable =
68*b1cdbd2cSJim Jagielski                 (com.sun.star.view.XPrintable)UnoRuntime.queryInterface(
69*b1cdbd2cSJim Jagielski                     com.sun.star.view.XPrintable.class, xComp);
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski             // Setting the property "Name" for the favoured printer (name of
72*b1cdbd2cSJim Jagielski             // IP address)
73*b1cdbd2cSJim Jagielski             com.sun.star.beans.PropertyValue propertyValue[] =
74*b1cdbd2cSJim Jagielski                 new com.sun.star.beans.PropertyValue[1];
75*b1cdbd2cSJim Jagielski             propertyValue[0] = new com.sun.star.beans.PropertyValue();
76*b1cdbd2cSJim Jagielski             propertyValue[0].Name = "Name";
77*b1cdbd2cSJim Jagielski             propertyValue[0].Value = args[ 0 ];
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski             // Setting the name of the printer
80*b1cdbd2cSJim Jagielski             xPrintable.setPrinter( propertyValue );
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski             // Setting the property "Pages" so that only the desired pages
83*b1cdbd2cSJim Jagielski             // will be printed.
84*b1cdbd2cSJim Jagielski             propertyValue[0] = new com.sun.star.beans.PropertyValue();
85*b1cdbd2cSJim Jagielski             propertyValue[0].Name = "Pages";
86*b1cdbd2cSJim Jagielski             propertyValue[0].Value = args[ 2 ];
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski             // Printing the loaded document
89*b1cdbd2cSJim Jagielski             xPrintable.print( propertyValue );
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski             System.exit(0);
92*b1cdbd2cSJim Jagielski         }
93*b1cdbd2cSJim Jagielski         catch( Exception e ) {
94*b1cdbd2cSJim Jagielski             e.printStackTrace(System.err);
95*b1cdbd2cSJim Jagielski             System.exit(1);
96*b1cdbd2cSJim Jagielski         }
97*b1cdbd2cSJim Jagielski     }
98*b1cdbd2cSJim Jagielski }
99