parent
a1ee00eb21
commit
0e6d9a208d
@ -1,327 +0,0 @@ |
|||||||
import java.awt.Event; |
|
||||||
|
|
||||||
//import sun.text.Normalizer;
|
|
||||||
|
|
||||||
import com.enterprisedt.net.ftp.FTPClient; |
|
||||||
import com.enterprisedt.net.ftp.FTPConnectMode; |
|
||||||
import com.enterprisedt.net.ftp.FTPTransferType; |
|
||||||
import com.sun.star.beans.PropertyValue; |
|
||||||
import com.sun.star.beans.XPropertySet; |
|
||||||
import com.sun.star.bridge.XBridge; |
|
||||||
import com.sun.star.bridge.XBridgeFactory; |
|
||||||
import com.sun.star.connection.NoConnectException; |
|
||||||
import com.sun.star.connection.XConnection; |
|
||||||
import com.sun.star.connection.XConnector; |
|
||||||
import com.sun.star.container.XNamed; |
|
||||||
import com.sun.star.document.XExporter; |
|
||||||
import com.sun.star.document.XFilter; |
|
||||||
import com.sun.star.drawing.XDrawPage; |
|
||||||
import com.sun.star.drawing.XDrawPages; |
|
||||||
import com.sun.star.drawing.XDrawPagesSupplier; |
|
||||||
import com.sun.star.frame.XComponentLoader; |
|
||||||
import com.sun.star.lang.XComponent; |
|
||||||
import com.sun.star.lang.XMultiComponentFactory; |
|
||||||
import com.sun.star.uno.UnoRuntime; |
|
||||||
import com.sun.star.uno.XComponentContext; |
|
||||||
|
|
||||||
/** |
|
||||||
* The class <CODE>DocumentConverter</CODE> allows you to convert all |
|
||||||
* documents in a given directory and in its subdirectories to a given type. A |
|
||||||
* converted document will be created in the same directory as the origin |
|
||||||
* document. |
|
||||||
* |
|
||||||
*/ |
|
||||||
public class DocumentConverter { |
|
||||||
/** |
|
||||||
* Containing the loaded documents |
|
||||||
*/ |
|
||||||
static XComponentLoader xcomponentloader = null; |
|
||||||
|
|
||||||
/** |
|
||||||
* Connecting to the office with the component UnoUrlResolver and calling |
|
||||||
* the static method traverse |
|
||||||
* |
|
||||||
* @param args |
|
||||||
* The array of the type String contains the directory, in which |
|
||||||
* all files should be converted, the favoured converting type |
|
||||||
* and the wanted extension |
|
||||||
*/ |
|
||||||
public static void main(String args[]) { |
|
||||||
|
|
||||||
String cnx, ftpuser, host, port, url, ftpPasswd, destinationFolder, remoteFolderFullPath, remoteFolder; |
|
||||||
int width, height; |
|
||||||
|
|
||||||
try { |
|
||||||
host = args[0]; |
|
||||||
port = args[1]; |
|
||||||
url = args[2]; |
|
||||||
destinationFolder = args[3]; |
|
||||||
width = Integer.parseInt(args[4]); |
|
||||||
height = Integer.parseInt(args[5]); |
|
||||||
if(args.length == 8){ |
|
||||||
ftpuser = args[6]; |
|
||||||
ftpPasswd = args[7]; |
|
||||||
} |
|
||||||
else{ |
|
||||||
ftpuser = ""; |
|
||||||
ftpPasswd = ""; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
if(host.equals("localhost")){ |
|
||||||
String prefix = "file://"; |
|
||||||
if(url.charAt(0)!='/') |
|
||||||
prefix += '/'; |
|
||||||
url = prefix+url; |
|
||||||
remoteFolder = destinationFolder; |
|
||||||
remoteFolderFullPath = prefix; |
|
||||||
} |
|
||||||
else { |
|
||||||
remoteFolderFullPath = "file:///home/"+ftpuser+"/"; |
|
||||||
remoteFolder = url.replace('/','_'); |
|
||||||
remoteFolder = removeAccents(remoteFolder); |
|
||||||
} |
|
||||||
|
|
||||||
cnx = "socket,host="+host+",port="+port; |
|
||||||
|
|
||||||
XComponentContext xComponentContext = com.sun.star.comp.helper.Bootstrap |
|
||||||
.createInitialComponentContext(null); |
|
||||||
|
|
||||||
|
|
||||||
XComponentContext xRemoteContext = xComponentContext; |
|
||||||
|
|
||||||
Object x = xRemoteContext |
|
||||||
.getServiceManager() |
|
||||||
.createInstanceWithContext( |
|
||||||
"com.sun.star.connection.Connector", xRemoteContext); |
|
||||||
|
|
||||||
XConnector xConnector = (XConnector) UnoRuntime.queryInterface( |
|
||||||
XConnector.class, x); |
|
||||||
|
|
||||||
XConnection connection = xConnector.connect(cnx); |
|
||||||
|
|
||||||
//if (connection == null)
|
|
||||||
//System.out.println("Connection is null");
|
|
||||||
x = xRemoteContext.getServiceManager().createInstanceWithContext( |
|
||||||
"com.sun.star.bridge.BridgeFactory", xRemoteContext); |
|
||||||
|
|
||||||
|
|
||||||
XBridgeFactory xBridgeFactory = (XBridgeFactory) UnoRuntime |
|
||||||
.queryInterface(XBridgeFactory.class, x); |
|
||||||
|
|
||||||
// this is the bridge that you will dispose
|
|
||||||
XBridge bridge = xBridgeFactory.createBridge("", "urp", connection,null); |
|
||||||
|
|
||||||
/*XComponent xComponent = (XComponent) UnoRuntime.queryInterface( |
|
||||||
XComponent.class, bridge);*/ |
|
||||||
// get the remote instance
|
|
||||||
x = bridge.getInstance("StarOffice.ServiceManager"); |
|
||||||
// Query the initial object for its main factory interface
|
|
||||||
XMultiComponentFactory xMultiComponentFactory = (XMultiComponentFactory) UnoRuntime |
|
||||||
.queryInterface(XMultiComponentFactory.class, x); |
|
||||||
XPropertySet xProperySet = (XPropertySet) UnoRuntime |
|
||||||
.queryInterface(XPropertySet.class, xMultiComponentFactory); |
|
||||||
|
|
||||||
// Get the default context from the office server.
|
|
||||||
Object oDefaultContext = xProperySet |
|
||||||
.getPropertyValue("DefaultContext"); |
|
||||||
|
|
||||||
// Query for the interface XComponentContext.
|
|
||||||
xComponentContext = (XComponentContext) UnoRuntime.queryInterface( |
|
||||||
XComponentContext.class, oDefaultContext); |
|
||||||
|
|
||||||
|
|
||||||
while (xcomponentloader == null) { |
|
||||||
try { |
|
||||||
|
|
||||||
xcomponentloader = (XComponentLoader) UnoRuntime |
|
||||||
.queryInterface( |
|
||||||
XComponentLoader.class, |
|
||||||
xMultiComponentFactory |
|
||||||
.createInstanceWithContext( |
|
||||||
"com.sun.star.frame.Desktop", |
|
||||||
xComponentContext)); |
|
||||||
|
|
||||||
//System.out.println("Loading document "+url);
|
|
||||||
|
|
||||||
FTPClient ftp = new FTPClient(); |
|
||||||
if(!host.equals("localhost")){ |
|
||||||
//ftp connexion
|
|
||||||
ftp.setRemoteHost(host); |
|
||||||
ftp.connect(); |
|
||||||
ftp.login(ftpuser, ftpPasswd); |
|
||||||
ftp.setConnectMode(FTPConnectMode.PASV); |
|
||||||
ftp.setType(FTPTransferType.BINARY); |
|
||||||
try{ |
|
||||||
ftp.mkdir(remoteFolder); |
|
||||||
}catch(Exception e){} |
|
||||||
ftp.chdir(remoteFolder); |
|
||||||
ftp.put(url,"presentation.ppt"); |
|
||||||
url = remoteFolderFullPath+"/"+remoteFolder+"/presentation.ppt"; |
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
PropertyValue[] loadProps = new PropertyValue[2]; |
|
||||||
loadProps[0] = new PropertyValue(); |
|
||||||
loadProps[0].Name = "Hidden"; |
|
||||||
loadProps[0].Value = new Boolean(true); |
|
||||||
|
|
||||||
// open the document
|
|
||||||
XComponent component = xcomponentloader |
|
||||||
.loadComponentFromURL(url, |
|
||||||
"_blank", 0, loadProps); |
|
||||||
|
|
||||||
|
|
||||||
//System.out.println("Document Opened");
|
|
||||||
|
|
||||||
// filter
|
|
||||||
loadProps = new PropertyValue[4]; |
|
||||||
|
|
||||||
// type of image
|
|
||||||
loadProps[0] = new PropertyValue(); |
|
||||||
loadProps[0].Name = "MediaType"; |
|
||||||
loadProps[0].Value = "image/png"; |
|
||||||
|
|
||||||
// Height and width
|
|
||||||
PropertyValue[] filterDatas = new PropertyValue[4]; |
|
||||||
for(int i = 0; i<4 ; i++){ |
|
||||||
filterDatas[i] = new PropertyValue(); |
|
||||||
} |
|
||||||
|
|
||||||
filterDatas[0].Name = "PixelWidth"; |
|
||||||
filterDatas[0].Value = new Integer(width); |
|
||||||
filterDatas[1].Name = "PixelHeight"; |
|
||||||
filterDatas[1].Value = new Integer(height); |
|
||||||
filterDatas[2].Name = "LogicalWidth"; |
|
||||||
filterDatas[2].Value = new Integer(2000); |
|
||||||
filterDatas[3].Name = "LogicalHeight"; |
|
||||||
filterDatas[3].Value = new Integer(2000); |
|
||||||
|
|
||||||
|
|
||||||
XDrawPagesSupplier pagesSupplier = (XDrawPagesSupplier) UnoRuntime |
|
||||||
.queryInterface(XDrawPagesSupplier.class, component); |
|
||||||
//System.out.println(pagesSupplier.toString());
|
|
||||||
XDrawPages pages = pagesSupplier.getDrawPages(); |
|
||||||
int nbPages = pages.getCount(); |
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < nbPages; i++) { |
|
||||||
|
|
||||||
XDrawPage page = (XDrawPage) UnoRuntime.queryInterface( |
|
||||||
com.sun.star.drawing.XDrawPage.class, pages |
|
||||||
.getByIndex(i)); |
|
||||||
|
|
||||||
XNamed xPageName = (XNamed)UnoRuntime.queryInterface(XNamed.class,page); |
|
||||||
|
|
||||||
xPageName.setName("slide"+(i+1)); |
|
||||||
//if(!xPageName.getName().equals("slide"+(i+1)) && !xPageName.getName().equals("page"+(i+1)))
|
|
||||||
//xPageName.setName((i+1)+"-"+xPageName.getName());
|
|
||||||
Object GraphicExportFilter = xMultiComponentFactory |
|
||||||
.createInstanceWithContext( |
|
||||||
"com.sun.star.drawing.GraphicExportFilter", |
|
||||||
xComponentContext); |
|
||||||
XExporter xExporter = (XExporter) UnoRuntime |
|
||||||
.queryInterface(XExporter.class, |
|
||||||
GraphicExportFilter); |
|
||||||
|
|
||||||
XComponent xComp = (XComponent) UnoRuntime |
|
||||||
.queryInterface(XComponent.class, page); |
|
||||||
|
|
||||||
xExporter.setSourceDocument(xComp); |
|
||||||
loadProps[1] = new PropertyValue(); |
|
||||||
loadProps[1].Name = "URL"; |
|
||||||
loadProps[1].Value = remoteFolderFullPath+remoteFolder+"/"+xPageName.getName()+".png"; |
|
||||||
loadProps[2] = new PropertyValue(); |
|
||||||
loadProps[2].Name = "FilterData"; |
|
||||||
loadProps[2].Value = filterDatas; |
|
||||||
loadProps[3] = new PropertyValue(); |
|
||||||
loadProps[3].Name = "Quality"; |
|
||||||
loadProps[3].Value = new Integer(100); |
|
||||||
|
|
||||||
XFilter xFilter = (XFilter) UnoRuntime.queryInterface(XFilter.class, GraphicExportFilter); |
|
||||||
|
|
||||||
xFilter.filter(loadProps); |
|
||||||
System.out.println(xPageName.getName()+".png"); |
|
||||||
|
|
||||||
//System.out.println("Page saved to url "+loadProps[1].Value);
|
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
if(!host.equals("localhost")){ |
|
||||||
String[] files = ftp.dir(); |
|
||||||
for (int i = 0; i < files.length; i++){ |
|
||||||
//System.out.println("Transfer of "+files[i]+ "to "+destinationFolder+"/"+files[i]);
|
|
||||||
if(!files[i].equals("presentation.ppt")) |
|
||||||
ftp.get(destinationFolder+"/"+files[i],files[i]); |
|
||||||
ftp.delete(files[i]); |
|
||||||
} |
|
||||||
ftp.chdir(".."); |
|
||||||
ftp.rmdir(remoteFolder); |
|
||||||
ftp.quit(); |
|
||||||
} |
|
||||||
|
|
||||||
//System.out.println("Closing Document");
|
|
||||||
component.dispose(); |
|
||||||
//System.out.println("Document close");
|
|
||||||
|
|
||||||
System.exit(0); |
|
||||||
} |
|
||||||
catch (NoConnectException e) { |
|
||||||
System.out.println(e.toString()); |
|
||||||
e.printStackTrace(); |
|
||||||
System.exit(255); |
|
||||||
} |
|
||||||
catch (Exception e) { |
|
||||||
System.out.println(e.toString()); |
|
||||||
e.printStackTrace(); |
|
||||||
System.exit(255); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
catch (Exception e) { |
|
||||||
System.out.println(e.toString()); |
|
||||||
e.printStackTrace(); |
|
||||||
System.exit(255); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public static String removeAccents(String text) { |
|
||||||
|
|
||||||
/* |
|
||||||
String newText = Normalizer.decompose(text, false, 0) |
|
||||||
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");*/ |
|
||||||
/* |
|
||||||
newText = newText.replace('\u00B4','_'); |
|
||||||
newText = newText.replace('\u02CA','_'); |
|
||||||
newText = newText.replace('\u02B9','_'); |
|
||||||
newText = newText.replace('\u02BC','_'); |
|
||||||
newText = newText.replace('\u02B9','_'); |
|
||||||
newText = newText.replace('\u03D8','_'); |
|
||||||
newText = newText.replace('\u0374','_'); |
|
||||||
newText = newText.replace('\u0384','_'); |
|
||||||
newText = newText.replace('\u055A','_'); |
|
||||||
*/ |
|
||||||
/* |
|
||||||
newText = newText.replace('\u2019','_'); |
|
||||||
newText = newText.replace('\u00B4','_'); |
|
||||||
newText = newText.replace('\u055A','_'); |
|
||||||
newText = newText.replace('?','_'); |
|
||||||
newText = newText.replace('\'','_'); |
|
||||||
newText = newText.replace(' ','_'); |
|
||||||
return newText;*/ |
|
||||||
return java.text.Normalizer.normalize(text, java.text.Normalizer.Form.NFD).replaceAll("[\u0300-\u036F]", ""); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public boolean handleEvent(Event evt) { |
|
||||||
// Traitement de l'evenement de fin de programme
|
|
||||||
if ( evt.id == evt.WINDOW_DESTROY ) { |
|
||||||
System.exit(0) ; |
|
||||||
return true ; |
|
||||||
} |
|
||||||
return false ; |
|
||||||
} |
|
||||||
} |
|
||||||
Loading…
Reference in new issue