Skip to content

Instantly share code, notes, and snippets.

@rgchris rgchris/minimal-epub.reb
Last active Feb 6, 2019

What would you like to do?
Build a minimal EPUB in Ren-C
Rebol [
Title: "Package a Minimal eBook"
Date: 5-Feb-2019
Author: "Christopher Ross-Gill"
Notes: [
{Source of Minimal eBook}
target: %Test.epub
minimal-epub: [
%mimetype {application/epub+zip}
%META-INF/container.xml {
<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
%OEBPS/content.opf {
<?xml version="1.0" encoding="UTF-8" ?>
<package xmlns="" xmlns:dc="" unique-identifier="db-id" version="3.0">
<dc:title id="t1">Title</dc:title>
<dc:identifier id="db-id">isbn</dc:identifier>
<meta property="dcterms:modified">2014-03-27T09:14:09Z</meta>
<item id="toc" properties="nav" href="toc.xhtml" media-type="application/xhtml+xml" />
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" />
<item id="template_css" href="template.css" media-type="text/css" />
<item id="hello" href="1_hello.xhtml" media-type="application/xhtml+xml" />
<spine toc="ncx">
<itemref idref="hello" />
%OEBPS/toc.xhtml {
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="" xmlns:epub="">
<link href="template.css" rel="stylesheet" type="text/css" />
<nav id="toc" epub:type="toc">
<h1 class="frontmatter">Table of Contents</h1>
<ol class="contents">
<li><a href="1_hello.xhtml">Hello</a></li>
%OEBPS/1_hello.xhtml {
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="" xmlns:epub="">
<link href="template.css" rel="stylesheet" type="text/css" />
<h1>Hello World!</h1>
%OEBPS/toc.ncx {
<?xml version="1.0" encoding="UTF-8" ?>
<ncx version="2005-1" xml:lang="en" xmlns="">
<meta name="dtb:uid" content="isbn"/>
<meta name="dtb:depth" content="1"/>
<navPoint id="hello" playOrder="1">
<content src="1_hello.xhtml" />
%OEBPS/template.css {
h1 {
text-align: center;
zip target map-each part minimal-epub [
switch type of part [
file! [part]
text! [trim/head/tail trim/auto copy part]
print "----------------------------------"
call/wait/shell spaced ["zipinfo -l" target]
call/wait/shell spaced ["epubcheck" target]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.