import com.sun.star.beans.PropertyValue;
import com.sun.star.comp.helper.Bootstrap;
import com.sun.star.frame.XComponentLoader;
import com.sun.star.frame.XStorable;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;
public class OpenOffice {
public OpenOffice(){
}
public boolean doCovert(String souceFilePath, String pdfFilePath){
try{
//仅在openoffice1.2以上的版本适用
XComponentContext xComponentContext = Bootstrap.bootstrap();
XMultiComponentFactory xMultiComponentFactory = xComponentContext.getServiceManager();
XComponentLoader xComponentLoader = (XComponentLoader)UnoRuntime.queryInterface(XComponentLoader.class,xMultiComponentFactory.createInstanceWithContext("com.sun.star.frame.Desktop", xComponentContext));
//以隐藏的方式打开openoffice
PropertyValue[] loadProps = new PropertyValue[1];
loadProps[0] = new PropertyValue();
loadProps[0].Name = "Hidden";
loadProps[0].Value = new Boolean(true);
Object objectDocumentToStore = xComponentLoader.loadComponentFromURL(souceFilePath, "_blank", 0, loadProps);
//pdf文件属性的设置
PropertyValue[] pdfFilterData = ProPertyValue.getPropertyValue();
//转化的属性设置
PropertyValue[] conversionProperties = new PropertyValue[3];
conversionProperties[0] = new PropertyValue();
conversionProperties[0].Name = "FilterName";
conversionProperties[0].Value = "writer_pdf_Export";
conversionProperties[1] = new PropertyValue();
conversionProperties[1].Name = "Overwrite ";
conversionProperties[1].Value = new Boolean(true);
conversionProperties[2] = new PropertyValue();
conversionProperties[2].Name = "FilterData";
conversionProperties[2].Value = pdfFilterData;
//转化方法
XStorable xstorable = (XStorable) UnoRuntime.queryInterface(XStorable.class,objectDocumentToStore);
xstorable.storeToURL(pdfFilePath, conversionProperties);
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
}
//pdf属性设置
class ProPertyValue {
public static PropertyValue[] getPropertyValue(){
PropertyValue[] pdfFilterData = new PropertyValue[18];
pdfFilterData[0] = new PropertyValue();
pdfFilterData[0].Name = "PermissionPassword";
pdfFilterData[0].Value = "nopermission";
pdfFilterData[1] = new PropertyValue();
pdfFilterData[1].Name = "RestrictPermissions";
pdfFilterData[1].Value = new Boolean(false);
pdfFilterData[2] = new PropertyValue();
pdfFilterData[2].Name = "DocumentOpenPassword";
pdfFilterData[2].Value = null;
pdfFilterData[3] = new PropertyValue();
pdfFilterData[3].Name = "EncryptFile";
pdfFilterData[3].Value = new Boolean(true);
pdfFilterData[4] = new PropertyValue();
pdfFilterData[4].Name = "Printing";
pdfFilterData[4].Value = new Integer(0);
pdfFilterData[5] = new PropertyValue();
pdfFilterData[5].Name = "Changes";
pdfFilterData[5].Value = new Integer(4);
pdfFilterData[6] = new PropertyValue();
pdfFilterData[6].Name = "EnableCopyingOfContent";
pdfFilterData[6].Value = new Boolean(false);
pdfFilterData[7] = new PropertyValue();
pdfFilterData[7].Name = "EnableTextAccessForAccessibilityTools";
pdfFilterData[7].Value = new Boolean(false);
pdfFilterData[8] = new PropertyValue();
pdfFilterData[8].Name = "PageRange";
pdfFilterData[8].Value = "all";
pdfFilterData[9] = new PropertyValue();
pdfFilterData[9].Name = "UseLosslessCompression";
pdfFilterData[9].Value = new Boolean(true);
pdfFilterData[10] = new PropertyValue();
pdfFilterData[10].Name = "Quality";
pdfFilterData[10].Value = new Integer(50);
pdfFilterData[11] = new PropertyValue();
pdfFilterData[11].Name = "ReduceImageResolution";
pdfFilterData[11].Value = new Boolean(true);
pdfFilterData[12] = new PropertyValue();
pdfFilterData[12].Name = "MaxImageResolution";
pdfFilterData[12].Value = new Integer(100);
pdfFilterData[13] = new PropertyValue();
pdfFilterData[13].Name = "ExportFormFields";
pdfFilterData[13].Value = new Boolean(false);
pdfFilterData[14] = new PropertyValue();
pdfFilterData[14].Name = "CenterWindow";
pdfFilterData[14].Value = new Boolean(true);
pdfFilterData[15] = new PropertyValue();
pdfFilterData[15].Name = "Magnification";
pdfFilterData[15].Value = new Integer(4);
pdfFilterData[16] = new PropertyValue();
pdfFilterData[16].Name = "Zoom";
pdfFilterData[16].Value = new Integer(120);
pdfFilterData[17] = new PropertyValue();
pdfFilterData[17].Name = "IsSkipEmptyPages";
pdfFilterData[17].Value = new Boolean(true);
return pdfFilterData;
}
}