public static XComponent OpenFile( XComponentLoader XComponentLoader, string FileName, bool Hidden, bool ReadOnly) { var FileProperties = new unoidl.com.sun.star.beans.PropertyValue[2]; FileProperties[0] = new unoidl.com.sun.star.beans.PropertyValue() { Name = "Hidden", Value = new uno.Any(Hidden) }; FileProperties[1] = new unoidl.com.sun.star.beans.PropertyValue() { Name = "ReadOnly", Value = new uno.Any(ReadOnly) }; return XComponentLoader.loadComponentFromURL( PathConverter(FileName),"_blank", 0, FileProperties); }
/// <summary> /// 初始化一个文档 /// </summary> /// <returns>该文档的XSpreadsheetDocument接口</returns> private unoidl.com.sun.star.sheet.XSpreadsheetDocument initDocument(string filepath, bool IsHidden) { XComponentLoader aLoader = (XComponentLoader) mxMSFactory.createInstance("com.sun.star.frame.Desktop"); XComponent xComponent = null; unoidl.com.sun.star.beans.PropertyValue[] myArgs = new unoidl.com.sun.star.beans.PropertyValue[1]; myArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); myArgs[0].Name = "Hidden"; myArgs[0].Value = new uno.Any(IsHidden); if (filepath == "") { xComponent = aLoader.loadComponentFromURL( "private:factory/scalc", "_blank", 0, myArgs); } else { xComponent = aLoader.loadComponentFromURL( this.PathConverter(filepath), "_blank", 0, myArgs); } return((unoidl.com.sun.star.sheet.XSpreadsheetDocument)xComponent); }
public XComponent loadComponentFromURL(string URL, string TargetFrameName, int SearchFlags, PropertyValue[] Arguments) { if (serviceManager == null) { InitServiceManager(); } XComponentLoader currentManager = serviceManager; try { return(currentManager.loadComponentFromURL(URL, TargetFrameName, SearchFlags, Arguments)); } catch (DisposedException) { lock (reloadSync) { if (currentManager == serviceManager) { serviceManager = null; InitServiceManager(); } } return(serviceManager.loadComponentFromURL(URL, TargetFrameName, SearchFlags, Arguments)); } }
//ファイルを開く public void OpenFile(string filePath) { //parameterファイルを開く string path = filePath; // pathをURIに変換 Uri.TryCreate(path, UriKind.Absolute, out uriCalcFile); // OpenOfficeファイルを開くためのおまじない // コンポーネントコンテキストの取得 localContext = Bootstrap.bootstrap(); // サービスマネージャーの取得 multiServiceFactory = (XMultiServiceFactory)localContext.getServiceManager(); // コンポーネントローダーの取得 loader = (XComponentLoader)multiServiceFactory.createInstance("com.sun.star.frame.Desktop"); // 非表示で実行するためのプロパティ指定 calcProp = new PropertyValue[1]; calcProp[0] = new PropertyValue(); calcProp[0].Name = "Hidden"; calcProp[0].Value = new uno.Any(true); // Calcファイルを開く doc = (XSpreadsheetDocument)loader.loadComponentFromURL(uriCalcFile.ToString(), "_blank", 0, calcProp); // シート群を取得 sheets = doc.getSheets(); }
public static void ConvertToPdf(string inputFile, string outputFile) { if (ConvertExtensionToFilterType(Path.GetExtension(inputFile)) == null) { throw new InvalidProgramException("Unknown file type for OpenOffice. File = " + inputFile); } //StartOpenOffice(); //Get a ComponentContext var xLocalContext = Bootstrap.bootstrap(); //Get MultiServiceFactory XMultiServiceFactory xRemoteFactory = (XMultiServiceFactory)xLocalContext.getServiceManager(); //Get a CompontLoader XComponentLoader aLoader = (XComponentLoader)xRemoteFactory.createInstance("com.sun.star.frame.Desktop"); //Load the sourcefile XComponent xComponent = null; try { xComponent = initDocument(aLoader, PathConverter(inputFile), "_blank"); //Wait for loading while (xComponent == null) { System.Threading.Thread.Sleep(1000); } // save/export the document saveDocument(xComponent, inputFile, PathConverter(outputFile)); } catch { throw; } finally { xComponent.dispose(); } }
/// <summary> /// Initializes the document. /// </summary> /// <param name="aLoader"> a loader. </param> /// <param name="file"> The file. </param> /// <param name="target"> The target. </param> /// <returns> The Component </returns> public static XComponent InitDocument(XComponentLoader aLoader, string file, string target) { var openProps = new PropertyValue[] { new PropertyValue { Name = "Hidden", Value = new Any(true) } }; var xComponent = aLoader.loadComponentFromURL(file, target, 0, openProps); return(xComponent); }
public OpenOffice() { // Start a new instance of OpenOffice.org if it is not running. // https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/CLI/Writing_Client_Programs context = uno.util.Bootstrap.bootstrap(); service = (XMultiServiceFactory)context.getServiceManager(); desktop = (XComponentLoader)service.createInstance("com.sun.star.frame.Desktop"); }
private static void ConvertToPDF(string serverHost, int serverPort, Uri inputFile, Uri outputFile) { // FIX: Workaround for a known bug: XUnoUrlResolver forgets to call WSAStartup. We can use dummy Socket for that: using (var dummySocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP)) { // First, initialize local service manager (IoC container of some kind): XComponentContext componentContext = Bootstrap.bootstrap(); XMultiComponentFactory localServiceManager = componentContext.getServiceManager(); XUnoUrlResolver urlResolver = (XUnoUrlResolver)localServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", componentContext); // Connect to LibreOffice server // URL format explained here: https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Starting_OpenOffice.org_in_Listening_Mode string connectionString = string.Format("uno:socket,host={0},port={1};urp;StarOffice.ComponentContext", serverHost, serverPort); object initialObject = urlResolver.resolve(connectionString); // Retrieve remote service manager: XComponentContext remoteContext = (XComponentContext)initialObject; XMultiComponentFactory remoteComponentFactory = remoteContext.getServiceManager(); // Request our own instance of LibreOffice Writer from the server: object oDesktop = remoteComponentFactory.createInstanceWithContext("com.sun.star.frame.Desktop", remoteContext); XComponentLoader xCLoader = (XComponentLoader)oDesktop; var loaderArgs = new PropertyValue[1]; loaderArgs[0] = new PropertyValue(); loaderArgs[0].Name = "Hidden"; // No GUI loaderArgs[0].Value = new Any(true); string inputFileUrl = inputFile.AbsoluteUri; // WARNING: LibreOffice .NET API uses .NET Remoting and does NOT throw clean and actionable errors, // so, if server crashes or input file is locked or whatever, you will get nulls after casting. // For example, `(XStorable)xCLoader` cast may produce null. // This is counter-intuitive, I know; be more careful in production-grade code and check for nulls after every cast. XStorable xStorable = (XStorable)xCLoader.loadComponentFromURL(inputFileUrl, "_blank", 0, loaderArgs); var writerArgs = new PropertyValue[2]; writerArgs[0] = new PropertyValue(); writerArgs[0].Name = "Overwrite"; // Overwrite outputFile if it already exists writerArgs[0].Value = new Any(true); writerArgs[1] = new PropertyValue(); writerArgs[1].Name = "FilterName"; writerArgs[1].Value = new Any("writer_pdf_Export"); // Important! This filter is doing all PDF stuff. string outputFileUrl = outputFile.AbsoluteUri; xStorable.storeToURL(outputFileUrl, writerArgs); XCloseable xCloseable = (XCloseable)xStorable; if (xCloseable != null) { xCloseable.close(false); } } }
/** Creates an empty spreadsheet document. * @return The XSpreadsheetDocument interface of the document. */ private unoidl.com.sun.star.sheet.XSpreadsheetDocument initDocument() { XComponentLoader aLoader = (XComponentLoader) mxMSFactory.createInstance("com.sun.star.frame.Desktop"); XComponent xComponent = aLoader.loadComponentFromURL( "private:factory/scalc", "_blank", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); return((unoidl.com.sun.star.sheet.XSpreadsheetDocument)xComponent); }
protected static void TryInitServiceManager() { try { XComponentContext context = uno.util.Bootstrap.bootstrap(); XMultiServiceFactory manager = (XMultiServiceFactory)context.getServiceManager(); serviceManager = (XComponentLoader)manager.createInstance("com.sun.star.frame.Desktop"); } catch { } }
private XComponent LoadDocument(String inputUrl, IDictionary loadProperties) { XComponentLoader desktop = OpenOfficeConnection.Desktop; //PropertyValue[] propertyValue2 = new PropertyValue[1]; //PropertyValue aProperty = new PropertyValue(); //aProperty.Name = "Hidden"; //aProperty.Value = new uno.Any(true); //propertyValue2[0] = aProperty; ToPropertyValues(loadProperties); return(desktop.loadComponentFromURL(inputUrl, "_blank", 0, ToPropertyValues(loadProperties)));//toPropertyValues(loadProperties) }
//private static void StartOpenOffice() //{ // Process[] ps = Process.GetProcessesByName("soffice.exe"); // if (ps != null) // { // if (ps.Length > 0) // return; // else // { // Process p = new Process(); // p.StartInfo.Arguments = "-headless -nofirststartwizard"; // p.StartInfo.FileName = "soffice.exe"; // p.StartInfo.CreateNoWindow = true; // bool result = p.Start(); // if (result == false) // throw new InvalidProgramException("OpenOffice failed to start."); // } // } // else // { // throw new InvalidProgramException("OpenOffice not found. Is OpenOffice installed?"); // } //} private static XComponent initDocument(XComponentLoader aLoader, string file, string target) { PropertyValue[] openProps = new PropertyValue[1]; openProps[0] = new PropertyValue(); openProps[0].Name = "Hidden"; openProps[0].Value = new uno.Any(true); XComponent xComponent = aLoader.loadComponentFromURL( file, target, 0, openProps); return(xComponent); }
private static void Init() { aLoader = InitLoader(); if (aLoader == null && InitOpenOffice3Environment()) { aLoader = InitLoader(); } if (aLoader == null && InitLibreOfficeEnvironment()) { aLoader = InitLoader(); } if (aLoader == null) { throw new MissingMethodException("Can't find OpenOffice.org or LibreOffice. Office must be installed for pdf conversion."); } }
/// <summary> /// Creates a new document in LibreOffice and opens the given <paramref name="file" /> /// </summary> /// <param name="aLoader"></param> /// <param name="file"></param> /// <param name="target"></param> /// <returns></returns> private XComponent InitDocument(XComponentLoader aLoader, string file, string target) { var openProps = new PropertyValue[2]; openProps[0] = new PropertyValue { Name = "Hidden", Value = new Any(true) }; openProps[1] = new PropertyValue { Name = "ReadOnly", Value = new Any(true) }; var xComponent = aLoader.loadComponentFromURL( file, target, 0, openProps); return(xComponent); }
/// <summary> /// News the doc component. /// </summary> /// <param name="docType">Type of the doc.</param> /// <returns></returns> public XComponent NewDocComponent(String docType) { var desktop = ((XMultiComponentFactory)mxMSFactory).createInstanceWithContext( OO.Services.FRAME_DESKTOP, m_xContext); try { XComponentLoader mxCompLoader = desktop as XComponentLoader; String loadUrl = OO.DocTypes.DOC_TYPE_BASE + docType; unoidl.com.sun.star.beans.PropertyValue[] loadProps = new unoidl.com.sun.star.beans.PropertyValue[0]; return(mxCompLoader.loadComponentFromURL(loadUrl, "_blank", 0, loadProps)); } catch (System.Exception ex) { //TOD: check this and handle if possible System.Diagnostics.Debug.WriteLine("Desktop to XComponentLoader cast Exception: " + ex); } return(null); }
public OpenOffice() { /// This will start a new instance of OpenOffice.org if it is not running, /// or it will obtain an existing instance if it is already open. context = uno.util.Bootstrap.bootstrap(); /// The next step is to create a new OpenOffice.org service manager service = (XMultiServiceFactory)context.getServiceManager(); /// Create a new Desktop instance using our service manager component = (XComponentLoader)service.createInstance("com.sun.star.frame.Desktop"); // Getting filters XNameContainer filters = (XNameContainer)service.createInstance("com.sun.star.document.FilterFactory"); foreach (string filter in filters.getElementNames()) { this.filters.Add(filter); } }
/// <summary> /// Creates a new document in LibreOffice and opens the given <paramref name="inputFile" /> /// </summary> /// <param name="aLoader"></param> /// <param name="inputFile"></param> /// <param name="target"></param> /// <returns></returns> private XComponent InitDocument(XComponentLoader aLoader, string inputFile, string target) { Logger.WriteToLog($"Loading document '{inputFile}'"); var openProps = new PropertyValue[2]; openProps[0] = new PropertyValue { Name = "Hidden", Value = new Any(true) }; openProps[1] = new PropertyValue { Name = "ReadOnly", Value = new Any(true) }; var xComponent = aLoader.loadComponentFromURL( inputFile, target, 0, openProps); Logger.WriteToLog("Document loaded"); return(xComponent); }
/// <summary> /// /// </summary> /// <param name="inputStream"></param> /// <param name="importOptions"></param> /// <param name="outputStream"></param> /// <param name="exportOptions"></param> /// <remarks></remarks> private void LoadAndExport(Stream inputStream, IDictionary importOptions, Stream outputStream, IDictionary exportOptions) { XComponentLoader desktop = OpenOfficeConnection.Desktop; IDictionary loadProperties = new Hashtable(); SupportClass.MapSupport.PutAll(loadProperties, DefaultLoadProperties); SupportClass.MapSupport.PutAll(loadProperties, importOptions); // doesn't work using InputStreamToXInputStreamAdapter; probably because it's not XSeekable //property("InputStream", new InputStreamToXInputStreamAdapter(inputStream)) loadProperties["InputStream"] = new Any(typeof(XInputStream), new XInputStreamWrapper(inputStream)); XComponent document = desktop.loadComponentFromURL("private:stream", "_blank", 0, ToPropertyValues(loadProperties)); if (document == null) { throw new OpenOfficeException("conversion failed: input document is null after loading"); } RefreshDocument(document); IDictionary storeProperties = new Hashtable(); SupportClass.MapSupport.PutAll(storeProperties, exportOptions); storeProperties["OutputStream"] = new Any(typeof(XOutputStream), new XOutputStreamWrapper(outputStream)); try { XStorable storable = (XStorable)document; storable.storeToURL("private:stream", ToPropertyValues(storeProperties)); } finally { document.dispose(); } }
/// <summary> /// Converts the file to a PDF file /// </summary> /// <param name="filePath">The full path of the file to be converted</param> public void ConvertToPdf(string filePath) { string pdfExt = FileExtension.PDF; FileCustom fileCustom = FileHelper.GetFileInfo(filePath); var xLocalContext = uno.util.Bootstrap.bootstrap(); var xRemoteFactory = (XMultiServiceFactory)xLocalContext.getServiceManager(); XComponentLoader loader = (XComponentLoader)xRemoteFactory.createInstance(LibreOfficeProperties.FRAME_DESKTOP); var pv = new unoidl.com.sun.star.beans.PropertyValue[1]; pv[0] = new unoidl.com.sun.star.beans.PropertyValue(); pv[0].Name = LibreOfficeProperties.HIDDEN; pv[0].Value = new uno.Any(true); XComponent xComponent; xComponent = loader.loadComponentFromURL("file:///" + filePath.Replace('\\', '/'), LibreOfficeProperties.BLANK, 0, pv); var xStorable = (XStorable)xComponent; pv[0].Name = LibreOfficeProperties.FILTER_NAME; switch (fileCustom.Extension.ToLowerInvariant()) { case FileExtension.XLS: case FileExtension.XLSX: case FileExtension.ODS: pv[0].Value = new uno.Any(LibreOfficeProperties.CALC_PDF_EXPORT); break; default: pv[0].Value = new uno.Any(LibreOfficeProperties.WRITER_PDF_EXPORT); break; } xStorable.storeToURL("file:///" + (fileCustom.Directory + @"\" + fileCustom.Name + pdfExt).Replace('\\', '/'), pv); var xClosable = (XCloseable)xComponent; xClosable.close(true); }
private static XComponentLoader InitLoader() { try { XComponentLoader loader = null; var thread = new Thread(() => { try { var xLocalContext = uno.util.Bootstrap.bootstrap(); var xRemoteFactory = (unoidl.com.sun.star.lang.XMultiServiceFactory)xLocalContext.getServiceManager(); loader = (XComponentLoader)xRemoteFactory.createInstance("com.sun.star.frame.Desktop"); } catch { } }); thread.Start(); thread.Join(TimeSpan.FromMinutes(1)); return(loader); } catch { return(null); } }
/// <summary> /// Opens a pipe to LibreOffice /// </summary> /// <param name="pipeName"></param> private void OpenLibreOfficePipe(string pipeName) { var localContext = Bootstrap.defaultBootstrap_InitialComponentContext(); var localServiceManager = localContext.getServiceManager(); var urlResolver = (XUnoUrlResolver)localServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext); XComponentContext remoteContext; var i = 0; Logger.WriteToLog($"Connecting to LibreOffice with pipe '{pipeName}'"); while (true) { try { remoteContext = (XComponentContext)urlResolver.resolve($"uno:pipe,name={pipeName};urp;StarOffice.ComponentContext"); Logger.WriteToLog("Connected to LibreOffice"); break; } catch (Exception exception) { if (i == 20 || !exception.Message.Contains("couldn't connect to pipe")) { throw; } Thread.Sleep(100); i++; } } // ReSharper disable once SuspiciousTypeConversion.Global var remoteFactory = (XMultiServiceFactory)remoteContext.getServiceManager(); _componentLoader = (XComponentLoader)remoteFactory.createInstance("com.sun.star.frame.Desktop"); }
public byte[] Convert(byte[] fileSource, string fileExtension, string extReq, AttachConversionMode mode) { logger.DebugFormat("Convert {0} to {1}", fileExtension, extReq); string fileName = Path.GetTempFileName(); try { return(RetryingPolicyAction <byte[]>(() => { File.WriteAllBytes(fileName + fileExtension, fileSource); if (localContext == null) { localContext = uno.util.Bootstrap.bootstrap(); } unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory = (unoidl.com.sun.star.lang.XMultiServiceFactory)localContext.getServiceManager(); XComponentLoader componentLoader = (XComponentLoader)multiServiceFactory.createInstance("com.sun.star.frame.Desktop"); PropertyValue[] propertyValue = new PropertyValue[2]; PropertyValue aProperty = new PropertyValue(); aProperty.Name = "Hidden"; aProperty.Value = new uno.Any(true); propertyValue[0] = aProperty; propertyValue[1] = new PropertyValue(); propertyValue[1].Name = "IsSkipEmptyPages"; propertyValue[1].Value = new uno.Any(true); XComponent xComponent = null; bool toConvert = false; string fileConvertedName; try { string fileToConvertName = PathConverter(fileName + fileExtension); fileConvertedName = PathConverter(fileName + "." + extReq); logger.DebugFormat("Url to comvert: {0} - {1}", fileToConvertName, fileConvertedName); xComponent = componentLoader.loadComponentFromURL( fileToConvertName, "_blank", 0, propertyValue ); if (xComponent == null) { throw new DocumentNotConvertible_Exception(); } logger.Debug("Verify if is to process..."); if (fileExtension.Contains("doc") && (UseRedirectMethod(xComponent))) { logger.Debug("No conversion to do..."); toConvert = true; } else { object xls = null; if (xComponent is XSpreadsheetDocument) { xls = xComponent as XSpreadsheetDocument; } else if (xComponent is XTextDocument) { xls = xComponent as XTextDocument; } if (xls != null) { //Se i nomi degli sheets sono fra quelli non convertibili, usare il converter Office. if (xls is XSpreadsheetDocument) { var sheetNames = (xls as XSpreadsheetDocument) .getSheets() .getElementNames() .ToArray(); for (int i = 0; i < sheetNames.Length; i++) { sheetNames[i] = (sheetNames[i] ?? string.Empty).ToUpper(); } var namesSet = (ConfigurationManager.AppSettings["RedirectSheetNames"] ?? string.Empty) .Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries) .OrderByDescending(x => x.Length); var founded = false; foreach (var set in namesSet) { var names = set .Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries); if (names.Length <= sheetNames.Length) { founded = true; foreach (var n in names) { if (!sheetNames.Contains(n.ToUpper())) { founded = false; break; } } if (founded) { logger.Debug("No conversion to do..."); return null; } } } } //var xls = xComponent as XSpreadsheetDocument; var styles = (xls as XStyleFamiliesSupplier).getStyleFamilies(); var pageStyles = styles.getByName("PageStyles").Value as XNameContainer; bool scaleToPages = false; var configured = ConfigurationManager.AppSettings["ScaleToPages"]; try { if (!string.IsNullOrEmpty(configured)) { var dummy = bool.Parse(configured); scaleToPages = dummy; } } catch { logger.ErrorFormat("Invalid value for configured parameter \"{0}\". Current value is \"{1}\".", "ScaleToPages", configured); } var configValue = ConfigurationManager.AppSettings["StampaConforme.ForcePortrait"]; var forcePortrait = !string.IsNullOrEmpty(configValue) && configValue.Equals("true", StringComparison.InvariantCultureIgnoreCase); logger.Info("StampaConforme.ForcePortrait: " + forcePortrait.ToString()); foreach (var nome in pageStyles.getElementNames()) { var props = pageStyles.getByName(nome).Value as XPropertySet; if (forcePortrait) { var isLandscape = (bool)props.getPropertyValue("IsLandscape").Value; if (isLandscape) { var size = props.getPropertyValue("Size").Value as Size; var w = size.Width; size.Width = size.Height; size.Height = w; props.setPropertyValue("Size", new uno.Any(typeof(Size), size)); props.setPropertyValue("IsLandscape", new uno.Any(false)); } } if (scaleToPages && props.getPropertySetInfo().hasPropertyByName("ScaleToPages")) { props.setPropertyValue("ScaleToPages", new uno.Any((short)1)); } } } PropertyValue[] saveProps = new PropertyValue[2]; saveProps[0] = new PropertyValue(); saveProps[0].Name = "FilterName"; saveProps[0].Value = new uno.Any("writer_pdf_Export"); saveProps[1] = new PropertyValue(); saveProps[1].Name = "IsSkipEmptyPages"; saveProps[1].Value = new uno.Any(true); logger.Debug("loadComponentFromURL end."); ((XStorable)xComponent).storeToURL(fileConvertedName, saveProps); } } catch (Exception ex) { logger.Error(ex); throw; } finally { if (xComponent != null) { xComponent.dispose(); } } logger.DebugFormat("Conversione END - ToConvert: {0}", toConvert); if (toConvert) { return null; } else { return File.ReadAllBytes(fileName + "." + extReq); } })); } catch (Exception ex) { logger.Error(ex); throw; } finally { try { File.Delete(fileName + fileExtension); File.Delete(fileName + extReq); File.Delete(fileName); } catch { } } }
private void CreaReport(object sender, DoWorkEventArgs e) { string PathTemplate = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "template.odt"; if (File.Exists(PathTemplate)) { //The C# application starts OpenOffice.org by using it's bootstrap method: XComponentContext oStrap = uno.util.Bootstrap.bootstrap(); //This will start a new instance of OpenOffice.org if it is not running, //or it will obtain an existing instance if it is already open. //The next step is to create a new OpenOffice.org service manager: XMultiServiceFactory oServMan = (XMultiServiceFactory)oStrap.getServiceManager(); XComponentLoader oDesk = (XComponentLoader)oServMan.createInstance("com.sun.star.frame.Desktop"); //string url = @"private:factory/swriter"; PropertyValue[] propVals = new PropertyValue[0]; XComponent oDoc = oDesk.loadComponentFromURL(PathConverter(PathTemplate), "_blank", 0, propVals); //string docText = "This will be my first paragraph.\n\r"; //docText += "This will be my second paragraph.\n\r"; //And then this is written to the body of the document: //((XTextDocument)oDoc).getText().setString(docText); XBookmarksSupplier xBS = (XBookmarksSupplier)oDoc; unoidl.com.sun.star.container.XNameAccess xNamedBookmarks = xBS.getBookmarks(); //inserimento dati nei bookmark //grassi InsertTxtBookmark(xNamedBookmarks, "bPalma", oPalmaRaf.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmaAfr", oPalmaAfr.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmaOle60", oPalmaOle60.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmaOle62", oPalmaOle62.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmaOle64", oPalmaOle64.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmaSte48", oPalmaSt48.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmaSte53", oPalmaSt53.ToString()); InsertTxtBookmark(xNamedBookmarks, "bCocco", oCoccoRaf.ToString()); InsertTxtBookmark(xNamedBookmarks, "bCoccoIdr", oCoccoIdr.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmisto", oPalmistoR.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmistoIdr", oPalmistoI.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmistoSte", oPalmistoSt.ToString()); InsertTxtBookmark(xNamedBookmarks, "bPalmistoFra", oPalmistoFraz.ToString()); InsertTxtBookmark(xNamedBookmarks, "bSoia", oSoiaRaf.ToString()); InsertTxtBookmark(xNamedBookmarks, "bColza", oColzaRaf.ToString()); InsertTxtBookmark(xNamedBookmarks, "bArachide", oArachideR.ToString()); InsertTxtBookmark(xNamedBookmarks, "bVinacciolo", oVinacciolo.ToString()); InsertTxtBookmark(xNamedBookmarks, "bMais", oMaisRaf.ToString()); InsertTxtBookmark(xNamedBookmarks, "bGirasoleAO", oGirasoleALino.ToString()); InsertTxtBookmark(xNamedBookmarks, "bGirasoleAL", oGirasoleAOle.ToString()); InsertTxtBookmark(xNamedBookmarks, "bSesamo", oSesamoRaff.ToString()); InsertTxtBookmark(xNamedBookmarks, "bNocciola", oNocciola.ToString()); InsertTxtBookmark(xNamedBookmarks, "bOliva", oOliva.ToString()); InsertTxtBookmark(xNamedBookmarks, "bBurroCacao", oBurroCacao.ToString()); InsertTxtBookmark(xNamedBookmarks, "bBabassu", oBabassu.ToString()); InsertTxtBookmark(xNamedBookmarks, "bKarite", oKarite.ToString()); InsertTxtBookmark(xNamedBookmarks, "bBurro", oBurro.ToString()); InsertTxtBookmark(xNamedBookmarks, "bStrutto", oStrutto.ToString()); InsertTxtBookmark(xNamedBookmarks, "bSego", oSegoRaf.ToString()); InsertTxtBookmark(xNamedBookmarks, "bX", oX.ToString()); InsertTxtBookmark(xNamedBookmarks, "bY", oY.ToString()); InsertTxtBookmark(xNamedBookmarks, "bZ", oZ.ToString()); //acidi grassi calcolati InsertTxtBookmark(xNamedBookmarks, "bC4-0", AcidiGrassiOtt[0].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC6-0", AcidiGrassiOtt[1].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC8-0", AcidiGrassiOtt[2].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC10-0", AcidiGrassiOtt[3].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC12-0", AcidiGrassiOtt[4].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC14-0", AcidiGrassiOtt[5].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC14-1", AcidiGrassiOtt[6].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC15-0", AcidiGrassiOtt[7].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC16-ISO", AcidiGrassiOtt[8].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC16-0", AcidiGrassiOtt[9].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC16-1", AcidiGrassiOtt[10].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC17-ISO", AcidiGrassiOtt[11].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC17-0", AcidiGrassiOtt[12].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC17-1", AcidiGrassiOtt[13].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC18-0", AcidiGrassiOtt[14].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC18-ISO", AcidiGrassiOtt[15].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC18-1", AcidiGrassiOtt[16].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC18-2", AcidiGrassiOtt[17].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC18-3", AcidiGrassiOtt[18].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC18-CON", AcidiGrassiOtt[19].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC20-0", AcidiGrassiOtt[20].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC20-1", AcidiGrassiOtt[21].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC22-0", AcidiGrassiOtt[22].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bC22-1", AcidiGrassiOtt[23].ToString("F2")); //acidi grassi inseriti a mano (forniti dal gascromatografo) InsertTxtBookmark(xNamedBookmarks, "bGC4-0", AcidiGrassiRic[0].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC6-0", AcidiGrassiRic[1].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC8-0", AcidiGrassiRic[2].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC10-0", AcidiGrassiRic[3].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC12-0", AcidiGrassiRic[4].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC14-0", AcidiGrassiRic[5].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC14-1", AcidiGrassiRic[6].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC15-0", AcidiGrassiRic[7].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC16-ISO", AcidiGrassiRic[8].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC16-0", AcidiGrassiRic[9].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC16-1", AcidiGrassiRic[10].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC17-ISO", AcidiGrassiRic[11].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC17-0", AcidiGrassiRic[12].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC17-1", AcidiGrassiRic[13].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC18-0", AcidiGrassiRic[14].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC18-ISO", AcidiGrassiRic[15].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC18-1", AcidiGrassiRic[16].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC18-2", AcidiGrassiRic[17].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC18-3", AcidiGrassiRic[18].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC18-CON", AcidiGrassiRic[19].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC20-0", AcidiGrassiRic[20].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC20-1", AcidiGrassiRic[21].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC22-0", AcidiGrassiRic[22].ToString("F2")); InsertTxtBookmark(xNamedBookmarks, "bGC22-1", AcidiGrassiRic[23].ToString("F2")); //numero di iodio InsertTxtBookmark(xNamedBookmarks, "bnIodio", oNiodio.ToString("F2")); //And then the file is saved to disk: //((XStorable)oDoc).storeAsURL(PathConverter(@"C:\test.odt"), propVals); //((XStorable)oDoc).storeAsURL(PathConverter(SaveTo), propVals); PropertyValue[] propValsOut = new PropertyValue[1]; propValsOut[0] = new PropertyValue(); propValsOut[0].Name = "FilterName"; switch (Estensione) { case ".odt": break; case ".doc": propValsOut[0].Value = new uno.Any("MS Word 97"); break; case ".pdf": propValsOut[0].Value = new uno.Any("writer_pdf_Export"); break; default: break; } ((XStorable)oDoc).storeToURL(PathConverter(SaveTo), propValsOut); //chiude ((XComponent)oDoc).dispose(); //And then any memory that's been used can be freed up: oDoc = null; } else { MessageBox.Show("Template non trovato:\n" + PathTemplate); } }
public void CozdSchetWriter(string push, int ID) { DB5 db = new DB5(kursach.Program.Pole.pole); DB16 db2 = new DB16(kursach.Program.Pole.pole); DB1 db1 = new DB1(kursach.Program.Pole.pole); DB14 db14 = new DB14(kursach.Program.Pole.pole); DB13 db13 = new DB13(kursach.Program.Pole.pole); Mapping.DB17 db17 = new Mapping.DB17(kursach.Program.Pole.pole); var ec = from n in db.JurnalRabot where n.ID == Convert.ToInt32(ID) select n; int temp = 0; foreach (var i in ec) { temp = i.IDZapisi; } var ec2 = from n in db2.Zapis where n.ID == temp select n; var Firma = from n in db17.Firma where n.ID == 1 select n; string temp2 = ""; foreach (var i in ec2) { temp2 = i.Data; } unoidl.com.sun.star.uno.XComponentContext localContext = uno.util.Bootstrap.bootstrap(); unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory = (unoidl.com.sun.star.lang.XMultiServiceFactory)localContext.getServiceManager(); XComponentLoader componentLoader = (XComponentLoader)multiServiceFactory.createInstance("com.sun.star.frame.Desktop"); XComponent xComponent = componentLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().setString("Счет №" + ID + Environment.NewLine); unoidl.com.sun.star.text.XTextRange x = ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().getEnd(); // в конец ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().insertString(x, "от " + temp2 + "г." + Environment.NewLine + Environment.NewLine + Environment.NewLine, true); unoidl.com.sun.star.text.XTextRange xi = ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().getEnd(); // в конец foreach (var i in Firma) { ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().insertString(xi, "ИНН " + i.INN + " КПП " + i.KPP + Environment.NewLine + "Получатель " + i.Name + " № Счета " + i.Schet + Environment.NewLine + "Банк получателя " + i.Bank + " № Счета банка " + i.SchetBank + Environment.NewLine, true); } DB11 db11 = new DB11(kursach.Program.Pole.pole); var Raspisanie = from n in db11.Raspisanie where n.ID == temp select n; foreach (var i in Raspisanie) { temp = i.IDVrach; } var Vrach = from n in db14.Vrach where n.ID == temp select n; foreach (var i in Vrach) { temp2 = i.FIO; } unoidl.com.sun.star.text.XTextRange x2 = ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().getEnd(); // в конец ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().insertString(x2, "Исполнитель: " + temp2 + Environment.NewLine, true); foreach (var i in ec2) { temp = i.IDPacienta; } var ec3 = from n in db1.Pacient where n.ID == temp select n; foreach (var i in ec3) { temp2 = i.FIO; } unoidl.com.sun.star.text.XTextRange x3 = ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().getEnd(); // в конец ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().insertString(x3, "Заказчик: " + temp2 + Environment.NewLine + Environment.NewLine + Environment.NewLine, true); //Таблица XFrame frame = ((unoidl.com.sun.star.text.XTextDocument)xComponent).getCurrentController().getFrame(); XDispatchHelper xDispatchHelper = (XDispatchHelper)multiServiceFactory.createInstance("com.sun.star.frame.DispatchHelper"); unoidl.com.sun.star.beans.PropertyValue[] tableArgs = new unoidl.com.sun.star.beans.PropertyValue[4]; tableArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); tableArgs[1] = new unoidl.com.sun.star.beans.PropertyValue(); tableArgs[2] = new unoidl.com.sun.star.beans.PropertyValue(); tableArgs[3] = new unoidl.com.sun.star.beans.PropertyValue(); tableArgs[0].Name = "TableName"; tableArgs[0].Value = new uno.Any("Акт"); tableArgs[1].Name = "Columns"; tableArgs[1].Value = new uno.Any(4); tableArgs[2].Name = "Rows"; tableArgs[2].Value = new uno.Any(2); tableArgs[3].Name = "Flags"; tableArgs[3].Value = new uno.Any(9); unoidl.com.sun.star.beans.PropertyValue[] cellTextArgs = new unoidl.com.sun.star.beans.PropertyValue[1]; cellTextArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); cellTextArgs[0].Name = "Text"; cellTextArgs[0].Value = new uno.Any("Наименование Услуги"); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertTable", "", 0, tableArgs); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs); unoidl.com.sun.star.beans.PropertyValue[] cellTextArgs2 = new unoidl.com.sun.star.beans.PropertyValue[1]; cellTextArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); cellTextArgs[0].Name = "Text"; cellTextArgs[0].Value = new uno.Any("Цена"); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs2); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:JumpToNextCell", "", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs); unoidl.com.sun.star.beans.PropertyValue[] cellTextArgs3 = new unoidl.com.sun.star.beans.PropertyValue[1]; cellTextArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); cellTextArgs[0].Name = "Text"; cellTextArgs[0].Value = new uno.Any("Скидка"); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs3); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:JumpToNextCell", "", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs); unoidl.com.sun.star.beans.PropertyValue[] cellTextArgs4 = new unoidl.com.sun.star.beans.PropertyValue[1]; cellTextArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); cellTextArgs[0].Name = "Text"; cellTextArgs[0].Value = new uno.Any("Итого"); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs4); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:JumpToNextCell", "", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs); foreach (var i in ec2) { temp = i.IDUslugi; } var ec5 = from n in db13.Uslugi where n.ID == temp select n; foreach (var i in ec5) { temp2 = i.Name; } unoidl.com.sun.star.beans.PropertyValue[] cellTextArgs5 = new unoidl.com.sun.star.beans.PropertyValue[1]; cellTextArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); cellTextArgs[0].Name = "Text"; cellTextArgs[0].Value = new uno.Any(temp2); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs5); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:JumpToNextCell", "", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs); foreach (var i in ec) { temp2 = i.Cena.ToString(); } unoidl.com.sun.star.beans.PropertyValue[] cellTextArgs6 = new unoidl.com.sun.star.beans.PropertyValue[1]; cellTextArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); cellTextArgs[0].Name = "Text"; cellTextArgs[0].Value = new uno.Any(temp2); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs6); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:JumpToNextCell", "", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs); foreach (var i in ec) { temp2 = i.Skidka.ToString(); } unoidl.com.sun.star.beans.PropertyValue[] cellTextArgs7 = new unoidl.com.sun.star.beans.PropertyValue[1]; cellTextArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); cellTextArgs[0].Name = "Text"; cellTextArgs[0].Value = new uno.Any(temp2); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs7); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:JumpToNextCell", "", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs); foreach (var i in ec) { temp2 = i.Itog.ToString(); } unoidl.com.sun.star.beans.PropertyValue[] cellTextArgs8 = new unoidl.com.sun.star.beans.PropertyValue[1]; cellTextArgs[0] = new unoidl.com.sun.star.beans.PropertyValue(); cellTextArgs[0].Name = "Text"; cellTextArgs[0].Value = new uno.Any(temp2); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs8); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:JumpToNextCell", "", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); xDispatchHelper.executeDispatch((XDispatchProvider)frame, ".uno:InsertText", "", 0, cellTextArgs); unoidl.com.sun.star.text.XTextRange x4 = ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().getEnd(); // в конец ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().insertString(x4, "Всего оказано услуг на сумму: " + temp2 + "рублей " + Environment.NewLine + Environment.NewLine + Environment.NewLine + Environment.NewLine, true); string temp3 = ""; foreach (var i in Vrach) { temp2 = i.FIO; } foreach (var i in ec3) { temp3 = i.FIO; } unoidl.com.sun.star.text.XTextRange x5 = ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().getEnd(); // в конец foreach (var i in Firma) { ((unoidl.com.sun.star.text.XTextDocument)xComponent).getText().insertString(x5, "Исполнитель:__________________ " + temp2 + Environment.NewLine + "Бухгалтер:__________________" + i.Buh, true); } ((XStorable)xComponent).storeToURL(@"file:///" + push.Replace(@"\", "/"), new unoidl.com.sun.star.beans.PropertyValue[0]); xComponent.dispose(); }
static OfficeServiceManager() { bootstrap = uno.util.Bootstrap.bootstrap(); factory = (XMultiServiceFactory)bootstrap.getServiceManager(); loader = (XComponentLoader)factory.createInstance("com.sun.star.frame.Desktop"); }
protected override void InternalConvert(string sourceFileName, string destinationFileName) { //Debug.WriteLine($"Start Convert: {Thread.CurrentThread.ManagedThreadId} - {sourceFileName} - {destinationFileName}"); /*try * {*/ if (!File.Exists(sourceFileName)) { throw new FileNotFoundException("File not found", sourceFileName); } XComponentLoader loader = LOComponentLoader.Instance; XComponent component; { var pv = new unoidl.com.sun.star.beans.PropertyValue[1]; pv[0] = new unoidl.com.sun.star.beans.PropertyValue() { Name = "Hidden", Value = new uno.Any(true) }; component = loader.loadComponentFromURL("file:///" + Path.GetFullPath(sourceFileName).Replace('\\', '/'), "_blank", 0, pv); } try { //Debug.WriteLine($"File opened: {Thread.CurrentThread.ManagedThreadId} - {sourceFileName} - {destinationFileName}"); string destinationFullPath = Path.GetFullPath(destinationFileName); string destinationDirectory = Path.GetDirectoryName(destinationFullPath); if (!Directory.Exists(destinationDirectory)) { Directory.CreateDirectory(destinationDirectory); } var storable = (XStorable)component; var pv = new unoidl.com.sun.star.beans.PropertyValue[1]; pv[0] = new unoidl.com.sun.star.beans.PropertyValue() { Name = "FilterName", Value = new uno.Any(this.libreOfficeFilterName) }; System.Exception saveException = null; Thread saveThread = new Thread(() => { try { storable.storeToURL("file:///" + Path.GetFullPath(destinationFileName).Replace('\\', '/'), pv); } catch (System.Exception e) { saveException = e; } }); saveThread.Start(); if (!saveThread.Join(this.SaveTimeout)) { saveThread.Abort(); throw new TimeoutException("File save timeout."); } else if (saveException != null) { throw saveException; } //Debug.WriteLine($"File saved: {Thread.CurrentThread.ManagedThreadId} - {sourceFileName} - {destinationFileName}"); } finally { Thread closeThread = new Thread(() => { try { ((XCloseable)component).close(true); } catch { } }); closeThread.Start(); if (!closeThread.Join(this.CloseTimeout)) { closeThread.Abort(); } //Debug.WriteLine($"File closed: {Thread.CurrentThread.ManagedThreadId} - {sourceFileName} - {destinationFileName}"); } /*} * catch (System.Exception e) * { * Debug.WriteLine($"File exception: {Thread.CurrentThread.ManagedThreadId} - {sourceFileName} - {destinationFileName}"); * File.WriteAllText(destinationFileName, e.Message + "\n" + e.StackTrace); * }*/ }
static void Main() { XComponentContext localContext = uno.util.Bootstrap.bootstrap(); XMultiServiceFactory ServiceManager = (XMultiServiceFactory)localContext.getServiceManager(); XComponentLoader Desktop = (XComponentLoader)ServiceManager.createInstance("com.sun.star.frame.Desktop"); XComponent Document = Desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, new unoidl.com.sun.star.beans.PropertyValue[0]); XText Text = ((XTextDocument)Document).getText(); Text.setString("Hello I'm the first text!"); XTextCursor Cursor = Text.createTextCursor(); Text.insertString(Cursor, "Line# 1\n", false); Text.insertString(Cursor, "Line# 2", false); XTextTable Table; if ((Table = (XTextTable)((XMultiServiceFactory)Document).createInstance("com.sun.star.text.TextTable")) != null) { Table.initialize(2, 2); Text.insertTextContent(Text.getEnd(), Table, false); } unoidl.com.sun.star.beans.PropertyValue[] Params = new unoidl.com.sun.star.beans.PropertyValue[2]; unoidl.com.sun.star.beans.PropertyValue Param = new unoidl.com.sun.star.beans.PropertyValue(); Param.Name = "FilterName"; Param.Value = new uno.Any("writer_pdf_Export"); Params[0] = Param; Param = new unoidl.com.sun.star.beans.PropertyValue(); Param.Name = "CompressionMode"; Param.Value = new uno.Any("1"); Params[1] = Param; string CurrentDirectory = System.IO.Directory.GetCurrentDirectory(), DocumentDestName; CurrentDirectory = CurrentDirectory.Substring(0, CurrentDirectory.LastIndexOf("bin", CurrentDirectory.Length - 1)); if (File.Exists(DocumentDestName = (CurrentDirectory + "test_out.pdf"))) { File.Delete(DocumentDestName); } DocumentDestName = DocumentDestName.Replace(Path.DirectorySeparatorChar, '/').Replace("#", "%23"); ((XStorable)Document).storeToURL("file:///" + DocumentDestName, Params); ((XCloseable)Document).close(true); }
static void Main(string[] args) { InitOpenOfficeEnvironment(); XMultiServiceFactory multiServiceFactory = Connect(); XComponent xComponent = null; string docFileName = @"C:\test3.doc"; try { XComponentLoader componentLoader = (XComponentLoader)multiServiceFactory .createInstance("com.sun.star.frame.Desktop"); //set the property PropertyValue[] propertyValue = new PropertyValue[1]; PropertyValue aProperty = new PropertyValue(); aProperty.Name = "Hidden"; aProperty.Value = new uno.Any(false); propertyValue[0] = aProperty; xComponent = componentLoader .loadComponentFromURL(PathConverter(docFileName), "_blank", 0, propertyValue); XTextDocument xTextDocument = ((XTextDocument)xComponent); XEnumerationAccess xEnumerationAccess = (XEnumerationAccess)xTextDocument.getText(); XEnumeration xParagraphEnumeration = xEnumerationAccess.createEnumeration(); while (xParagraphEnumeration.hasMoreElements()) { uno.Any element = xParagraphEnumeration.nextElement(); XServiceInfo xinfo = (XServiceInfo)element.Value; if (xinfo.supportsService("com.sun.star.text.TextTable")) { Console.WriteLine("Found Table!"); XTextTable xTextTable = (XTextTable)element.Value; String[] cellNames = xTextTable.getCellNames(); for (int i = 0; i < cellNames.Length; i++) { XCell xCell = xTextTable.getCellByName(cellNames[i]); XText xTextCell = (XText)xCell; String strText = xTextCell.getString(); Console.WriteLine(strText); } } else { XTextContent xTextElement = (XTextContent)element.Value; XEnumerationAccess xParaEnumerationAccess = (XEnumerationAccess)xTextElement; // create another enumeration to get all text portions of //the paragraph XEnumeration xTextPortionEnum = xParaEnumerationAccess.createEnumeration(); //step 3 Through the Text portions Enumeration, get interface //to each individual text portion while (xTextPortionEnum.hasMoreElements()) { XTextRange xTextPortion = (XTextRange)xTextPortionEnum.nextElement().Value; Console.Write(xTextPortion.getString()); } } } } catch (unoidl.com.sun.star.uno.Exception exp1) { Console.WriteLine(exp1.Message); Console.WriteLine(exp1.StackTrace); } catch (System.Exception exp2) { Console.WriteLine(exp2.Message); Console.WriteLine(exp2.StackTrace); } finally { xComponent.dispose(); xComponent = null; } Console.WriteLine("Done."); Console.ReadLine(); }
private XComponent InitDocument(XComponentLoader aLoader, string file, string target) { var openProps = new PropertyValue[1]; openProps[0] = new PropertyValue { Name = "Hidden", Value = new Any(true) }; var xComponent = aLoader.loadComponentFromURL( file, target, 0, openProps); return xComponent; }
private static void ConvertToPdf(string filePath) { Process[] ps = Process.GetProcessesByName("soffice.exe"); if (ps.Length != 0) { throw new InvalidProgramException("OpenOffice not found. Is OpenOffice installed?"); } if (ps.Length > 0) { return; } Process p = new Process { StartInfo = { Arguments = "-headless -nofirststartwizard", FileName = "soffice.exe", CreateNoWindow = true } }; bool result = p.Start(); if (result == false) { throw new InvalidProgramException("OpenOffice failed to start."); } XComponentContext xLocalContext = Bootstrap.bootstrap(); XMultiServiceFactory xRemoteFactory = (XMultiServiceFactory)xLocalContext.getServiceManager(); XComponentLoader aLoader = (XComponentLoader)xRemoteFactory.createInstance("com.sun.star.frame.Desktop"); XComponent xComponent = null; try { PropertyValue[] openProps = new PropertyValue[1]; openProps[0] = new PropertyValue { Name = "Hidden", Value = new Any(true) }; xComponent = aLoader.loadComponentFromURL(PathConverter(filePath), "_blank", 0, openProps); while (xComponent == null) { Thread.Sleep(1000); } PropertyValue[] propertyValues = new PropertyValue[2]; propertyValues[1] = new PropertyValue { Name = "Overwrite", Value = new Any(true) }; propertyValues[0] = new PropertyValue { Name = "FilterName", Value = new Any(ConvertExtensionToFilterType(Path.GetExtension(filePath))) }; ((XStorable)xComponent).storeToURL(PathConverter(OutputFolder + Path.GetFileNameWithoutExtension(filePath) + ".pdf"), propertyValues); } catch (System.Exception e) { log.Error("Eccezione la conversione del file OpenOffice " + filePath); log.Error(e.StackTrace); File.Move(filePath, ErrorFolder + Path.GetFileName(filePath)); } finally { if (xComponent != null) { xComponent.dispose(); } CloseProcess("soffice"); File.Delete(filePath); } }
public static void ExportExcelLO(string FileName, DataSet ds) { try { string unoPath = @"C:\Program Files (x86)\LibreOffice 5\program"; Environment.SetEnvironmentVariable("UNO_PATH", unoPath, EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + @";" + unoPath, EnvironmentVariableTarget.Process); XComponentContext oStrap = uno.util.Bootstrap.bootstrap(); XMultiServiceFactory oServMan = (XMultiServiceFactory)oStrap.getServiceManager(); XComponentLoader desktop = (XComponentLoader)oServMan.createInstance("com.sun.star.frame.Desktop"); string url = @"private:factory/scalc"; PropertyValue[] loadProps = new PropertyValue[3]; loadProps[0] = new PropertyValue() { Name = "Hidden", Value = new uno.Any(true) }; loadProps[1] = new PropertyValue() { Name = "FilterName", Value = new uno.Any("MS Excel 97") }; loadProps[2] = new PropertyValue() { Name = "ReadOnly", Value = new uno.Any(false) }; XComponent document = desktop.loadComponentFromURL(url, "_blank", 0, loadProps); XSpreadsheets oSheets = ((XSpreadsheetDocument)document).getSheets(); XIndexAccess oSheetsIA = (XIndexAccess)oSheets; XSpreadsheet sheet = (XSpreadsheet)oSheetsIA.getByIndex(0).Value; int ii = 0; XCell celija = null; foreach (DataColumn kol in ds.Tables[0].Columns) { celija = sheet.getCellByPosition(ii, 0); ((XText)celija).setString(kol.ColumnName); //((XPropertySet)celija).setPropertyValue("CellBackColor", new uno.Any(654321)); //((XPropertySet)celija).setPropertyValue("CharColor", new uno.Any(333444)); ii++; } ds.Tables[0].AcceptChanges(); ii = 0; foreach (DataRow red in ds.Tables[0].Rows) { int jj = 0; ii++; foreach (object ob in red.ItemArray) { celija = sheet.getCellByPosition(jj, ii); ((XText)celija).setString(ob.ToString()); //((XPropertySet)celija).setPropertyValue("CellBackColor", new uno.Any(888777)); jj++; } } ((XStorable)document).storeToURL("file:///" + FileName.Replace(@"\", "/"), loadProps); System.Diagnostics.Process.Start(FileName); } catch (System.Exception ex) { throw ex; } }