I have a client who is using OOo 2.0 on Winodws XP as part of a Java program
I've written.  I'd like to upgrade, but since my software has to install my
program and OOo -- and know where OOo is being installed to, it's quite
difficult to upgrade my software every time OOo upgrades.  In other words,
using a later version is not a desirable solution, since it takes me a day
or two whenever I have to use the new OOo installer and make sure
everything works on both Linux and Windows.

When she runs my program on her computer, it generates a number of .odt
or .sxw files.  Once generated these files could sit for a while or could
be used immediately for printing.  In this case, it turns out that when we
generate .sxw files, they're printing just fine, but any .odt files are not
printing -- they show up as blank sheets of paper.  (In call cases the
files are only 1 page long so I have no way of checking the length of the
documents when they print.)  As if that weren't odd enough, if she runs OOo
and uses the GUI and loads them on her own and then prints them, they print
fine!

In other words, when I load files through the Java API, if they're .sxw they
print, if they're .odt, a blank page prints instead, but loading any of the
files through the GUI allows them to print fine.

This version of my program has worked on other XP systems previously.  I'd
test it myself, but my XP system is temporarily down and likely won't be up
until I can transfer data from the other partitions and put in a new hard
drive.

I've included my Java code to open and print the OOo files below.

I'm hoping someone will recognize this as something simple that I'm
overlooking or that there's an issue or bug that I just haven't been able
to find.  Whatever it is, any help is appreciated!

Thanks!

Hal
------------------------------------
Open file:

private void openDoc() {
        boolean bError = false;
        if (oooDoc != null) {
                sysConfig.log("warning", "attempting to open a second document: 
" +
                        fileName + ", current document: " + docURL);
                return;
        }
        docURL = makeURL(fileName);
        PropertyValue[] oProps = new PropertyValue[1];
        oProps[0] = new PropertyValue();
        oProps[0].Name = "Hidden";
        oProps[0].Value = new Boolean(true);
        try {
                oooDoc = oLoader.loadComponentFromURL(docURL, "_blank", 0, 
oProps);
        } catch (Exception  e) {
                sysConfig.log("error", "Error: \"" + e + "\" in opening 
document: " +
                        fileName);
                bError = true;
        }
        if (!bError) docOpen = true;
        return;
}

MakeURL:

private String makeURL(String sFile) {
        if (sFile.startsWith("private:factory/s")) {return sFile;}
        if (sFile.startsWith("file:")) {return sFile;}
        while (sFile.startsWith("////")) {sFile = sFile.substring(1);}
        while (!sFile.startsWith("///")) {sFile = "/" + sFile;}
        if (sysConfig.getMode("ostype").toLowerCase().indexOf("windows") >= 0) {
                sFile = sFile.replace('\\', '/');
        }
        sFile = "file:" + sFile;
        return sFile;
}

Print a document:

private void docPrinter () {
        int i = 0;
        if (sysConfig.getMode("printstate").equals("false")) {
                return;
        }
        if (oooDoc == null) {
                sysConfig.log("warning", "null doc, could not print: " + 
docURL);
                return;
        }
        String sPrinter = sysConfig.getMode("printer");
        XPrintable oPrint = (XPrintable)
                UnoRuntime.queryInterface(XPrintable.class, oooDoc);
        PropertyValue[] printOpts = new PropertyValue[2];
        PropertyValue[] checkOpts = null;
        printOpts[0] = new PropertyValue();
        printOpts[0].Name = "Name";
        printOpts[0].Value = sPrinter;
        printOpts[1] = new PropertyValue();
        printOpts[1].Name = "Wait";
        printOpts[1].Value = new Boolean(true);
        try {oPrint.setPrinter(printOpts);} catch (Exception e) {
                        sysConfig.log("error", "cannot print document: " + 
docURL);
                        return;
        }
        checkOpts = oPrint.getPrinter();
        for (i = 0; i < checkOpts.length; i++) {
                        if (checkOpts[i].Name.equals("Name")) {
                        if (!checkOpts[i].Value.equals(sPrinter)) {
                                sPrinter = "<"+sPrinter+">";
                                printOpts[i].Value = sPrinter;
                                try {
                                        oPrint.setPrinter(printOpts);
                                } catch (Exception e) {
                                        sysConfig.log("error", "cannot print 
document: " + docURL);
                                        return;
                                }
                        }
                        break;
                }
        }
        try {oPrint.print(printOpts);} catch (Exception e) {
                sysConfig.log("error", "can't print document.  doc: " + docURL);
                e.printStackTrace();
                System.exit(0);
                return;
        }
        return;
}


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to