1 /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
4 * The Contents of this file are made available subject to the terms of
7 * Copyright 2000, 2010 Oracle and/or its affiliates.
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. Neither the name of Sun Microsystems, Inc. nor the names of its
19 * contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
29 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
30 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
31 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
32 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *************************************************************************/
36 import com
.sun
.star
.uno
.UnoRuntime
;
39 public class DocumentPrinter
{
40 public static void main(String args
[]) {
41 if ( args
.length
< 3 ) {
42 System
.out
.println("usage: java -jar DocumentLoader.jar " +
43 "\"<Favoured printer>\" \"<URL|path>\" \"<Pages>\"");
44 System
.out
.println( "\ne.g.:" );
45 System
.out
.println("java -jar DocumentLoader.jar \"amadeus\" " +
46 "\"file:///f:/TestPrint.odt\" \"1-3;7;9\"");
50 com
.sun
.star
.uno
.XComponentContext xContext
= null;
53 // get the remote office component context
54 xContext
= com
.sun
.star
.comp
.helper
.Bootstrap
.bootstrap();
55 System
.out
.println("Connected to a running office ...");
57 // get the remote office service manager
58 com
.sun
.star
.lang
.XMultiComponentFactory xMCF
=
59 xContext
.getServiceManager();
61 Object oDesktop
= xMCF
.createInstanceWithContext(
62 "com.sun.star.frame.Desktop", xContext
);
64 com
.sun
.star
.frame
.XComponentLoader xCompLoader
=
65 UnoRuntime
.queryInterface(
66 com
.sun
.star
.frame
.XComponentLoader
.class, oDesktop
);
68 java
.io
.File sourceFile
= new java
.io
.File(args
[1]);
69 StringBuffer sUrl
= new StringBuffer("file:///");
70 sUrl
.append(sourceFile
.getCanonicalPath().replace('\\', '/'));
72 // Load a Writer document, which will be automatically displayed
73 com
.sun
.star
.lang
.XComponent xComp
= xCompLoader
.loadComponentFromURL(
74 sUrl
.toString(), "_blank", 0,
75 new com
.sun
.star
.beans
.PropertyValue
[0] );
77 // Querying for the interface XPrintable on the loaded document
78 com
.sun
.star
.view
.XPrintable xPrintable
=
79 UnoRuntime
.queryInterface(
80 com
.sun
.star
.view
.XPrintable
.class, xComp
);
82 // Setting the property "Name" for the favoured printer (name of
84 com
.sun
.star
.beans
.PropertyValue propertyValue
[] =
85 new com
.sun
.star
.beans
.PropertyValue
[1];
86 propertyValue
[0] = new com
.sun
.star
.beans
.PropertyValue();
87 propertyValue
[0].Name
= "Name";
88 propertyValue
[0].Value
= args
[ 0 ];
90 // Setting the name of the printer
91 xPrintable
.setPrinter( propertyValue
);
93 // Setting the property "Pages" so that only the desired pages
95 propertyValue
[0] = new com
.sun
.star
.beans
.PropertyValue();
96 propertyValue
[0].Name
= "Pages";
97 propertyValue
[0].Value
= args
[ 2 ];
99 // Printing the loaded document
100 xPrintable
.print( propertyValue
);
104 catch( Exception e
) {
105 e
.printStackTrace(System
.err
);
111 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */