南宁购物网站建设,经典重庆论坛上不了了,手工活外发,句容建设工程备案网站最近工作有点忙#xff0c;所 以没能及时完善公文一键排版系统#xff0c;现在只好熬夜更新一下。
有时公文有包括附件#xff0c;招照公文排版规范#xff1a; 附件应当另面编排#xff0c;并在版记之前#xff0c;与公文正文一起装订。“附件”二字及附件顺序号用3号黑…最近工作有点忙所 以没能及时完善公文一键排版系统现在只好熬夜更新一下。
有时公文有包括附件招照公文排版规范 附件应当另面编排并在版记之前与公文正文一起装订。“附件”二字及附件顺序号用3号黑体字顶格编排在版心左上角第一行。附件标题居中编排在版心第三行。附件顺序号和附件标题应当与附件说明的表述一致。附件格式要求同正文。 如附件与正文不能一起装订应当在附件左上角第一行顶格编排公文的发文字号并在其后标注“附件”二字及附件顺序号。 这里我们先实现附件与公文正文一起装订的情况暂时不考虑附件与正文不能一起装订的情况。
要对附件及附件标题进行排版首先要判断并确认附件及附件标题。
“附件”标识行如果只有一个附件时通常内容就是“附件”两个字。这时我们可以这样判断
//功能判断字符串是否为“附件”“附件x”“附件x-x”其中x为阿拉伯数字
//输入p字符串
//输出true是false否
//记录20230726创建
function isAttachment(p)
{return 附件p ? true : false;
}如果有多个附件“附件”标识行的内容就是附件x或附件x-x其中x为阿拉伯数字。
我们可以用正则表达式来判断
//功能判断字符串是否为“附件”“附件x”“附件x-x”其中x为阿拉伯数字
//输入p字符串
//输出true是false否
//记录20230726创建
function isAttachment(p)
{//return 附件p ? true : false;return (/^(附件){1}([\d|-]*)$/.test(p));
}如果我们在输入公文“附件”标识行时不小心在“附”和“件”之间添加了空格呢我们也要考虑这种情况并给予温馨提示把上面的代码再进一步改进如下
//功能判断字符串是否为“附件”“附件x”“附件x-x”其中x为阿拉伯数字
//输入p字符串
//输出true是false否
//记录20230726创建
function isAttachment(p)
{//return 附件p ? true : false;//return (/^(附件){1}([\d|-]*)$/.test(p)); return (/^(附){1}\s*(件){1}([\d|-]*)$/.test(p));
}由于附件标题的格式与正文的标题格式是一致的所 以我们只需要调用 isAstatement()来进行判断就行了。
与对落款判断和排版一样我们把前后相连两个段落内容放在一起进行判断
//功能判断相连两段文字是否为附件及标题
//输入p1前一段p2后一段
//输出true:是false:否
//记录20230726创建
function isAttachmentTitle(p1, p2)
{if (! isAttachment(p1))//前一段内容是“附件”?{return false;//不是}return (! isAstatement(p2)); //后一段是否为一句话
}//isAttachmentTitle()
如果确定两个段落内容是附件及附件标题那么我们就可以进行排版了
//功能设置附件及附件标题格式
//输入p1附件p2附件标题
//输出附件及附件标题格式化后的字符串
//记录20230726创建
function setAttachmentTitleFmt(p1, p2)
{//附件 与 附件标题之间要间隔一行return p stylemargin:0px; font-family:黑体; font-size: mtfs pt; line-height: rs p1 /pp stylemargin:0px; font-size:28pt; line-height: rs nbsp;/pp stylemargin:0px; text-align:center; font-family: dtfn ; font-size: dtfs pt; line-height: rs p2 /p;}//setAttachmentTitleFmt(p1, p2)
如果我们想智能化和人性化一些那么可以对在输入公文“附件”标识行时不小心在“附”和“件”之间添加了空格这种情况进行检测并给予温馨提示我们要添加一个函数isAttachmentWithSpace() 利用正则表达式来检测字符串中是否包含空格
//功能判断字符串是否为“附s件”“附s件x”“附s件x-x”其中s为空格x为阿拉伯数字
//输入p字符串
//输出true是false否
//记录20230726创建
function isAttachmentWithSpace(p)
{//return 附件p ? true : false;return (/^(附){1}\s(件){1}([\d|-]*)$/.test(p));
}
然后为字符串增加一个删除所有空格的方法.eliminateSpace()
//功能删除字符串中的所有空格
//记录20230726创建
String.prototype.eliminateSpace function()
{return this.replace(/\s*/g,);
}
再修改完善setAttachmentTitleFmt()函数引入上面增加的函数isAttachmentWithSpace() 和.eliminateSpace()
//功能设置附件及附件标题格式
//输入p1附件p2附件标题
//输出附件及附件标题格式化后的字符串
//记录20230726创建
function setAttachmentTitleFmt(p1, p2)
{//附件 与 附件标题之间要间隔一行//return p stylemargin:0px; font-family:黑体; font-size: mtfs pt; line-height: rs p1 /pp stylemargin:0px; font-size:28pt; line-height: rs nbsp;/pp stylemargin:0px; text-align:center; font-family: dtfn ; font-size: dtfs pt; line-height: rs p2 /p;return p stylemargin:0px; font-family:黑体; font-size: mtfs pt; line-height: rs pt (isAttachmentWithSpace(p1) ? p1.eliminateSpace() span stylecolor:red; font-style:italic;padding-left:15pt*公文一键排版系统温馨提示本行多余的空格已删除/span : p1) /pp stylemargin:0px; font-size: mtfs pt; line-height: rs ptnbsp;/pp stylemargin:0px; text-align:center; font-family: dtfn ; font-size: dtfs pt; line-height: rs pt p2 /p;
}//setAttachmentTitleFmt(p1, p2)
这样程序在遇到输入公文“附件”标识行时不小心在“附”和“件”之间添加了空格呢这种情况会改正并给予温馨提示 *公文一键排版系统温馨提示本行多余的空格已删除 最后我们修改setDocFmt()对附件和附件标题进行判断和排版
//功能设置公文格式Set document format
//输入无
//输出无
//记录20230726添加对附件及附件标题格式的处理代码
function setDocFmt()
{taDbg.value \n---setDocFmt()\n;getArg(); //读取预设参数var t getClearInfoArray();//标题if (cbDocTilte){t[0] setDocTitle(t[0]) /pp stylemargin:0px; line-height: rs nbsp;;}var i (cbDocTilte ? 1 : 0);//增:2023-07-16while (i t.length){if (i t.length-1)//20230726增加{if (isBadging(t[i],t[i1]))//是落款{//落款前加空行t[i-1] /pp stylemargin:0px; line-height: rs nbsp;;//设置落款t[i] setBadging(t[i],t[i1]);t[i1] null;taDbg.value \nt[ (i-1) ] t[i-1] \nt[ i ] t[i] \nt[ (i1) ] t[i1];//i;//i;i 2;continue;}if (isAttachmentTitle(t[i],t[i1])) //是附件及附件标题{t[i] setAttachmentTitleFmt(t[i],t[i1]);t[i1] null;taDbg.value \nt[ (i-1) ] t[i-1] \nt[ i ] t[i] \nt[ (i1) ] t[i1];//i;//i;i 2;continue;}}//ift[i] setParaFmt(t[i]);i;}//while()alert(t.join());edRichBody.innerHTML t.join();
}//setDocFmt()
之前我们在调用 isBadging(t[i],t[i1])将前后相连两个段落内容放在一起判断是否为落款时没有考虑t[i]为最后一个段落t[i1]undefined 这种情况现在调用isAttachmentTitle(t[i],t[i1])是否为附件及附件标题时也面临 同样的情况所以这里我们增加了 if (i t.length-1)//20230726增加//*****代码运行效果如下 完整代码如下
!DOCTYPE HTML
HTML
head
meta http-equivContent-Type contenttext/html; charsetutf-8 /
meta nameAuthor contentPurpleEndurer
title公文一键排版系统/titlescript typetext/javascript
var aFontName [方正小标宋简体,//0黑体,//1微软雅黑,//2仿宋_GB2312,//3仿宋,//4楷体_GB2312,//5楷体,//6宋体,//7Arial,//8Wingdings 2//9
];//sId:select control id, iDefSel:default selected
function showFontNameSel(sId, iDefSel)
{document.write(select id, sId, width50);for (var i 0; i aFontName.length; i){document.write(option value, aFontName[i], );document.write(iiDefSel ? selected : );document.write(aFontName[i],/option);}document.write(/select);
}var aFontSize [[初号, 42],//0[小初, 36],//1[一号, 26],//2[小一, 24],//3[二号, 22],//4[小二, 18],//5[三号, 16],//6[小三, 15],//7[四号, 14],//8[小四, 12],//9[五号, 10.5], //10[小五, 9],//11[六号, 7.5],//12[小六, 6.5],//13[七号, 5.5],//14[八号, 5]//15
];//sId:select control id, iDefSel:default selected
function showFontSizeSel(sId, iDefSel)
{document.write(select id, sId, );for (var i 0; i aFontSize.length; i){document.write(option value,aFontSize[i][1], );document.write(iiDefSel ? selected : );document.write(aFontSize[i][0],/option);}document.write(/select);
}var aAlign [[左对齐,left],//0[居中对齐,center],//1[右对齐,right],//2[两端分散对齐,justify]//3
];//sId:select control id, iDefSel:default selected
function showAlignSel(sId, iDefSel)
{document.write(select id, sId, );for (var i 0; i aAlign.length; i){document.write(option value,aAlign[i][1], );document.write(iiDefSel ? selected : );document.write(aAlign[i][0],/option);}document.write(/select);
}//showAlignSel()function setDocTitle(s)
{
/*//标题字体名 font name//var o document.getElementById(selDocTitleFontName);var dtfn document.getElementById(selDocTitleFontName).value;//alert(fn);//标题字号 font sizevar dtfs document.getElementById(selDocTitleFontSize).value;//alert(fs);//标题对齐方式 text alignvar dtta document.getElementById(selDocTitleAlign).value;//alert(ta);//标题行距 row spacing//var rs document.getElementById(tbRowSp).value;//return span stylefont-family: fn ;font-size: fs ;text-align: ta ; s /span;
*/ return p stylefont-family: dtfn ;font-size: dtfs pt; text-align: dtta ; line-height: rs pt; s;
}//setDocTitle()//去除P中的属性
function stripPattribs(s)
{var i s.indexOf();return ((-1 ! i) ? s.substr(i1) : s);
}//去除HTML代码
String.prototype.stripHTML function()
{var reTag /(?:.|\s)*?/g; //var reTag /[^]/gi; //过滤所有html标签但不包括html标签内的内容 return this.replace(reTag,);
}String.prototype.trim function()
{//去除首尾空格return this.replace(/(^\s*)|(\s*$)/g, ); /*var t this.replace(/(^\s*)|(\s*$)/g, ); return t t.replace(/(^nbsp;*)|(nbsp*$)/g, ); */
} String.prototype.ltrim function()
{ return this.replace(/(^\s*)/g, );
} String.prototype.rtrim function()
{ return this.replace(/(\s*$)/g, );
} //判断是否为中文标点符号
String.prototype.isCnPunctuation function()
{
/*var reg /[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/;return (reg.test(this)) ? true : false;
*/return (/[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/.test(this)) ? true : false;
}//判断是否为英文标点符号
String.prototype.isEnPunctuation function()
{
/*var reg /[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]/;return (reg.test(c)) ? true : false;
*/return (/[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]/.test(this)) ? true : false;
}//功能判断是否为中文或英文标点符号
String.prototype.isPunctuation function()
{ //return ((/[\x21-\x2f\x3a-\x40\x5b-\x60\x7B-\x7F]/.test(this)) || (/[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/.test(this))) ? true : false; return (this.isEnPunctuation() || this.isCnPunctuation()) ? true : false; }//判断是否为纯半角阿拉伯数字串
String.prototype.isArabicNumEn function()
{return /^\d$/.test(this);
}//判断是否为纯全角阿拉伯数字串
String.prototype.isArabicNumCn function()
{//[\uff10|\uff11|\uff12|\uff13|\uff14|\uff15|\uff16|\uff17|\uff18|\uff19][|||||||||]return (/^[\uff10|\uff11|\uff12|\uff13|\uff14|\uff15|\uff16|\uff17|\uff18|\uff19]$/.test(this));
}//判断是否为纯全角或纯半角阿拉伯数字串
String.prototype.isPureArabicNum function()
{//[\uff10|\uff11|\uff12|\uff13|\uff14|\uff15|\uff16|\uff17|\uff18|\uff19][|||||||||]return (this.isArabicNumEn() || this.isArabicNumCn());
}//判断是否为全阿拉伯数字串全角或半角阿拉伯数字均可
String.prototype.isArabicNum function()
{//[\uff10|\uff11|\uff12|\uff13|\uff14|\uff15|\uff16|\uff17|\uff18|\uff19][|||||||||]return (/^[\d|\uff10|\uff11|\uff12|\uff13|\uff14|\uff15|\uff16|\uff17|\uff18|\uff19]$/.test(this));
}function getClearInfoArray()
{var s edRichBody.innerHTML.replace(/br(?:.|\s)*?/gi,/pp);var t s.split(p);taDbg.value \n---getClearInfoArray()\n;for (var i0; i t.length; i){taDbg.value \nt[ i ] t[i];} while (t[0].length0 || t[0]/p){taDbg.value \nshift: t[0];t.shift();}while (t[t.length-1].length0 || t[t.length-1]/p){taDbg.value \npop: t[t.length-1];t.pop();}for (var i0; i t.length; i){t[i] stripPattribs(t[i]);//t[i] t[i].replace(/(?!img|p|\/p|br|a|\/a).*?/gi, );//t[i] t[i].replace(/(?!img|a|\/a).*?/gi, );t[i] t[i].stripHTML();//以下两句顺序不能颠倒t[i] t[i].replace(/nbsp;/ig, ); //去除空格代码 nbsp;t[i] t[i].trim(); //去除首尾空格}while (t[t.length-1].length0 || t[t.length-1]/p){taDbg.value \npop: t[t.length-1];t.pop();}taDbg.value \n---\n;for (var i0; i t.length; i){taDbg.value \nt[ i ] t[i];} return t;
}function clearDocFmt()
{
/*var s edRichBody.innerHTML;var t s.split(p);//var i 0;taDbg.value \n---clearDocFmt()\n;for (var i0; i t.length; i){taDbg.value \nt[ i ] t[i];} while (t[0].length0 || t[0]/p){taDbg.value \nshift: t[0];t.shift();}while (t[t.length-1].length0 || t[t.length-1]/p){taDbg.value \npop: t[t.length-1];t.pop();}for (var i0; i t.length; i){t[i] stripPattribs(t[i]);//t[i] t[i].replace(/(?!img|p|\/p|br|a|\/a).*?/gi, );//t[i] t[i].replace(/(?!img|a|\/a).*?/gi, );t[i] t[i].stripHTML();t[i] t[i].trim(); //去除首尾空格t[i] t[i].replace(/nbsp;/ig, ); //去除空格代码 nbsp;}while (t[t.length-1].length0 || t[t.length-1]/p){taDbg.value \npop: t[t.length-1];t.pop();}taDbg.value \n---\n;for (var i0; i t.length; i){taDbg.value \nt[ i ] t[i];} //t.unshift(p);s t.join(/pp);s p s;
*/var s p getClearInfoArray().join(/pp);//alert(s);edRichBody.innerHTML s;//alert(edRichBody.innerHTML);
} //功能是否以标点符号结束Is aunctuation at the end of the string
String.prototype.isEndWithPunctuation function()
{
/*var c this.substring(this.length-1);return c.isPunctuation();
*/return this.substring(this.length-1).isPunctuation();
}//语句结束符号字符串,考虑到三级标题序号可能包括英语句号此处不将英语句号列为语句结束符号
var sStatementEndPunctuation 。?…!?;//功能获取段落文字中的第一个语句结束符号位置
//输入p:字符串
//输出第一个语句结束符号位置
//记录20230726更新
function getFirstPunctuationPos(p)
{//taDbg.value \n ---getFirstPunctuationPos( p )\n;var r p.length, n;for (var i 0; i p.length; i){n p.indexOf(p[i]);if ( (-1 ! n) (n r) ){r n;//taDbg.value \n p[i] n n r r;}}return r;
}//getFirstPunctuationPos(p)//功能判断字符串是否只有一句话
//输入p:字符串
//输出true是一句话false不是一句话
function isAstatement(p)
{
/*for (var i 0; i sStatementEndPunctuation.length; i){var n p.indexOf(sStatementEndPunctuation[i]);if (n !-1 n p.length-1) {return true;}}return false;
*/var n getFirstPunctuationPos(p);return ((( -1 ! n) (n p.length-1)) ? true : false);
}/*
//功能标题是否单独成行 Is paragraph title a single line?
//输入t文字
//输出true是独立标题行false不是独立标题行
function ptIsALine(t)
{return isAstatement(t) ;
} //ptIsALine(t)
*///功能设置一级标题set paragraph format with primay title
//输入t文字
//输出格式化字符串
function setParaTitle1(t)
{var r;if (isAstatement(t)) //(ptIsALine(t)) //标题是否单独成行{//return p stylefont-family: fn ;font-size: fs pt; text-align: ta ; line-height: rs pt; s;r p stylemargin:0; font-family: pt1fn ;font-size: pt1fs pt; line-height: rs pt; text-indent: sn em; t;}else{//标题不单独成行var n getFirstPunctuationPos(t);//t.indexOf(。);r p stylemargin:0; line-height: rs pt; text-indent: sn em; font-family: mtfn span stylefont-family: pt1fn ;font-size: pt1fs pt; t.substring(0, n) /span t.substring(n);}taDbg.value \n---setParaTitle1: r;return r;
} //setParaTitle1(t)//功能设置二级标题set paragraph format with secondary title
//输入t文字
//输出格式化字符串
function setParaTitle2(t)
{taDbg.value \n---setParaTitle2: t;var r;//var b document.getElementById(cbSecondaryTitleStrong).checked; //是否加粗if (isAstatement(t))//(ptIsALine(t)) //标题是否单独成行{//return p stylefont-family: fn ;font-size: fs pt; text-align: ta ; line-height: rs pt; s;r p stylemargin:0; font-family: st2fn ;font-size: st2fs pt; line-height: rs pt; text-indent: sn em; (st2Strong ? font-weight: bold; : ) t;}else{//标题不单独成行var n getFirstPunctuationPos(t);r p stylemargin:0; line-height: rs pt; text-indent: sn em; font-size: st2fs pt; font-family: mtfn span stylefont-family: st2fn (st2Strong ? ;font-weight: bold; : ) t.substring(0, n) /span t.substring(n);}return r;
}//setParaTitle2(t)//功能在段落文本末尾添加缺少标点符号的提示文本
//输入q待添加提示的文本
//输出添加提示后的文本
//记录20230726修改变量strMissPunctuation
function appendMissPunctuationPrompt(q)
{//const strMissPunctuation *公文一键排版系统温馨提示此处是否遗漏标点符号;const strMissPunctuation span stylecolor:red; font-weight:bold;font-style:italic;*公文一键排版系统温馨提示此处是否遗漏标点符号/span;var k q.lastIndexOf(strMissPunctuation); /*//alert(q);if (-1 ! k)//是否已包含缺少标点符号的提示文本{q q.substring(0, k);//已包含则舍弃//alert(q);}q span stylecolor:red; font-weight:bold; strMissPunctuation /span;
*///q (-1 ! k ? q.substring(0, k) : q) span stylecolor:red; font-weight:bold; strMissPunctuation /span;q (-1 ! k ? q.substring(0, k) : q) strMissPunctuation;return q;//return (-1 ! k ? q.substring(0, k) : q) span stylecolor:red; font-weight:bold; strMissPunctuation /span;
}//appendMissPunctuationPrompt()//功能设置三级标题set paragraph format with third title
//输入t文字
//输出格式化字符串
function setParaTitle3(t)
{taDbg.value \n---setParaTitle3: t;var r;//var b document.getElementById(cbThirdTitleString).checked; //是否加粗if (isAstatement(t))//(ptIsALine(t)) //标题是否单独成行{//return p stylefont-family: fn ;font-size: fs pt; text-align: ta ; line-height: rs pt; s;r p stylemargin:0; font-family: mtfn ;font-size: mtfs pt; line-height: rs pt; text-indent: sn em; (tt3Strong ? font-weight: bold; : ) t;}else{//标题不单独成行var n getFirstPunctuationPos(t);r p stylemargin:0; line-height: rs pt; text-indent: sn em; font-size: mtfs pt; font-family: mtfn (tt3Strong ? span stylefont-weight: bold; : ) t.substring(0, n) (tt3Strong ? /span : ) t.substring(n);if ( !r.isEndWithPunctuation()){r appendMissPunctuationPrompt(r);}}//ifreturn r;
}//setParaTitle3(t)//是否为只包含一二三四五六七八九十的字符串
String.prototype.isCnNum function()
{//[\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341] [一二三四五六七八九十]return (/^[\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341]$/.test(this));
}//Is the paragraph with primary title?一级标题
function isIncludePrimaryTitle(p)
{var t p.indexOf(、);return ((-1 ! t) (p.substring(0,t).isCnNum())) ? true : false;//return /^[\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341][\u3001]{1}/.test(p); //可匹配“ 十一、三四”中的“十一、”//return /^\s*[\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341][\u3001]{1}/.test(p); //可匹配“ 十一、三四”或“ 十一、三四”中的“十一、”//(\b[\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341])*[\u3001]{1}可匹配“十一、三四”中的顿号//\b[\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341]*[\u3001]{1}可匹配“a十一、三四”中的“十一、”
}//isIncludePrimaryTitle(p)//Is a secondary title serial number with parenthesis是带小括号的二级标题序号吗
function isT2SNwithParenthesis(p)
{var t p[0];if (t (){t p.indexOf());if ((-1 ! t) ((p.substring(1,t)).isCnNum())) {return true;}}//ifif (t ){t p.indexOf();if ((-1 ! t) (p.substring(1,t).isCnNum())) {return true;}}//ifreturn false;//二级标题
}//isSNwithParenthesis(p)//Is the paragraph with secondary title?二级标题
function isIncludeSecondaryTitle(p)
{var t p[0];//t p.substring(0, 1);if (-1! ㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩.indexOf(t)){return true;}if (isT2SNwithParenthesis(p)){return true;//二级标题}return false;
}//isIncludeSecondaryTitle(p)//Is the paragraph with third title?三级标题
function isIncludeThirdTitle(p)
{var t p.indexOf(.);if (-1t){t p.indexOf();}return ((-1 ! t) p.substring(0,t).isPureArabicNum()) ? true : false;
}//isIncludeThirdTitle(p)//功能获取文字串的标题级别
//输入p文字串
//输出1一级标题2二级标题3三级标题0其它
function getTitleLevel(p)
{taDbg.value \n---getTitleLevel: p;//var t p[0];//t p.substring(0, 1);if (isIncludeSecondaryTitle(p))//(t( || t ){//alert(t);return 2;//二级标题}if (isIncludePrimaryTitle(p))//一级标题{return 1;}if (isIncludeThirdTitle(p))//三级标题{return 3;}return 0;
}//getTitleLevel(p)//功能设置段落格式set paragraph format
//输入p段落文字
//输出设置格式的文本
function setParaFmt(p)
{switch (getTitleLevel(p)){case 1:t setParaTitle1(p);//一级标题break;case 2:t setParaTitle2(p);//二级标题break;case 3:t setParaTitle3(p);//三级标题break;default: //main text正文t p stylemargin:0; line-height: rs pt; text-indent: sn em;font-family: mtfn ; font-size: mtfs pt; p;}//switch//taDbg.value \n---setParaFmt: t;return t;
}//setParaFmt(p)function getArg()
{// 排版内容包括公文标题cbDocTilte document.getElementById(cbDocTilte).checked;//标题字体名 document title font namedtfn document.getElementById(selDocTitleFontName).value;//alert(fn);//标题字号 document title font sizedtfs document.getElementById(selDocTitleFontSize).value;//alert(fs);//标题对齐方式 document title text aligndtta document.getElementById(selDocTitleAlign).value;//一级标题字号 primary title font namept1fn document.getElementById(selPrimaryTitleFontName).value;//一级标题字号 primary titlefont sizept1fs document.getElementById(selPrimaryTitleFontSize).value;//二级标题字号 psecondary title font namest2fn document.getElementById(selSecondaryTitleFontName).value;//二级标题字号 secondary title font sizest2fs document.getElementById(selSecondaryTitleFontSize).value;//二级标题字体加粗 secondary title strongst2Strong document.getElementById(cbSecondaryTitleStrong).checked;//三级标题字体加粗 third title strongtt3Strong document.getElementById(cbThirdTitleStrong).checked;//正文字体名称mtfn document.getElementById(selMainTextFontName).value;//正文字体字号mtfs document.getElementById(selMainTextFontSize).value;//行距 row spacingrs document.getElementById(tbRowSp).value;//首行行首空格数sn document.getElementById(tbLeadSpNum).value;
}// getArg()//增:2023-07-16
//判断dddd年dd月dd日是否符合闰年等规则
String.prototype.isRightDateCn function()
{return (/^(?:(?!0000)[0-9]{4}([年]{1})(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([月]{1})0?2\2(?:29))([日]{1})$/.test(this));
}//增:2023-07-16
//判断是否为dddd年dd月dd日格式
String.prototype.isDateCn function()
{//年\u5e74月\u6708日\u65e5//return (/^(\d{4})([\u5e74]{1})(\d{1,2})([\u6708]{1})\d{1,2}([\u65e5]{1})$/.test(this)); return (/^(\d{4})([年]{1})(\d{1,2})([月]{1})\d{1,2}([日]{1})$/.test(this));
}//增:2023-07-16
//功能判断是否为落款
//输入t1落款单位,t2落款日期
//输出true是落款false非落款
function isBadging(t1,t2)
{if (isAstatement(t1))//落款单位末尾是否带符号{return false;//带符号不是落款}taDbg.value \n--- isBadging()\n t1 \n t2;return (t2.isDateCn());
}//isBadging(t1,t2)//增:2023-07-22
//功能利用canvas取字符串宽度
//输入s:字符串f字体
//输出字符串宽度
function getStrWidth(s, f)
{//alert(s);var canvas getStrWidth.canvas || (getStrWidth.canvas document.createElement(canvas));var ctx canvas.getContext(2d); ctx.font f;return ctx.measureText(s).width;
}//geStrWidth()//增:2023-07-16,改2023-07-22
//功能设置落款格式
//输入t1落款单位,t2落款日期
//输出格式化后的落款单位和落款日期代码
function setBadging(t1,t2)
{var r new Array();var f mtfs pt mtfn;//顺序不能颠倒//noSealvar iSize1 getStrWidth(t1, f);var iSize2 getStrWidth(t2, f);//document.write(p iSize1 iSize2);if (iSize2 iSize1){//如成文日期长于发文机关署名应当使成文日期右空二字编排并相应增加发文机关署名右空字数。r[0] p styleline-height: rs pt; font-family: mtfn ;font-size: mtfs pt; text-align:right; margin:0 Math.ceil((iSize2 - iSize1)/2 48) px 0 0 t1;//1em16px,2em32px,3em48pxr[1] p styleline-height: rs pt; font-family: mtfn ;font-size: mtfs pt; text-align:right; margin:0 2em 0 0 t2;}else{//单一机关行文时在正文或附件说明下空一行右空二字编排发文机关署名在发文机关署名下一行编排成文日期首字比发文机关署名首字右移二字r[0] p styleline-height: rs pt; font-family: mtfn ;font-size: mtfs pt; text-align:right; margin:0 2em 0 0 t1;r[1] p styleline-height: rs pt; font-family: mtfn ;font-size: mtfs pt; text-align:right; margin: 0 (iSize1 - iSize2) px 0 0 t2;}return r.join();
}//setBadging()//功能判断字符串是否为“附件”
//输入p字符串
//输出true是false否
//记录20230726创建
function isAttachmentWithColon(p)
{return 附件p.substr(0, 3) ? true : false;
}//功能判断字符串是否为“附s件”“附s件x”“附s件x-x”其中s为空格x为阿拉伯数字
//输入p字符串
//输出true是false否
//记录20230726创建
function isAttachmentWithSpace(p)
{//return 附件p ? true : false;return (/^(附){1}\s(件){1}([\d|-]*)$/.test(p));
}//功能判断字符串是否为“附件”“附件x”“附件x-x”其中x为阿拉伯数字
//输入p字符串
//输出true是false否
//记录20230726创建
function isAttachment(p)
{//return 附件p ? true : false;//return (/^(附件){1}([\d|-]*)$/.test(p)); return (/^(附){1}\s*(件){1}([\d|-]*)$/.test(p));
}//功能判断相连两段文字是否为附件及标题
//输入p1前一段p2后一段
//输出true:是false:否
//记录20230726创建
function isAttachmentTitle(p1, p2)
{if (! isAttachment(p1))//前一段内容是“附件”?{return false;//不是}return (! isAstatement(p2)); //后一段是否为一句话
}//isAttachmentTitle() //功能删除字符串中的所有空格
//记录20230726创建
String.prototype.eliminateSpace function()
{return this.replace(/\s*/g,);
}//功能设置附件及附件标题格式
//输入p1附件p2附件标题
//输出附件及附件标题格式化后的字符串
//记录20230726创建
function setAttachmentTitleFmt(p1, p2)
{//附件 与 附件标题之间要间隔一行//return p stylemargin:0px; font-family:黑体; font-size: mtfs pt; line-height: rs p1 /pp stylemargin:0px; font-size:28pt; line-height: rs nbsp;/pp stylemargin:0px; text-align:center; font-family: dtfn ; font-size: dtfs pt; line-height: rs p2 /p;return p stylemargin:0px; font-family:黑体; font-size: mtfs pt; line-height: rs pt (isAttachmentWithSpace(p1) ? p1.eliminateSpace() span stylecolor:red; font-style:italic;padding-left:15pt*公文一键排版系统温馨提示本行多余的空格已删除/span : p1) /pp stylemargin:0px; font-size: mtfs pt; line-height: rs ptnbsp;/pp stylemargin:0px; text-align:center; font-family: dtfn ; font-size: dtfs pt; line-height: rs pt p2 /p;
}//setAttachmentTitleFmt(p1, p2)//功能设置公文格式Set document format
//输入无
//输出无
//记录20230726添加对附件及附件标题格式的处理代码
function setDocFmt()
{taDbg.value \n---setDocFmt()\n;getArg(); //读取预设参数var t getClearInfoArray();//标题if (cbDocTilte){t[0] setDocTitle(t[0]) /pp stylemargin:0px; line-height: rs nbsp;;}
/*for (var i (cbDocTilte ? 1: 0); i t.length; i){t[i] setParaFmt(t[i]);}
*/var i (cbDocTilte ? 1 : 0);//增:2023-07-26while (i t.length){if (i t.length-1)//20230716增加{if (isBadging(t[i],t[i1]))//是落款{//落款前加空行t[i-1] /pp stylemargin:0px; line-height: rs nbsp;;//设置落款t[i] setBadging(t[i],t[i1]);t[i1] null;taDbg.value \nt[ (i-1) ] t[i-1] \nt[ i ] t[i] \nt[ (i1) ] t[i1];//i;//i;i 2;continue;}if (isAttachmentTitle(t[i],t[i1])) //是附件及附件标题{t[i] setAttachmentTitleFmt(t[i],t[i1]);t[i1] null;taDbg.value \nt[ (i-1) ] t[i-1] \nt[ i ] t[i] \nt[ (i1) ] t[i1];//i;//i;i 2;continue;}}//ift[i] setParaFmt(t[i]);i;}//while()alert(t.join());edRichBody.innerHTML t.join();
}//setDocFmt() /script/headbody
fieldset stylewidth: 1100px;legend实时编辑区/legend
iframe ideditor width1200px height400px styleborder: solid 1px;/iframe
/fieldset
pinput typebutton idbtnclearDocFmt value清除格式 onclickclearDocFmt() /input typebutton idbtnsetDocFmt value一键排版 onclicksetDocFmt() /input typebutton idbtnShowSrc value显示源码 onclickshowSrc() stylebackground:yellow; border-radius: 25px; /input typebutton idbtnB valueB title加粗/正常 stylefont-weight:bolder onclickexecCmd(bold,false,null) /input typebutton idbtnItalic valueI title斜体/正常 stylefont-weight:bolder;font-style:italic onclickexecCmd(italic,false,null) /input typebutton idbtnUnderline valueI title下划线 stylefont-weight:bolder;text-decoration:underline onclickexecCmd(underline,false,null) /
/p
fieldset stylewidth: 1200px;legend参数设置/legend公文标题input typecheckbox checked idcbDocTilte排版内容包括公文标题scriptshowFontNameSel(selDocTitleFontName, 0);document.write( );showFontSizeSel(selDocTitleFontSize, 4);document.write( );showAlignSel(selDocTitleAlign, 1);/scriptp正文一级标题scriptshowFontNameSel(selPrimaryTitleFontName, 1);document.write( );showFontSizeSel(selPrimaryTitleFontSize, 6);/script/pp正文二级标题scriptshowFontNameSel(selSecondaryTitleFontName, 5);document.write( );showFontSizeSel(selSecondaryTitleFontSize, 6);/scriptinput typecheckbox checked idcbSecondaryTitleStrong粗体/pp正文三级标题input typecheckbox checked idcbThirdTitleStrong粗体/pp正文 scriptshowFontNameSel(selMainTextFontName, 3);document.write( );showFontSizeSel(selMainTextFontSize, 6);document.write( );/script行距行间距input typetext idtbRowSp value28 size2!-- row spacing//-- 段落首行行首空格数input typetext idtbLeadSpNum value2 size2/P/fieldsetp调试信息/p
textarea idtaDbg stylewidth: 1225px; height: 200px调试信息/textareascript typetext/javascriptconst edRich document.getElementById(editor);
const taDbg document.getElementById(taDbg);
const btnShowSrc document.getElementById(btnShowSrc);//排版内容是否包括公文标题
var cbDocTilte; // document.getElementById(cbDocTilte).value;
//标题字体名 document title font name
var dtfn; // document.getElementById(selDocTitleFontName).value;
//标题字号 document title font size
var dtfs; // document.getElementById(selDocTitleFontSize).value;
//标题对齐方式 document title text align
var dtta;// document.getElementById(selDocTitleAlign).value;//一级标题字号 font name
var pt1fn; // document.getElementById(selPrimaryTitleFontName).value;
//一级标题字号 font size
var pt1fs; // document.getElementById(selPrimaryTitleFontSize).value;//二级标题字号 psecondary title font name
var st2fn; // document.getElementById(selSecondaryTitleFontName).value;
//二级标题字号 secondary title font size
var st2fs; // document.getElementById(selSecondaryTitleFontSize).value;
//二级标题字体加粗 secondary title strong
var st2Strong; // document.getElementById(cbSecondaryTitleStrong).value;//三级标题字体加粗 third title strong
var tt3Strong; // document.getElementById(cbThirdTitleStrong).value;//行距 row spacingvar rs; // document.getElementById(tbRowSp).value;
//首行行首空格数var sn; // document.getElementById(tbLeadSpNum).value;//正文字体名称
var mtfn; // document.getElementById(selMainTextFontName).value;//正文字体字号
var mtfs; // document.getElementById(selMainTextFontSize).value;
var edRichDoc;
var edRichBody;
//var edRichHTML;
if (typeof(edRich) !undefined){edRichDoc edRich.contentWindow.document;edRichDoc.designMode on;edRichDoc.contentEditable true;edRichBody edRichDoc.body;edRichBody.innerHTML pa hrefhttp://blog.csdn.net/purpleendurerhttp://blog.csdn.net/purpleendurer/a/pp/pp stylefont-family:方正小标宋简体;font-size:22pt; text-align:center; line-height:28pt;p aligncenter styletext-align:center;text-indent:24.0pt;line-height:28.0ptspan langEN-US stylefont-size:22.0pt;font-family:方正小标宋简体;mso-hansi-font-family:黑体;color:blackSQL/spanspan stylefont-size:22.0pt;font-family:方正小标宋简体;mso-hansi-font-family:黑体;color:black注入基础span langEN-USo:p/o:p/span/span/pp styletext-indent:24.0pt;line-height:28.0pt;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0pxspan stylefont-size:16.0pt;font-family:黑体;color:black一、span langEN-USSQL/span注入分类span langEN-USo:p/o:p/span/span/pp styletext-indent:24.0pt;line-height:28.0pt;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0pxbspan stylefont-size:16.0pt;font-family:楷体_GB2312;color:black一什么是span langEN-USSQL/span注入span langEN-US?o:p/o:p/span/span/b/pp styletext-indent:24.0pt;line-height:28.0pt;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0pxspan langEN-US stylefont-size:16.0pt;font-family:仿宋_GB2312;color:blackSLQ/spanspan stylefont-size:16.0pt;font-family:仿宋_GB2312;color:black注入span langEN-US(/span英文span langEN-US: Sqlinject)/span当span langEN-USweb/span应用向后台数据库传递span langEN-USSQL/span语句进行数据库操作时如果对用户输入的参数没有经过严格的过滤那么用户可以构造特殊的span langEN-USsq1/span语句从而带入到数据库中执行获取或修改数据库中的数据。span langEN-USo:p/o:p/span/span/pp测试1/pp styletext-indent:24.0pt;line-height:28.0pt;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px河池市××××局/pp2023年7月22日/pp测试2/pp广西壮族自治区河池市××××局/pp2023年7月22日/pp测试3/pp河池市××局/pp2023年7月22日/pp测试4/pp河池市×局/pp2023年7月22日/pp附件/pp附件标题/pp附件/pp附件标题/pp附 件/pp附件标题/p;
}
else
{window.alert(undefined);
}function replaceStr(s1,s2)
{try{var r document.body.createTextRange();if (r.findText(s1)){r.expand(charactor);r.select();r.text s2;r.scrollIntoView();}else{alert(s not found!);}}catch (e){alert(e.description);}
}function showSrc()
{if (btnShowSrc.value显示源码){edRichBody.innerText edRichBody.innerHTML;//edRichBody.innerText edRichBody.innerHTML.replace(/p,/pchr(10)); //edRichBody.innerText edRichBody.innerText.replace(\/p,\/pchr(10)chr(13)); btnShowSrc.value 显示预览;btnShowSrc.style.background cyan;}else{edRichBody.innerHTML edRichBody.innerText;//edRichBody.innerHTML edRichBody.innerText.replace(chr(10)chr(13),);btnShowSrc.value 显示源码;btnShowSrc.style.background yellow;}
}function execCmd(cmd,f,v)
{edRichDoc.execCommand(cmd,f,v);
}
/script
/body
/html