示例#1
0
        public DocConvertResultDto Convert(OSSObjectDto ossObjectDto)
        {
            Requires.NotNull(ossObjectDto, nameof(ossObjectDto));

            var request = new ConvertOfficeFormatRequest
            {
                AcceptFormat = FormatType.JSON,
                Project      = m_IMMSetting.Project,
                SrcUri       = ossObjectDto.OSSPath,
                SrcType      = ossObjectDto.FileType,
                TgtType      = m_IMMSetting.ConvertType,
                TgtUri       = m_IMMSetting.GetTgtUri(ossObjectDto.IMMKey)
            };

            var task = Request(request);

            if (task == null)
            {
                return(null);
            }

            var result = new DocConvertResultDto(task);

            if (result.Status == DocConvertStatus.Failed)
            {
                m_Logger.LogWarning($"文档转换失败:{JsonConvert.SerializeObject(task)}");
            }

            return(result);
        }
        /// <summary>
        /// 文档转换(同步), 同步转换超时时间为5秒,如果转换时间大于5秒的文档转换需要使用异步接口CreateOfficeConversionTask。
        /// </summary>
        /// <param name="project">项目名称。</param>
        /// <param name="srcUri">
        /// <para>源数据的存储位置。</para>
        /// <para>OSS地址规则为oss://bucket/object,其中bucket为和当前项目处于同一区域的OSS Bucket名称,object为文件路径。</para></param>
        /// <param name="tgtUri">转换后输出内容的目标位置,建议TgtUri和SrcUri在同一个OSS Bucket中,便于权限管理。</param>
        /// <param name="tgtType">
        /// <para>转换输出的目标文件类型。包括如下选项:</para>
        /// <para>vector:转换为向量格式的文件,需要使用预览引擎进行渲染后才能预览。</para>
        /// <para>png:转换为PNG格式的图片文件。</para>
        /// <para>jpg:转换为JPG格式的图片文件。</para>
        /// <para>pdf:转换为PDF文件。</para>
        /// <para>text:转换为只包含文本内容的文件,主要用于提取文件的文本内容。只有当源数据类型为演示文档和文字文档时,才支持转换为text格式。</para></param>
        /// <param name="srcType">当OSS对象没有后缀名时,可以设置此参数。源数据的后缀类型。默认根据OSS对象的后缀名确定源数据的类型。</param>
        /// <param name="startPage">文档转换的起始页,默认值为1。</param>
        /// <param name="endPage">文档转换的结束页,默认值为200。如果需要转换所有页,设置此参数为-1。</param>
        /// <param name="maxSheetRow">表格文档转换的最大行数,默认值为1000。如果需要转换所有行,设置此参数为-1</param>
        /// <param name="maxSheetCol">表格文档转换的最大列数,默认值为100。如果需要转换所有列,设置此参数为-1。</param>
        /// <param name="maxSheetCount">表格文档转换的最大Sheet数。如果需要转换所有Sheet,设置此参数为-1。</param>
        /// <param name="sheetOnePage">表格文档转换时,是否将所有Sheet的内容输出到一页。</param>
        /// <param name="modelId">模型ID。此参数暂不可用。</param>
        /// <param name="password">文档的打开密码。如果需要转换有密码的文档,请设置此参数</param>
        /// <param name="tgtFilePrefix">
        /// <para>当TgtType设置为jpg、png、pdf时,此参数才生效。</para>
        /// <para>转换后的文件名称前缀,可以是英文、数字、横划线和下划线,且长度不超过256个字符。</para>
        /// <para>通过设置TgtFilePrefix和TgtFileSuffix,可以实现自定义转换后的文件名称。</para>
        /// <para>如果TgtType设置为jpg,TgtFilePrefix和TgtFileSuffix设置不同时,目标文件的名称规则如下:</para>
        /// <para>当TgtFilePrefix和TgtFileSuffix均为空时,则目标文件的名称为[x].jpg。</para>
        /// <para>当TgtFilePrefix为空,TgtFileSuffix为aa时,则目标文件的名称为[x] aa。</para>
        /// <para> 当TgtFilePrefix为aa,TgtFileSuffix为空时,则目标文件的名称为aa[x]。</para>
        /// <para> 当TgtFilePrefix为aa,TgtFileSuffix为bb时,则目标文件名称为aa[x] bb。</para>
        /// <para>当TgtFilePrefix为aa,TgtFileSuffix为def时,则目标文件名称为aa[x].jpg。</para>
        /// <para>其中[x] 表示多个目标文件,从1开始。如果TgtFilePrefix为aa,TgtFileSuffix为bb,且转换后的文件有3页,则所有的目标文件为aa[1] bb、aa[2] bb、aa[3] bb。</para></param>
        /// <param name="tgtFileSuffix">
        /// <para>当TgtType设置为jpg、png、pdf时,此参数才生效。</para>
        /// <para>转换后的文件名称后缀,可以是英文、数字、横划线和下划线,且长度不超过256个字符。其中def为保留字,表示采用默认的后缀名。</para>
        /// <para>通过设置TgtFilePrefix和TgtFileSuffix,可以实现自定义转换后的文件名称。</para>
        /// <para> 如果TgtType设置为jpg,TgtFilePrefix和TgtFileSuffix设置不同时,目标文件的名称规则如下:</para>
        /// <para>当TgtFilePrefix和TgtFileSuffix均为空时,则目标文件的名称为[x].jpg。</para>
        /// <para>当TgtFilePrefix为空,TgtFileSuffix为aa时,则目标文件的名称为[x] aa。</para>
        /// <para>当TgtFilePrefix为aa,TgtFileSuffix为空时,则目标文件的名称为aa[x]。</para>
        /// <para>当TgtFilePrefix为aa,TgtFileSuffix为bb时,则目标文件名称为aa[x] bb。</para>
        /// <para>当TgtFilePrefix为aa,TgtFileSuffix为def时,则目标文件名称为aa[x].jpg。</para>
        /// <para>其中[x] 表示多个目标文件,从1开始。如果TgtFilePrefix为aa,TgtFileSuffix为bb,且转换后的文件有3页,则所有的目标文件为aa[1] bb、aa[2] bb、aa[3] bb。</para>
        /// </param>
        /// <param name="tgtFilePages">
        /// <para>当TgtType设置为jpg、png、pdf时,此参数才生效。</para>
        /// <para>转换后输出指定文件页数,最多指定100个页数,如果超过100页,请分多次转换进行提交,默认输出所有页。例如当TgtFilePages设置为[1, 2, 100] 时,只会输出第1、2、100页到目标位置。</para>
        /// </param>
        /// <param name="fitToPagesTall">
        /// <para> 当TgtType设置为pdf时,此参数才生效。</para>
        /// <para>表格文档转换为pdf时,将行全部输出到一页,默认值为false。</para>
        /// </param>
        /// <param name="fitToPagesWide">当TgtType设置为pdf时,此参数才生效。表格文档转pdf时,将列全部输出在一页,默认值为false。</param>
        /// <param name="pdfVector">
        /// <para>当PDF转换为VECTOR时,是否使用向量模式,默认值为false。包括如下选项:</para>
        /// <para>true:使用向量模式,预览效果比较清晰,但是转换耗时较长。</para>
        /// <para>false:使用图片模式,预览效果一般,但是转换耗时较短。</para>
        /// </param>
        /// <param name="hidecomments">
        /// <para>当WORD、PPT转换为VECTOR、JPG、PNG时,是否隐藏批注和应用修订,默认值为false。包括如下选项:</para>
        /// <para>true:隐藏批注和应用修订。</para>
        /// <para>false:显示批注和修订。</para>
        /// </param>
        /// <returns></returns>
        public async Task <ConvertOfficeFormatResponse> ConvertOfficeFormatAsync(string project, string srcUri, string tgtUri, string tgtType, string srcType = null, long startPage = 1, long endPage = -1, long maxSheetRow = -1, long maxSheetCol = -1, long maxSheetCount = -1, bool sheetOnePage = false, string modelId = null, string password = null, string tgtFilePrefix = null, string tgtFileSuffix = null, string tgtFilePages = null, bool fitToPagesTall = false, bool fitToPagesWide = false, bool pdfVector = false, bool hidecomments = false)
        {
            var request = new ConvertOfficeFormatRequest()
            {
                Project        = project,
                SrcUri         = srcUri,
                TgtType        = tgtType,
                TgtUri         = tgtUri,
                SrcType        = srcType,
                StartPage      = startPage,
                EndPage        = endPage,
                MaxSheetRow    = maxSheetRow,
                MaxSheetCol    = maxSheetCol,
                MaxSheetCount  = maxSheetCount,
                SheetOnePage   = sheetOnePage,
                ModelId        = modelId,
                Password       = password,
                TgtFilePrefix  = tgtFilePrefix,
                TgtFileSuffix  = tgtFileSuffix,
                TgtFilePages   = tgtFilePages,
                FitToPagesTall = fitToPagesTall,
                FitToPagesWide = fitToPagesWide,
                PdfVector      = pdfVector,
                Hidecomments   = hidecomments
            };

            try
            {
                return(await Task.Run(() =>
                {
                    return Client.GetAcsResponse(request);
                }));
            }
            catch (ServerException e)
            {
                throw e;
            }
            catch (ClientException e)
            {
                throw e;
            }
        }