123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371 |
- const fs = require('fs');
- const moment = require('moment');
- const shell = require('shelljs');
- const utils = require('./utils/base');
- var $xindaming = require('./xindaming');
- utils.uid = moment().format();
- utils.time = moment().format('YYYY-MM-DD');
- function mkdir(path) {
- if (!fs.existsSync(path)) {
- fs.mkdirSync(path)
- }
- }
- // shell.exec('rm -rf book && mkdir book');
- mkdir('./book/META-INF');
- fs.writeFileSync('./book/META-INF/container.xml', `<?xml version="1.0" encoding="UTF-8"?>
- <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
- <rootfiles>
- <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
- </rootfiles>
- </container>
- `)
- fs.writeFileSync('./book/mimetype', 'application/epub+zip')
- mkdir('./book/OEBPS')
- mkdir('./book/OEBPS/Images')
- mkdir('./book/OEBPS/Styles')
- fs.writeFileSync('./book/OEBPS/Styles/mc-style.css', `@charset "UTF-8";
- /*=========================font-face=========================*/
- @font-face {
- font-family:"zw";
- src:
- local("宋体"),local("明体"),local("明朝"),
- local("微软雅黑"),local("黑体"),
- local("Songti"),local("Songti SC"),local("Songti TC"),
- local("Song S"),local("Song T"),local("STBShusong"),local("TBMincho"),local("HYMyeongJo"),
- local("DK-SONGTI")
- local("Heiti"),local("Heiti SC"),local("Heiti TC"),
- local("MYing Hei S"),local("MYing Hei T"),local("TBGothic"),
- local("DK-HEITI"),
- url(../Fonts/fzzy.ttf);
- }
- /* This defines styles and classes used in sioebook */
- /*Global Setting*/
- * {
- margin: 0;
- padding: 0;
- }
- body {
- padding: 3% 2%;
- margin-top: 3%;
- margin-bottom: 3%;
- margin-left: 1%;
- margin-right: 1%;
- line-height: 1.3em;
- text-align: justify;
- font-family: "Times New Roman","方正书宋","宋体","明体","zw",sans-serif;
- }
- /* P 正常段落 */
- p {
- margin: 0.5em 0em;
- line-height: 1.3em;
- text-indent: 2em;
- }
- /* 居中、右、左 */
- .center {
- text-indent: 0em;
- text-align: center;
- }
- .right {
- text-indent: 0em;
- text-align: right;
- }
- .left {
- text-indent: 0em;
- text-align: left;
- }
- /*图片*/
- img {
- border: none;
- text-align: center;
- /*max-width: 100%;*/
- max-height: 100%;
- }
- /* 表格 */
- table {
- border-collapse: collapse;
- border-spacing: 0;
- margin: 0 auto 0;
- width: 100%;
- font-size: small;
- vertical-align:center;
- }
- tr,th,td {
- margin: 0;
- padding: 0.25em;
- border: none;
- font-size: 95%;
- font-family: "Times New Roman","方正书宋","宋体","明体","zw",sans-serif;
- text-indent: 0!important;
- text-align: left;
- vertical-align: middle;
- color: #666666;
- line-height: 1.05em;
- }
- /* 列表格式 */
- ul, ol {
- list-style:none;
- }
- /* 链接 颜色 不加下划线 */
- a {
- text-decoration:none;
- color: #663366;
- }
- a:hover {
- text-decoration:none;
- color: #CC99CC;
- }
- /* 文案 */
- .oval {
- padding: 5% 5%;
- margin: 12% 5% 2%;
- border: 0px dotted #993333;
- text-indent: 0em;
- font-size: 0.9em;
- color: #666666;
- }
- /* 水平线 */
- hr {
- border:0;
- background-color:#BEBEBE;
- height:1.5px;
- margin-top: 2%;
- margin-bottom: 2%;
- }
- /* 上下标注 */
- sup {
- font-size:small;
- }
- sub {
- font-size:small;
- }
- /* 标题1 书名 卷 */
- h1 {
- font-family: "微软雅黑","黑体","ht","zw",sans-serif;
- text-indent: 0em;
- text-align:center;
- line-height: 2em;
- margin-top: 30%;
- color: #996699;
- text-shadow: 1px 1px 1px gray;
- }
- h2 {
- color: #FFFFFF;
- margin-left:25%;
- line-height:200%;
- border-style: none double solid solid;
- border-width: 0px 3px 2px 30px;
- font-weight:bold;
- font-size:large;
- border-color: #FFFFFF;
- font-family: "微软雅黑","黑体","ht","zw",sans-serif;
- text-shadow: 1px 1px 1px gray;
- padding: 2px 10px 2px 10px;
- }
- h2.epub {
- font-family: "微软雅黑","黑体","ht","zw",sans-serif;
- text-indent: 0em;
- font-size: 1.2em;
- text-align: center;
- width: 1em;
- margin: 0em 5% 1.5em;
- line-height: 110%;
- color: #EEEEEE;
- border-style: none double none none;
- border-width: 0px 3px 0px 0px;
- border-color: #EEEEEE;
- padding: 0.5em 10px 0.5em 2px;
- text-shadow: 0px 0px 0px #AAAAAA;
- }
- h3 {
- margin: 1em 0 5em;
- color: #663366;
- line-height: 120%;
- text-align: left;
- font-family: "微软雅黑","黑体","ht","zw",sans-serif;
- text-shadow: 1px 1px 1px gray;
- padding: 15px 12px 1em 5px;
- border-style: none none dotted none;
- border-color: #CC6699;
- border-width: 0px 0px 1px 0px;
- text-shadow: 1px 1px 1px #AAAAAA;
- }
- h3.ebook {
- font-family: "微软雅黑","黑体","ht","zw",sans-serif;
- text-indent: 0em;
- margin: 1em 0 1em;
- padding: 2px 12px 2px 2px;
- text-align: left;
- line-height: 120%;
- border-style: none none none none;
- text-shadow: 1px 1px 1px #AAAAAA;
- }
- /* 章节序号 */
- .num {
- font-family: "微软雅黑","黑体","ht","zw",sans-serif;
- background-color: #CC6699;
- border-radius: 2px;
- padding: 4px 0.5em;
- color: #FFF;
- font-size: small;
- text-shadow: 1px 1px 1px #AAAAAA;
- }
- h4 {
- line-height: 2em;
- text-indent: 0em;
- color: #FFFFFF;
- margin-left:25%;
- font-family: "微软雅黑","黑体","ht","zw",sans-serif;
- text-shadow: 1px 1px 1px gray;
- }
- h5 {
- line-height: 1.5em;
- text-indent: 0em;
- color: #FF9900;
- font-size: 14px;
- }
- .vol {
- padding: 30% 5% 20%;
- margin: 15% -2em 2%;
- background-color: #996699;
- text-indent: 0em;
- }
- .volbg {
- background-color: #996699;
- }
- /* 作者译者编者等 */
- .author {
- margin: 20% 0;
- text-indent: 0em;
- text-align: center;
- font-size: 1em;
- line-height: 120%;
- font-weight: 600;
- color: #;
- }
- .wt {
- text-indent: 0em;
- font-style:italic;
- font-size: 0.9rem;
- line-height: 1.2em;
- color: #336699;
- }
- /* 出版社 */
- .copyright {
- margin: 35% 0 0;
- text-indent: 0em;
- text-align: center;
- font-size: 1em;
- line-height: 120%;
- font-weight: 300;
- color: #;
- }
- /* 书票 */
- .exL {
- margin: 45% 0;
- text-align: center;
- page-break-before: always;
- }
- .kh {
- text-indent: 0em;
- text-align: center;
- font-size: 0.80em;
- color: #EEEEEE;
- }
- /* 电子书信息 */
- .info {
- font-size: 1em;
- font-weight: bold;
- line-height: 150%;
- color: #666666;
- margin: 0 0 1em 20%;
- }
- .info_items {
- font-size: 0.8em;
- line-height: 120%;
- color: #666666;
- margin: 0 0 0 20%;
- }
- /* 多看 图框 */
- .duokan-image-single {
- margin: 0.5em 0;
- bottom: 2%;
- text-align: center;
- }
- /*++*/
- .rht {
- font-family: "微软雅黑","黑体","ht","zw",sans-serif;
- font-size: 115%;
- line-height: 120%;
- text-indent: 0em;
- text-align: right;
- color: #CCCCCC;
- }
- .lt {
- font-size: 80%;
- text-indent: 0em;
- text-align: right;
- color: #003366;
- }
- div.float {
- width: 42%;
- float: right;
- margin: 1em 0 0em 1em;
- }`)
- mkdir('./book/OEBPS/Text')
- fs.writeFileSync('./book/OEBPS/Text/cover.xhtml', `<?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>Cover</title>
- </head>
- <body>
- <div style="text-align: center; padding: 0pt; margin: 0pt;">
- <svg xmlns="http://www.w3.org/2000/svg" height="100%" preserveAspectRatio="xMidYMid meet" version="1.1" viewBox="0 0 240 300" width="100%" xmlns:xlink="http://www.w3.org/1999/xlink">
- <image width="240" height="300" xlink:href="../Images/cover.jpg"/>
- </svg>
- </div>
- </body>
- </html>`)
- // opf toc.ncx ...
- utils.opf(utils, $xindaming).then(res => {
- fs.writeFileSync('./book/OEBPS/content.opf', res);
- return utils.tocNcx(utils, $xindaming)
- }).then(res => {
- fs.writeFileSync('./book/OEBPS/toc.ncx', res);
- return utils.book(utils)
- }).then(res => {
- fs.writeFileSync('./book/OEBPS/Text/book.xhtml', res)
- });
|