Ejemplo n.º 1
0
        public static bool CanConvert(OnlyOfficeFileType fromFileType, OnlyOfficeFileType toFileType)
        {
            bool canConvert = false;

            switch (fromFileType)
            {
            case OnlyOfficeFileType.docx:
                canConvert = toFileType == OnlyOfficeFileType.odt ||
                             toFileType == OnlyOfficeFileType.rtf ||
                             toFileType == OnlyOfficeFileType.txt;
                break;

            case OnlyOfficeFileType.xlsx:
                canConvert = toFileType == OnlyOfficeFileType.csv ||
                             toFileType == OnlyOfficeFileType.ods;
                break;

            case OnlyOfficeFileType.pptx:
                canConvert = toFileType == OnlyOfficeFileType.odp;
                break;
            }
            return(canConvert);
        }
Ejemplo n.º 2
0
        public static void MimeToFileType(string mime, out OnlyOfficeDocumentType documentType, out OnlyOfficeFileType fileType)
        {
            documentType = OnlyOfficeDocumentType.text;
            fileType     = OnlyOfficeFileType.docx;

            // text
            if (mime == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
            {
                documentType = OnlyOfficeDocumentType.text;
                fileType     = OnlyOfficeFileType.docx;
            }
            else if (mime == "application/msword")
            {
                documentType = OnlyOfficeDocumentType.text;
                fileType     = OnlyOfficeFileType.doc;
            }
            else if (mime == "application/epub+zip")
            {
                documentType = OnlyOfficeDocumentType.text;
                fileType     = OnlyOfficeFileType.epub;
            }
            else if (mime == "application/vnd.oasis.opendocument.text")
            {
                documentType = OnlyOfficeDocumentType.text;
                fileType     = OnlyOfficeFileType.odt;
            }
            else if (mime == "application/rtf")
            {
                documentType = OnlyOfficeDocumentType.text;
                fileType     = OnlyOfficeFileType.rtf;
            }
            else if (mime == "text/plain")
            {
                documentType = OnlyOfficeDocumentType.text;
                fileType     = OnlyOfficeFileType.txt;
            }
            else if (mime == "application/vnd.ms-xpsdocument")
            {
                documentType = OnlyOfficeDocumentType.text;
                fileType     = OnlyOfficeFileType.xps;
            }

            // spreadsheet
            else if (mime == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
            {
                documentType = OnlyOfficeDocumentType.spreadsheet;
                fileType     = OnlyOfficeFileType.xlsx;
            }
            else if (mime == "application/vnd.ms-excel")
            {
                documentType = OnlyOfficeDocumentType.spreadsheet;
                fileType     = OnlyOfficeFileType.xls;
            }
            else if (mime == "application/vnd.oasis.opendocument.spreadsheet")
            {
                documentType = OnlyOfficeDocumentType.spreadsheet;
                fileType     = OnlyOfficeFileType.ods;
            }
            else if (mime == "text/csv")
            {
                documentType = OnlyOfficeDocumentType.spreadsheet;
                fileType     = OnlyOfficeFileType.csv;
            }

            // presentation
            else if (mime == "application/vnd.openxmlformats-officedocument.presentationml.presentation")
            {
                documentType = OnlyOfficeDocumentType.presentation;
                fileType     = OnlyOfficeFileType.pptx;
            }
            else if (mime == "application/vnd.ms-powerpoint")
            {
                documentType = OnlyOfficeDocumentType.presentation;
                fileType     = OnlyOfficeFileType.ppt;
            }
            else if (mime == "application/vnd.oasis.opendocument.presentation")
            {
                documentType = OnlyOfficeDocumentType.presentation;
                fileType     = OnlyOfficeFileType.odp;
            }
        }
Ejemplo n.º 3
0
 public static void NodeToFileType(Node node, out OnlyOfficeDocumentType documentType, out OnlyOfficeFileType fileType)
 {
     MimeToFileType(node.mime, out documentType, out fileType);
 }
Ejemplo n.º 4
0
        //# Thumbnail avec OnlyOffice
        //        curl -X POST http://hostname/onlyoffice/ConvertService.ashx
        // -H "Content-Type: application/json" -d
        // '{"async": false, "outputtype":"jpg","thumbnail":{"aspect": 0, "width": 64, "height": 64 },"filetype":"docx","url": "http://hostname/api/docs/3180/content"}'
        public static async Task <string> ConvertAsync(Logger logger, HttpContext c, string fileUrl, OnlyOfficeFileType fileType, OnlyOfficeFileType destFileType)
        {
            string resFileUrl = null;
            var    uri        = new Uri(new Uri(c.SelfURL()), "/onlyoffice/ConvertService.ashx");

            logger.Log(LogLevel.Info, $"OnlyOffice ConvertService URL: {uri}");
            using (HttpClient client = await HttpClient.CreateAsync(uri))
            {
                HttpClientRequest request = new HttpClientRequest();
                request.Method            = "POST";
                request.Path              = uri.PathAndQuery;
                request.Headers["accept"] = "application/json";
                var jsonContent = new JsonObject
                {
                    ["key"]        = Guid.NewGuid().ToString(),
                    ["async"]      = false,
                    ["codePage"]   = 65001,
                    ["filetype"]   = fileType.ToString(),
                    ["outputtype"] = destFileType.ToString(),
                    ["url"]        = fileUrl
                };
                request.Content = jsonContent;
                logger.Log(LogLevel.Debug, $"OnlyOffice ConvertService send message for file convert (url: {uri.ToString()}). Response: {jsonContent.ToString()}");
                await client.SendRequestAsync(request);

                HttpClientResponse response = await client.GetResponseAsync();

                if (response.StatusCode == 200)
                {
                    var json = await response.ReadAsJsonAsync();

                    logger.Log(LogLevel.Debug, $"OnlyOffice ConvertService for file convert (url: {uri.ToString()}). Response: {json.ToString()}");
                    if (json.ContainsKey("fileUrl"))
                    {
                        resFileUrl = json["fileUrl"];
                    }
                }
                else
                {
                    logger.Log(LogLevel.Error, $"OnlyOffice ERROR while asking for file convert (url: {uri.ToString()}) for file {fileUrl}. Got HTTP {response.StatusCode}");
                }
            }
            return(resFileUrl);
        }