123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- const COS = require('../lib/cos-wx-sdk-v5');
- var wxfs = wx.getFileSystemManager();
- const config = require('../config');
- const { cos, requestCallback } = require('../tools');
- const docPreviewDao = {
- '查询文档预览开通状态 describeDocProcessService': describeDocProcessService,
- '文档转html同步请求 getDocHtmlPreviewUrl': getDocHtmlPreviewUrl,
- '文档转码同步请求 getDocPreview': getDocPreview,
- '提交文档转码任务 createDocProcessJob': createDocProcessJob,
- '查询指定文档转码任务 describeDocProcessJob': describeDocProcessJob,
- '拉取符合条件的文档转码任务 describeDocProcessJobList': describeDocProcessJobList,
- '查询文档转码队列 describeDocProcessQueue': describeDocProcessQueue,
- '更新文档转码队列 updateProcessQueue': updateProcessQueue,
- };
- function describeDocProcessService() {
- // sdk引入以及初始化请参考:https://cloud.tencent.com/document/product/436/31953
- const key = `docbucket`; //
- const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing;是否必传:否
- regions: '',
- // 存储桶名称,以“,”分隔,支持多个存储桶,精确搜索;是否必传:否
- bucketNames: '',
- // 存储桶名称前缀,前缀搜索;是否必传:否
- bucketName: '',
- // 第几页;是否必传:否
- pageNumber: '',
- // 每页个数;是否必传:否
- pageSize: '',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
- }
- }
- );
- }
- function getDocHtmlPreviewUrl() {
- // sdk引入以及初始化请参考:https://cloud.tencent.com/document/product/436/31953
- const ObjectKey = 'test.docx';
- const key = `${ObjectKey}`; // ObjectKey:{ObjectKey};
- const host = `${config.Bucket}.cos.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 数据万象处理能力,文档 HTML 预览固定为 doc-preview;是否必传:是
- 'ci-process': 'doc-preview',
- // 转换输出目标文件类型,文档 HTML 预览固定为 html(需为小写字母);是否必传:是
- dstType: 'html',
- // 是否获取预览链接。填入值为1会返回预览链接和Token信息;填入值为2只返回Token信息;不传会直接预览;是否必传:否
- weboffice_url: 1,
- // 指定目标文件类型,支持的文件类型请见下方;是否必传:否
- srcType: '',
- // 对象下载签名,如果预览的对象为私有读时,需要传入签名,详情请参见 请求签名 文档注意:需要进行 urlencode;是否必传:否
- sign: '',
- // 是否可复制。默认为可复制,填入值为1;不可复制,填入值为0;是否必传:否
- copyable: '',
- // 自定义配置参数,json结构,需要经过 URL 安全 的 Base64 编码,默认配置为:{ commonOptions: { isShowTopArea: true, isShowHeader: true, language: "zh" }},支持的配置参考 自定义配置项说明。htmlParams支持的特殊配置:语言切换,通过 commonOptions 的 language 参数指定预览语言,支持"zh"、"en“,默认为"zh"。;是否必传:否
- htmlParams: '',
- // 水印文字,需要经过 URL 安全 的 Base64 编码,默认为空;是否必传:否
- htmlwaterword: '',
- // 水印 RGBA(颜色和透明度),需要经过 URL 安全 的 Base64 编码,默认为:rgba(192,192,192,0.6);是否必传:否
- htmlfillstyle: '',
- // 水印文字样式,需要经过 URL 安全 的 Base64 编码,默认为:bold 20px Serif;是否必传:否
- htmlfront: '',
- // 水印文字旋转角度,0 - 360,默认315度;是否必传:否
- htmlrotate: '',
- // 水印文字水平间距,单位 px,默认为50;是否必传:否
- htmlhorizontal: '',
- // 水印文字垂直间距,单位 px,默认为100;是否必传:否
- htmlvertical: '',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
- }
- }
- );
- }
- function getDocPreview() {
- // sdk引入以及初始化请参考:https://cloud.tencent.com/document/product/436/31953
- const ObjectKey = 'test.docx';
- const key = `${ObjectKey}`; // ObjectKey:{ObjectKey};
- const host = `${config.Bucket}.cos.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 数据万象处理能力,文档预览固定为 doc-preview;是否必传:是
- 'ci-process': 'doc-preview',
- // 源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值;是否必传:否
- srcType: '',
- // 需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图;是否必传:否
- page: 0,
- // 转换输出目标文件类型:png,转成 png 格式的图片文件jpg,转成 jpg 格式的图片文件pdf,转成 pdf 格式文件。 无法选择页码,page 参数不生效如果传入的格式未能识别,默认使用 jpg 格式;是否必传:否
- dstType: 'jpg',
- // Office 文档的打开密码,如果需要转换有密码的文档,请设置该字段;是否必传:否
- password: '',
- // 是否隐藏批注和应用修订,默认为00:隐藏批注,应用修订1:显示批注和修订;是否必传:否
- comment: 0,
- // 表格文件参数,转换第 X 个表,默认为1;是否必传:否
- sheet: 0,
- // 表格文件转换纸张方向,0代表垂直方向,非0代表水平方向,默认为0;是否必传:否
- excelPaperDirection: 0,
- // 设置纸张(画布)大小,对应信息为: 0 → A4 、 1 → A2 、 2 → A0 ,默认 A4 纸张 (需配合 excelRow 或 excelCol 一起使用);是否必传:否
- excelPaperSize: 0,
- // 转换后的图片处理参数,支持 基础图片处理 所有处理参数,多个处理参数可通过 管道操作符 分隔,从而实现在一次访问中按顺序对图片进行不同处理;是否必传:否
- ImageParams: '',
- // 生成预览图的图片质量,取值范围为 [1, 100],默认值100。 例如取值为100,代表生成图片质量为100%;是否必传:否
- quality: 0,
- // 预览图片的缩放参数,取值范围为 [10, 200], 默认值100。 例如取值为200,代表图片缩放比例为200% 即放大两倍;是否必传:否
- scale: 0,
- // 按指定 dpi 渲染图片,该参数与 scale 共同作用,取值范围 96-600 ,默认值为 96 。转码后的图片单边宽度需小于65500像素;是否必传:否
- imageDpi: 0,
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
- }
- }
- );
- }
- function createDocProcessJob() {
- // sdk引入以及初始化请参考:https://cloud.tencent.com/document/product/436/31953
- const key = `doc_jobs`; //
- const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = COS.util.json2xml({
- Request: {
- // 创建任务的 Tag,目前仅支持:DocProcess;是否必传:是
- Tag: 'DocProcess',
- // 待操作的文件对象;是否必传:是
- Input: {
- // 文件在 COS 上的文件路径,Bucket 由 Host 指定;是否必传:是
- Object: 'test.docx',
- },
- // 操作规则;是否必传:是
- Operation: {
- // 当 Tag 为 DocProcess 时有效,指定该任务的参数;是否必传:否
- DocProcess: {
- // 源数据的后缀类型,当前文档转换根据 cos 对象的后缀名来确定源数据类型,当 cos 对象没有后缀名时,可以设置该值;是否必传:否
- SrcType: '',
- // 转换输出目标文件类型:jpg,转成 jpg 格式的图片文件;如果传入的格式未能识别,默认使用 jpg 格式png,转成 png 格式的图片文件pdf,转成 pdf 格式文件(暂不支持指定页数);是否必传:否
- TgtType: '',
- // 从第 X 页开始转换;在表格文件中,一张表可能分割为多页转换,生成多张图片。StartPage 表示从指定 SheetId 的第 X 页开始转换。默认为1;是否必传:否
- StartPage: 1,
- // 转换至第 X 页;在表格文件中,一张表可能分割为多页转换,生成多张图片。EndPage 表示转换至指定 SheetId 的第 X 页。默认为-1,即转换全部页;是否必传:否
- EndPage: 2,
- // 表格文件参数,转换第 X 个表,默认为0;设置 SheetId 为0,即转换文档中全部表;是否必传:否
- SheetId: 0,
- // 表格文件转换纸张方向,0代表垂直方向,非0代表水平方向,默认为0;是否必传:否
- PaperDirection: 0,
- // 设置纸张(画布)大小,对应信息为: 0 → A4 、 1 → A2 、 2 → A0 ,默认 A4 纸张;是否必传:否
- PaperSize: 0,
- // 转换后的图片处理参数,支持 基础图片处理 所有处理参数,多个处理参数可通过 管道操作符 分隔,从而实现在一次访问中按顺序对图片进行不同处理;是否必传:否
- ImageParams: '',
- // 生成预览图的图片质量,取值范围 [1-100],默认值100。 例:值为100,代表生成图片质量为100%;是否必传:否
- Quality: 0,
- // 预览图片的缩放参数,取值范围[10-200], 默认值100。 例:值为200,代表图片缩放比例为200% 即放大两倍;是否必传:否
- Zoom: 100,
- // 按指定 dpi 渲染图片,该参数与 Zoom 共同作用,取值范围 96-600 ,默认值为 96 。转码后的图片单边宽度需小于65500像素;是否必传:否
- ImageDpi: 96,
- // 是否转换成单张长图,设置为 1 时,最多仅支持将 20 标准页面合成单张长图,超过可能会报错,分页范围可以通过 StartPage、EndPage 控制。默认值为 0 ,按页导出图片,TgtType="png"/"jpg" 时生效;是否必传:否
- PicPagination: 0,
- },
- // 结果输出地址;是否必传:是
- Output: {
- // 存储桶的地域;是否必传:是
- Region: config.Region,
- // 存储结果的存储桶;是否必传:是
- Bucket: config.Bucket,
- // 输出文件路径。非表格文件输出文件名需包含 ${Number} 或 ${Page} 参数。多个输出文件,${Number} 表示序号从1开始,${Page} 表示序号与预览页码一致。${Number} 表示多个输出文件,序号从1开始,例如输入 abc_${Number}.jpg,预览某文件5 - 6页,则输出文件名为 abc_1.jpg,abc_2.jpg${Page} 表示多个输出文件,序号与预览页码一致,例如输入 abc_${Page}.jpg,预览某文件5-6页,则输出文件名为 abc_5.jpg,abc_6.jpg表格文件输出路径需包含 ${SheetID} 占位符,输出文件名必须包含 ${Number} 参数。例如 /${SheetID}/abc_${Number}.jpg,先根据 excel 转换的表格数,生成对应数量的文件夹,再在对应的文件夹下,生成对应数量的图片文件;是否必传:是
- Object: '${Number}',
- },
- },
- // 任务所在的队列 ID,开通预览服务后自动生成,请使用 查询队列 获取或前往 万象控制台 在存储桶中查询 ;是否必传:否
- QueueId: '',
- },
- });
- cos.request(
- {
- Method: 'POST', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
- }
- }
- );
- }
- function describeDocProcessJob() {
- // sdk引入以及初始化请参考:https://cloud.tencent.com/document/product/436/31953
- const jobId = 'xxx';
- const key = `doc_jobs/${jobId}`; // jobId:{jobId};
- const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
- }
- }
- );
- }
- function describeDocProcessJobList() {
- // sdk引入以及初始化请参考:https://cloud.tencent.com/document/product/436/31953
- const key = `doc_jobs`; //
- const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 任务的 Tag:DocProcess;是否必传:是
- tag: 'DocProcess',
- // 拉取该队列 ID 下的任务,可在任务响应内容或控制台中获取;是否必传:否
- queueId: '',
- // Desc 或者 Asc。默认为 Desc;是否必传:否
- orderByTime: 'Desc',
- // 请求的上下文,用于翻页。上次返回的值;是否必传:否
- nextToken: '',
- // 拉取该状态的任务,以,分割,支持多状态:All、Submitted、Running、Success、Failed、Pause、Cancel。默认为 All;是否必传:否
- states: 'Success',
- // 拉取创建时间大于等于该时间的任务。格式为:%Y-%m-%dT%H:%m:%S%z;是否必传:否
- // startCreationTime: "",
- // 拉取创建时间小于等于该时间的任务。格式为:%Y-%m-%dT%H:%m:%S%z;是否必传:否
- // endCreationTime: "",
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
- }
- }
- );
- }
- function describeDocProcessQueue() {
- // sdk引入以及初始化请参考:https://cloud.tencent.com/document/product/436/31953
- const key = `docqueue`; //
- const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- cos.request(
- {
- Method: 'GET', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Query: {
- // 队列 ID,以“,”符号分割字符串;是否必传:否
- queueIds: '',
- // 1. Active 表示队列内的作业会被文档预览服务调度执行2. Paused 表示队列暂停,作业不再会被文档预览服务调度执行,队列内的所有作业状态维持在暂停状态,已经处于执行中的任务将继续执行,不受影响;是否必传:否
- state: 'Active',
- // 第几页,默认第一页;是否必传:否
- pageNumber: '',
- // 每页个数,默认10个;是否必传:否
- pageSize: '',
- },
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
- }
- }
- );
- }
- function updateProcessQueue() {
- // sdk引入以及初始化请参考:https://cloud.tencent.com/document/product/436/31953
- const queueId = 'xxx';
- const key = `docqueue/${queueId}`;
- const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
- const url = `https://${host}/${key}`;
- const body = COS.util.json2xml({
- Request: {
- // 队列名称;是否必传:是
- Name: 'xxx',
- // 队列 ID;是否必传:是
- QueueID: queueId,
- // 队列状态;是否必传:是
- State: 'Active',
- // 通知渠道;是否必传:是
- NotifyConfig: {
- // 回调配置;是否必传:否
- Url: '',
- // 回调类型,普通回调:Url;是否必传:否
- Type: 'Url',
- // 回调事件,文档预览任务完成;是否必传:否
- Event: 'TaskFinish',
- // 回调开关,Off,On;是否必传:否
- State: 'Off',
- },
- },
- });
- cos.request(
- {
- Method: 'PUT', // 固定值,必须
- Key: key, // 必须
- Url: url, // 请求的url,必须
- Body: body, // 请求体参数,必须
- ContentType: 'application/xml', // 固定值,必须
- },
- function (err, data) {
- if (err) {
- // 处理请求失败
- console.log(err);
- } else {
- // 处理请求成功
- console.log(data.Response);
- }
- }
- );
- }
- module.exports = docPreviewDao;
|