base.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. module.exports = {
  2. opf: function (name, list) {
  3. return new Promise(resolve => {
  4. function page1(list) {
  5. let html = '';
  6. list.forEach(key => {
  7. if (key.index > 2666) {
  8. html += `<item id="text${key.index}" media-type="text/x-oeb1-document" href="page/text${key.index}.html"></item>`;
  9. }
  10. });
  11. return html;
  12. }
  13. function page2(list) {
  14. let html = '';
  15. list.forEach(key => {
  16. if (key.index > 2666) {
  17. html += `
  18. <itemref idref="text${key.index}"/>`;
  19. }
  20. });
  21. return html;
  22. }
  23. let html = `<?xml version="1.0" encoding="iso-8859-1"?>
  24. <package unique-identifier="uid" xmlns:opf="http://www.idpf.org/2007/opf" xmlns:asd="http://www.idpf.org/asdfaf">
  25. <metadata>
  26. <dc-metadata xmlns:dc="http://purl.org/metadata/dublin_core"
  27. xmlns:oebpackage="http://openebook.org/namespaces/oeb-package/1.0/">
  28. <dc:Title>${name}</dc:Title>
  29. <dc:Language>zh</dc:Language>
  30. <dc:Creator>Amazon.com</dc:Creator>
  31. <dc:Copyrights>Amazon.com</dc:Copyrights>
  32. <dc:Publisher>Amazon.com</dc:Publisher>
  33. <x-metadata>
  34. <EmbeddedCover>../images/cover.jpg</EmbeddedCover>
  35. </x-metadata>
  36. </dc-metadata>
  37. </metadata>
  38. <manifest>
  39. <item id="content" media-type="text/x-oeb1-document" href="toc.html"></item>
  40. <item id="ncx" media-type="application/x-dtbncx+xml" href="toc.ncx"/>
  41. ${page1(list)}
  42. </manifest>
  43. <spine toc="ncx">
  44. <itemref idref="content"/>
  45. ${page2(list)}
  46. </spine>
  47. <guide>
  48. <reference type="toc" title="Table of Contents" href="toc.html"/>
  49. <reference type="text" title="Book" href="text1.html"/>
  50. </guide>
  51. </package>`;
  52. resolve(html);
  53. });
  54. },
  55. toc: function (list) {
  56. return new Promise(resolve => {
  57. function page() {
  58. let html = '';
  59. list.forEach(key => {
  60. if (key.index > 2666) {
  61. html += `<li><a href="page/text${key.index}.html#id${key.index}">${key.title}</a></li>`;
  62. }
  63. });
  64. return html;
  65. }
  66. let html = `<!DOCTYPE html>
  67. <html xmlns="http://www.w3.org/1999/xhtml" lang="zh" xml:lang="zh">
  68. <head>
  69. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  70. <title>TOC</title>
  71. </head>
  72. <body>
  73. <h1 id="toc">目录</h1>
  74. <ul>
  75. ${page()}
  76. </ul>
  77. </body>
  78. </html>
  79. `;
  80. resolve(html);
  81. });
  82. },
  83. ncx: function (name, list) {
  84. return new Promise(resolve => {
  85. function page() {
  86. let html = '';
  87. list.forEach(key => {
  88. if (key.index > 2666) {
  89. html += `<navPoint id="navpoint-${key.index + 1}" playOeder="${key.index + 1}"><navLabel><text>${key.title}</text></navLabel><content src="page/text${key.index}.html#id${key.index}"></content></navPoint>`;
  90. }
  91. });
  92. return html;
  93. }
  94. let html = `<?xml version="1.0"?>
  95. <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
  96. "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
  97. <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
  98. <head>
  99. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  100. </head>
  101. <docTitle>
  102. <text>${name}</text>
  103. </docTitle>
  104. <navMap>
  105. <navPoint id="navpoint-1" playOrder="1"><navLabel><text>Content</text></navLabel><content src="toc.html#toc"/></navPoint>
  106. ${page()}
  107. </navMap>
  108. </ncx>`;
  109. resolve(html);
  110. });
  111. },
  112. page: function (item, content) {
  113. return new Promise(resolve => {
  114. const html = `
  115. <html xmlns="http://www.w3.org/1999/xhtml" lang="zh" xml:lang="zh">
  116. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  117. <body>
  118. <h3 id="id${item.index}">${content.title}</h3>
  119. <p>
  120. ${content.page}
  121. </p>
  122. </body>
  123. </html>
  124. `;
  125. resolve(html);
  126. });
  127. }
  128. };