<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Digital Editions</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/" />
    <link rel="self" type="application/atom+xml" href="http://blogs.adobe.com/digitaleditions/atom.xml" />
   <id>tag:blogs.adobe.com,2009:/digitaleditions//153</id>
    <link rel="service.post" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153" title="Digital Editions" />
    <updated>2009-05-11T22:24:34Z</updated>
    <subtitle>News, info and tips about Adobe Digital Editions</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.38</generator>
 
<entry>
    <title>EPUB generation library written in Java</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2009/05/epub_generation_library_writte.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=10495" title="EPUB generation library written in Java" />
    <id>tag:blogs.adobe.com,2009:/digitaleditions//153.10495</id>
    
    <published>2009-05-11T21:39:17Z</published>
    <updated>2009-05-11T22:24:34Z</updated>
    
    <summary>It&apos;s come to my attention that I didn&apos;t really give EPUBGen a proper introduction, and so there&apos;s been some confusion about the project. EPUBGen project EPUBGen is a Java library that demonstrates EPUB generation from a variety of document formats,...</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>It's come to my attention that I didn't really give EPUBGen a proper introduction, and so there's been some confusion about the project.
</p>
<h2>EPUBGen project</h2>
<p>EPUBGen is a Java library that demonstrates EPUB generation from a variety of document formats, and which may be a useful starting point or reference code for other EPUB generation needs. That is to say, it's an effort to promote the development of a variety of tools and workflows.</p>
]]>
        <![CDATA[<p>EPUBGen has both a set of back-end code generation modules and front end format importer modules. The back-end modules generate EPUB and illustrate more advanced functionality, including font subset embedding with obfuscation. The front-end modules are experimental and incomplete at this time. There are sample Java applications are provided that illustrate the conversion of respective file types (rt2epub, word2epub, fb2epub). There's a build script and available jar file for the 'rtf2epub' project.</p>
<p>This project is being provided to the development community to build on, and so contribution and derivative works, within the scope of the BSD license are invited.</p>
<h2>epub-tools</h2>
<p>This project is really part of our efforts to support the community effort around EPUB, and as such is hosted with other tools for generating and working with EPUB documents.</p>
<p>
The project is hosted with <a href="http://code.google.com/p/epub-tools/">epub-tools</a>.<br/>You can find the source code via <a href="http://code.google.com/p/epub-tools/source/checkout">subversion</a>.<br/>
For rtf2epub there is an entry in the <a href="http://code.google.com/p/epub-tools/downloads/list?can=2&q=label:rtf2epub&colspec=Filename%20Summary%20Uploaded%20Size%20DownloadCount">downloads</a>
</p>
<h2>A quick look at the packages.</h2>
<p> Without going into too much detail, here's a list of the top level packages (by which the project is organized) and a short description of each:</p>
<h3>com.adobe.epub</h3>
<p>This is where you'll find EPUB related functionality, including handling of OPF, OPS, NCX, and CSS generation.</p>
<h3>com.adobe.otf</h3>
<p>This has most of the font management code (although Font Subsetting is actually found in com.adobe.epub).</p>
<h3>com.adobe.conv.rtf2epub, com.adobe.conv.word2epub, com.adobe.fb2</h3>
<p>These are the front-end modules, they'll each have a main entry point and conversion code for reading and parsing through the source format.</p>
<h3>com.adobe.office.word</h3>
<p>Functionality used by both rtf2epub and word2epub.</p>]]>
    </content>
</entry>
<entry>
    <title>Font obfuscation code, available for review</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2009/05/font_mangling_code_available_f.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=10491" title="Font obfuscation code, available for review" />
    <id>tag:blogs.adobe.com,2009:/digitaleditions//153.10491</id>
    
    <published>2009-05-11T19:54:07Z</published>
    <updated>2009-05-11T22:39:38Z</updated>
    
    <summary>I realize this blog might have a diverse readership so I&apos;ll warn those of you who aren&apos;t developers, that this particular blog post probably isn&apos;t for you. Unless you find reading Java code interesting, you can probably skip this article....</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[I realize this blog might have a diverse readership so I'll warn those of you who aren't developers, that this particular blog post probably isn't for you.

Unless you find reading Java code interesting, you can probably skip this article.

I've implemented the IDPF font obfuscation algorithm which is recommended <a href="http://www.openebook.org/doc_library/informationaldocs/FontManglingSpec.html">here</a>. The font obfuscation code can be found in the EPUBGen project, and so you can take and review, and use the code. In this article, I'm going to highlight just the portions of that project that are related to embedding and obfuscating the font information. (The project also has font subsetting and other features which I will not cover.)

]]>
        <![CDATA[<p>If you'd like to follow along, the code I'm referring to is hosted on <a href="http://code.google.com/p/epub-tools/">epub-tools</a>, and you'll find it in the epubgen section within epub-tools.</p>
<p>As I mentioned, this should match the approach outlined in the informational document from the IDPF, which describes an algorithm for obfuscating a font, how to identify the document key for that algorithm, and how those fonts should be identified. 
</p>
<h2>Obfuscation Algorithm</h2>
<p>The code that actually modifies the font is in the "IDPFFontResource.java" file. You'll find it in .../com.adobe.epub/src/com/adobe/epub/opf/IDPFFontResource.java within the project.</p><p>

The loop is a little different than that of the recommendation document, but the end result is the same. The obfuscation key (see below) is applied to the first 1040 bytes of the font file. 
</p><p>
The code that actually does this is in the the serialize method:</p>
<pre>
/* 
 * Implements the Obfuscation Algorithm from
 * http://www.openebook.org/doc_library/informationaldocs/FontManglingSpec.html
 * 
 */
public void serialize(OutputStream out) throws IOException {
	try {
		byte[] buffer = new byte[4096];
		int len;
		InputStream in = source.getInputStream();
		boolean first = true;
		while ((len = in.read(buffer)) > 0) {
			if( first && mask != null ) {
				first = false;
				for( int i = 0 ; i < 1040 ; i++ ) {
					buffer[i] = (byte)(buffer[i] ^ mask[i%mask.length]);
				}
			}
			out.write(buffer, 0, len);
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
	out.close();
}
</pre>
<h2>Identifying the Obfuscation Key</h2>
<p>Ok, so we need an obfuscation key. The recommendation tells us to use the EPUB's 'unique-identifier'. Every EPUB has a <code>unique-identifier</code>, and it's <code>unique-identifier</code> is referenced in the root element of the OPF file. Look through the metadata in the OPF and you'll find an identifier with an <code>id</code> that matches the <code>unique-identifier</code>, that's the EPUB's unique identifier and is the basis for our obfuscation key.
</p>
<p>
Of course as EPUBGen is creating the epub, and not parsing it, we need to create the identifier. This is done in the <code>addUID</code> method.
</p><p>
Both the <code>addUID</code> method and the <code>makeXORMask</code> method (below) are found in Publication.java.</p>
<pre>
	/*
	 * Every EPUB needs a unique identifier, this could be an ISBN or other identifier.
	 * In this case we're generating a random identifier.
	 * 
	 * For the purposes of font obfuscation, this does not need to be random, just unique (like an ISBN)
	 */
	public String addUID() {
		String uid = this.generateRandomIdentifier();		
		return uid;
	}
</pre>
<p>The value of the <code>unique-identifier</code> needs to have the whitespace removed. The resulting string will be passed through the SHA-1 hash algorithm to give us our key or mask for the font files.
</p><p>
Note: I'm only showing the portion of <code>makeXORMask</code> that relate to the IDPF approach. The project can also create a mask for the deprecated approach.
</p>
<pre>
private byte[] makeXORMask() {
	if(opfUID == null)
		return null;
	ByteArrayOutputStream mask = new ByteArrayOutputStream();
	if (useIDPFFontMangling){
		/*
		 * This starts with the "unique-identifier", strips the whitespace, and applies SHA1 hash
		 * giving a 20 byte key that we can apply to the font file.
		 * 
		 * See: http://www.openebook.org/doc_library/informationaldocs/FontManglingSpec.html
		 */
		try {
			Security.addProvider(new com.sun.crypto.provider.SunJCE());
			MessageDigest sha = MessageDigest.getInstance("SHA-1");
			String temp = strip(opfUID);
			sha.update(temp.getBytes(), 0, temp.length());
			mask.write(sha.digest());
		} catch (NoSuchAlgorithmException e) {
			System.err.println("No such Algorithm (really, did I misspell SHA-1?");
			System.err.println(e.toString());
			return null;
		} catch (IOException e) {
			System.err.println("IO Exception. check out mask.write...");
			System.err.println(e.toString());
			return null;
		}
		if (mask.size() != 20) {
			System.err.println("makeXORMask should give 20 byte mask, but isn't");
			return null;
		}
	}
	else {
		/*
		 * This is where the deprecated approach is implemented.
		 * Removed for clarity.
		 */
	}
	return mask.toByteArray();
}
</pre>
<h2>Specifying Obfuscated Resources</h2>
<p>The result is put together by the <code>serialize</code> method in Publication.java. You'll see the call to <code>makeXORMask</code> passing that mask to the IDPFFontResource, the call to the resource serialization (<code>res.serialize</code>), and then generating the <code>encryption.xml</code> file.</p>
<pre>
public void serialize(ContainerWriter container) throws IOException {
	Enumeration names = resourcesByName.keys();
	byte[] mask = makeXORMask();
	boolean needEnc = false;
	while (names.hasMoreElements()) {
		String name = (String) names.nextElement();
		Resource res = (Resource) resourcesByName.get(name);
		if (mask != null && res instanceof AdobeFontResource) {
			((AdobeFontResource) res).setXORMask(mask);
			needEnc = true;
		}
		if (mask != null && res instanceof IDPFFontResource) {
			((IDPFFontResource) res).setXORMask(mask);
			needEnc = true;
		}
		OutputStream out = container.getOutputStream(name, res.canCompress());
		res.serialize(out);
	}
	if (needEnc) {
		XMLSerializer ser = new XMLSerializer(container.getOutputStream("META-INF/encryption.xml"));
		ser.startDocument("1.0", "UTF-8");
		ser.startElement(ocfns, "encryption", null, true);
		names = resourcesByName.keys();
		while (names.hasMoreElements()) {
			String name = (String) names.nextElement();
			Resource res = (Resource) resourcesByName.get(name);
			if ((res instanceof FontResource) && (useIDPFFontMangling)) {
				SMapImpl attrs = new SMapImpl();
				ser.startElement(encns,"EncryptedData", null, true);
				attrs.put(null, "Algorithm", "http://www.idpf.org/2008/embedding");
				ser.startElement(encns, "EncryptionMethod", attrs, false);
				ser.endElement(encns, "EncryptionMethod");
				ser.startElement(encns, "CipherData", null, false);
				attrs = new SMapImpl();
				attrs.put(null, "URI", name);
				ser.startElement(encns, "CipherReference", attrs, false);
				ser.endElement(encns, "CipherReference");
				ser.endElement(encns, "CipherData");
				ser.endElement(encns, "EncryptedData");
			}
			else if (res instanceof FontResource) {
				/*
				 * This is where the deprecated approach is implemented.
				 * Removed for clarity.
				 */
			}
		}
		ser.endElement(ocfns, "encryption");
		ser.endDocument();
	}
	XMLSerializer ser = new XMLSerializer(container.getOutputStream("META-INF/container.xml"));
	/*
	 * Code removed for brevity.
	 * Can be viewed in the project, it just fills out the container.xml file.
	 */	
}
</pre>

<p> And with that, you should have the IDPF recommended font obfuscation approach. The font still needs to be listed in the manifest, and can be referenced by the CSS as it normally would.</p>]]>
    </content>
</entry>
<entry>
    <title>InDesign 6.0.2 and EPUB export</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2009/05/indesign_602_and_epub_export.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=10469" title="InDesign 6.0.2 and EPUB export" />
    <id>tag:blogs.adobe.com,2009:/digitaleditions//153.10469</id>
    
    <published>2009-05-08T22:53:30Z</published>
    <updated>2009-05-08T22:53:46Z</updated>
    
    <summary>There&apos;s a new update to InDesign CS4. Version 6.0.2. The update fixes lots of other stuff, so you may want to look at the release notes to see what&apos;s fixed that is not related to the EPUB export, I&apos;m only...</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[There's a new <a href="http://www.adobe.com/support/downloads/new.jsp">update</a> to InDesign CS4. Version 6.0.2. The update fixes lots of other stuff, so you may want to look at the <a href="http://www.adobe.com/support/documentation/en/indesign_incopy/releasenotes.html">release notes</a> to see what's fixed that is not related to the EPUB export, I'm only going to talk about the EPUB plug-in.

]]>
        <![CDATA[<h3>Issues fixed by the update are:</h3>

<blockquote>Content is dropped during export to Digital Editions when two or more documents are included in a book. [2262891]*</blockquote>

This was an issue where, if you have more than one document in a book file, and you export an EPUB from the book file, the first document is the only one that's guaranteed to have any content.

<blockquote>Export for Digital Editions will put underscores, rather than spaces, in the Contents if TOCStyle is not used. [2296603]*
</blockquote>

This is the case where you use the InDesign Book feature to export a set of documents, and the file names end up in the "Contents" panel in ADE. The problem was that if you had spaces in the filenames, the export filter would replace them with underscores. You'll now get spaces rather than having them replaced by underscores.

<h3>The issues that were fixed in previous updates, in case you missed them:</h3>

<blockquote>Bold (and in some cases italic) won’t work when exporting an InDesign document to Digital Editions. [2296606]</blockquote>

It was actually that bold wasn't working when it wasn't in the paragraph style, and italic worked only if you did not embed the font. Both were fixed in the 6.0.1 update, but are also fixed in the 6.0.2 update.

<blockquote>
Exporting to Digital Editions fails with an error in the Italian and French version. [1923992]
</blockquote>

The dialog wasn't working, which had prevented the plug-in from being used.

So with this update you should be getting much better output from InDesign CS4.
]]>
    </content>
</entry>
<entry>
    <title>RTF, Word, and FB2 file conversion</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2009/04/rtf_word_and_fb2_file_conversi.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=10296" title="RTF, Word, and FB2 file conversion" />
    <id>tag:blogs.adobe.com,2009:/digitaleditions//153.10296</id>
    
    <published>2009-04-28T19:00:38Z</published>
    <updated>2009-04-28T20:30:59Z</updated>
    
    <summary>EPUBGen is an open source project supporting conversion of FB2, RTF, and Word to ePub</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>EPUBGen is a project that Peter Sorotokin has started, it's a conversion utility for rtf files, word files, and FictionBook files. The output in each case is, of course, epub.</p>
<p>The project is open source, and available for <a href="http://code.google.com/p/epub-tools/">download</a>.</p>
<p>Note that there is also a .jar file for rtf2epub and it should work, but the main intent of this project is to provide source code and examples of the way things could be done. In other words, there's plenty of room for developers to improve and enhance the conversion.</p>
<p>The project includes code to convert a couple different formats to ePub, including generating all the required files and creating the package. The project also shows how to mangle embedded fonts, how to sub-set those font (thus reducing the size of the ePub).</p>]]>
        <![CDATA[<h3>Location</h3>
<p>The code is hosted with the epub-tools site on code.google.com. Thanks to <a href="http://www.threepress.org/about/">Liza Daly</a> for organizing a location for ePub tools.</p>
<h3>Building</h3>
<p>I created an ant file for building the rtf2epub converter, and it's included. I expect there's a need for build scripts for the others, but it's really straight forward. FB2 conversion does have some additional dependencies, I'll cover that in more detail in an upcoming entry to this blog.</p>
<p>Once you have the project building it should be straightforward. 
You'll find the 'build.xml' in the com.adobe.conv.rtf2epub folder. Of course you'll need Ant installed to use the Ant script.</p>
<pre>ant</pre>
Should give you results similar to the following:
<pre>
Buildfile: build.xml

createDistributionDir:

buildSrcZip:

removeClasses:

compile:
    [javac] Compiling 9 source files to .../com.adobe.conv.rtf2epub/bin
    [javac] Compiling 47 source files to .../com.adobe.conv.rtf2epub/bin
    [javac] Compiling 78 source files to .../com.adobe.conv.rtf2epub/bin
    [javac] Compiling 2 source files to .../com.adobe.conv.rtf2epub/bin

buildJar:
      [jar] Building jar: .../com.adobe.conv.rtf2epub/dist/rtf2epub-0.1.0.jar

buildBinZip:
   [delete] Deleting:  .../com.adobe.conv.rtf2epub/dist/rtf2epub-0.1.0.zip
      [zip] Building zip: .../com.adobe.conv.rtf2epub/dist/rtf2epub-0.1.0.zip

buildrtf2epub:

BUILD SUCCESSFUL
Total time: 3 seconds
</pre>

<h3>Running</h3>
<p>After building, or if you download the pre-built jar file, you can run the converter at the command line. Arguments are the path to the file to convert and the path to the epub file.</p>
<pre>java -jar rtf2epub-0.1.0.jar In.rtf Out.epub</pre>
<h3>Some items worth noting</h3>
<p>Of course Main.java is the entry for each of the converters, but much of the interesting code is in the Publication.java file.</p>
<p>FB2 conversion requires some additional dependencies, which I'll note in an upcoming entry.</p>]]>
    </content>
</entry>
<entry>
    <title>Working with the cover</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2009/03/working_with_the_cover.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=9924" title="Working with the cover" />
    <id>tag:blogs.adobe.com,2009:/digitaleditions//153.9924</id>
    
    <published>2009-03-27T21:08:21Z</published>
    <updated>2009-03-30T20:49:17Z</updated>
    
    <summary>The covers on your books make a first impression. So when you&apos;re creating a cover for a book you&apos;re likely to put in some extra effort to make sure it looks good. When you&apos;re working with EPUBs and Adobe Digital...</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        The covers on your books make a first impression. So when you&apos;re creating a cover for a book you&apos;re likely to put in some extra effort to make sure it looks good. When you&apos;re working with EPUBs and Adobe Digital Editions, there are some simple things that you can do that have a big impact on the look of the covers.
        <![CDATA[In general, I'm assuming your cover pages are going to be a separate XHTML file from the rest of the content, and that the XHTML file will have, basically, a single image to represent the cover.

<h3>The right aspect ratio for the thumbnail.</h3>

Our thumbnail size is 90x130. For a cover page to fit well in that, and also look good at larger sizes, you'll want to create  is a single image with that aspect ratio. (567x819 should work well.) In the CSS you'll want to set the max-width to 100%, all margins and padding set to zero.

<pre>img { max-width: 100%; 
	padding: 0;
	margin: 0;
}</pre>

<h3>Keeping the cover always centered.</h3>

You've probably noticed that in Adobe Digital Editions, when you shrink the text enough, the reading view goes into a two column or three column mode. That's great for the text, but not so good for the image, you'd rather keep it centered. A one column view is usually best.

This is one case where I'd probably just include the style information in the XHTML file for the cover. You'll want to style the 'body' tag with the <code>oeb-column-number</code> property and a value of 1, like this:

<code>&lt;body style="oeb-column-number: 1;"></code>

The inline style will override the default style, and you'll have a single column for everything in that particular <code>body</code> element.

<h3>Advanced techniques could be achieved via SVG.</h3>

So, now we've got a cover image that fills the thumbnail without any white bands. It also looks good in the reading view. That's as far as we're going in this blog post, but I thought I should mention that if you want more sophisticated cover pages, perhaps changing the background color in the reading view, or having an image that bleeds well off of the view at most aspect ratios... well, that's certainly possible, but requires using inline SVG to control the view, and that's beyond the scope of today's post. :)]]>
    </content>
</entry>
<entry>
    <title>Options for creating the package file on a Mac</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2009/02/options_for_creating_the_packa.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=9365" title="Options for creating the package file on a Mac" />
    <id>tag:blogs.adobe.com,2009:/digitaleditions//153.9365</id>
    
    <published>2009-02-20T05:56:07Z</published>
    <updated>2009-02-20T06:06:28Z</updated>
    
    <summary>So, when I need to create an epub by hand, I&apos;ll put everything I need in a folder, and then use the Terminal &amp; zip it up by hand. Like so: Navigate to the folder. zip -Xr9D book.epub mimetype *...</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[So, when I need to create an epub by hand, I'll put everything I need in a folder, and then use the Terminal & zip it up by hand. 

Like so:

<ol>
<li>Navigate to the folder.</li>
<li><pre>zip -Xr9D book.epub mimetype *</pre></li>
</ol>

Ok, so I realize not every one is comfortable working at the command line.

That's where <a href="http://blogs.adobe.com/digitaleditions//MakePackage.scpt" title="MakePackage.scpt">MakePackage.scpt</a> comes in. It's an Applescript script that will take a folder and turn it into an EPUB. It expects the folder to be the same layout as the EPUB should be. So, just as if you had renamed a file to .zip and then extracted the contents.

Anyway, it's here if you find it useful, if not, there's always the command line.]]>
        
    </content>
</entry>
<entry>
    <title>InDesign Secrets</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2009/02/indesign_secrets.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=9177" title="InDesign Secrets" />
    <id>tag:blogs.adobe.com,2009:/digitaleditions//153.9177</id>
    
    <published>2009-02-11T18:17:07Z</published>
    <updated>2009-02-11T18:17:23Z</updated>
    
    <summary>Seems InDesignSecrets.com is starting to cover EPUB and InDesign. Awesome. Seems there&apos;s a real need for EPUB information for designers, publishers, and authors. Maybe this will help fill that need....</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[Seems <a href="http://indesignsecrets.com/">InDesignSecrets.com</a> is starting to cover <a href="http://indesignsecrets.com/tool-of-change-notes-the-business-of-ebooks.php">EPUB and InDesign</a>. 

Awesome. Seems there's a real need for EPUB information for designers, publishers, and authors. Maybe this will help fill that need.]]>
        
    </content>
</entry>
<entry>
    <title>Digital Editions 1.7 Released!</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2009/02/digital_editions_17_released.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=9091" title="Digital Editions 1.7 Released!" />
    <id>tag:blogs.adobe.com,2009:/digitaleditions//153.9091</id>
    
    <published>2009-02-05T21:42:23Z</published>
    <updated>2009-02-05T21:42:39Z</updated>
    
    <summary>We&apos;ve released Digital Editions 1.7: Adobe has updated its popular Digital Editions software, a lightweight, rich Internet application for reading, acquiring, and organizing digital books and other publications. Digital Editions 1.7 greatly expands language support....</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="General" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[We've released Digital Editions 1.7:
<blockquote>Adobe has updated its popular Digital Editions software, a lightweight, rich Internet application for reading, acquiring, and organizing digital books and other publications. Digital Editions 1.7 greatly expands language support.</blockquote>]]>
        <![CDATA[<blockquote>In addition to the current support for English, German and French, Digital Editions 1.7 supports Japanese, Chinese (Traditional and Simplified), Korean, Spanish, Italian, Dutch and Portuguese. For publishers seeking to include special roman characters in their publications, we highly recommend embedding fonts in your digital publications. Version 1.7 also provides for a <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=digitaleditions">standalone installer</a> option which can be used to install Digital Editions in networked environments including corporate, educational and other locations that require administrative installations of the software. The expanded language and installer support in Digital Editions 1.7 enables <a href="http://www.adobe.com/products/contentserver/">Adobe Content Server 4</a> customers to protect and fulfill both PDF and EPUB files to users who want to purchase or borrow content in the above languages and also to users who use Digital Editions in networked environments.</blockquote>

I think it's worth mentioning that you may see a small change in behavior for files exported from InDesign CS3 and InDesign CS4. Digital Editions 1.7 supports justified text. If your books in InDesign have justified text you should now see them justified in Digital Editions.

For other authoring applications, supporting justified text is a matter of using the <cite>text-align</cite> property:

<pre>p {text-align:justify} </pre>

]]>
    </content>
</entry>
<entry>
    <title>ePubPreflight version 0.1.0 (was &quot;stylecheck&quot;)</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2008/11/epubpreflight_version_010_was_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=8065" title="ePubPreflight version 0.1.0 (was &quot;stylecheck&quot;)" />
    <id>tag:blogs.adobe.com,2008:/digitaleditions//153.8065</id>
    
    <published>2008-11-14T19:19:24Z</published>
    <updated>2008-11-14T19:30:13Z</updated>
    
    <summary>A prerelease version of &apos;epubpreflight&apos; has been posted.</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>There&#8217;s a new tool for checking ePub files. The tool does not do validation, that is the role of the epubcheck tool. The epubpreflight tool is intended to check the things that are not mentioned in the <span class="caps">EPUB </span>spec, but that could be issues in one environment or another.</p>

<p>ePubPreflight can be found in the <a href="http://code.google.com/p/epubcheck/downloads/list">epubcheck downloads.</a></p>

<p>If you&#8217;d like to discuss the tool, head on over to the <a href="http://groups.google.com/group/epubcheck">epubcheck discussion area</a> </p>

<p>I&#8217;ll be updating the project pages with instructions on how to use the ePubPreflight, but it&#8217;s just like using epubcheck. (Run at a command line, and use &#8216;java -jar epubpreflight-0.1.0.jar myEPub.epub&#8217;.)</p>]]>
        <![CDATA[<p>The things that epubpreflight currently gives errors for, are:<br />
  * Content files that are empty.<br />
  * Content files that are over 300KB.<br />
  * Image files that are empty.<br />
  * Image files that are over 10MB.</p>

<p>It doesn&#8217;t yet check the stylesheets.</p>

<p>I&#8217;d like to see this tool grow into something that does cover more. I&#8217;d like to see it have a configuration file that specifies what set of tests it would run and I&#8217;d like to see a set of targets (ADE, <span class="caps">PRS505, </span>conversion to other formats, etc.), but for now I&#8217;m trying to get the very minimal set of preflight checks into the tool.</p>]]>
    </content>
</entry>
<entry>
    <title>A tool to compliement epubcheck, &quot;stylecheck&quot;.</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2008/11/a_tool_to_compliement_epubchec_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=7936" title="A tool to compliement epubcheck, &quot;stylecheck&quot;." />
    <id>tag:blogs.adobe.com,2008:/digitaleditions//153.7936</id>
    
    <published>2008-11-04T18:56:53Z</published>
    <updated>2008-11-04T22:57:47Z</updated>
    
    <summary>Stylecheck is  intended to check the issues with ePub&apos;s that aren&apos;t specification issues but still prevent epubs from working well, particularly on mobile devices.</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="General" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>Recently I mentioned that I'm working on improving epubcheck, but then I was asked, "what about the items that don't relate to validation, but really should be checked anyway?"</p>

<p>The issues at hand are things like the 300k file size limit on content files, 10MB limit on images, and complexity issues with CSS.</p>

<p>The solution is a tool tentatively called "stylecheck" that would run much like the epubcheck tool, but would look for issues that are important to the reading systems, but are not necessarily issues of conformance.</p>

<p>An initial release of the tool alert the user to problems if it found:<br />
 * 300k or bigger chapter files.<br />
 * 10MB or larger images.<br />
 * CSS stylesheet with more than some number of styles (150?)</p>

<p>I could see other uses for the tool, checks to make sure that the package for a NIMAS submission has DTBook content rather than XHTML, or checks to make sure the publisher information in metadata is in the approved format. However the first step will be to create the tool and get the basic checks working.</p>

<p>Which is a work underway, and you should see something relatively soon on the epubcheck project pages.</p>

<p><br />
</p>]]>
        
    </content>
</entry>
<entry>
    <title>Taking epubcheck (epub validtation tool) forward.</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2008/11/taking_epubcheck_epub_validtat.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=7919" title="Taking epubcheck (epub validtation tool) forward." />
    <id>tag:blogs.adobe.com,2008:/digitaleditions//153.7919</id>
    
    <published>2008-11-03T19:58:12Z</published>
    <updated>2008-11-03T22:36:22Z</updated>
    
    <summary>I&apos;m going to outline improvements we&apos;re making to epubcheck, and areas where others can get involved.</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="General" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>The <a href="http://code.google.com/p/epubcheck/">epubcheck</a> is a validation tool for ePub documents. It should determine whether the ePub under inspection conforms to the rules laid out in the IDPF specifications. In many circumstances it does just that, but it's not always clear what's happening, and sometimes the tool out and out fails. Of course the community is working to bring the tool forward and make it better.</p>

<p>Here I will give an outline of current and ongoing changes that I'm planning to make. Of course I would also like to put out a call for additional contribution/involvement in the process. There's plenty of room for more people to contribute, whether it be in the form of development, testing, review, or documentation. Anyone looking to get involved should head on over to the <a href="http://groups.google.com/group/epubcheck">discussion</a> group.</p>

<p>So here's the current changes I've added, and things I'll be working on:</p>]]>
        <![CDATA[<p>If you look in the download section of the <a href="http://code.google.com/p/epubcheck/">project page</a> you'll find that there's a 1.0.2 version. Changes to the 1.0.2 version include:<br />
* Clear labeling of warnings and errors.<br />
* An external DTD now causes the tool to issue a warning (was a fatal error.)<br />
* Version number is always reported.</p>

<p>Upcoming changes:<br />
* User documentation, including an outline of what the tool looks for/doesn't look for.<br />
* Release notes. <br />
* Additional bug fixes.<br />
* Expand the "Report" from 2 categories to 5 (Fatal, Error, Warning, Informational, Debug)</p>

<p>Areas for discussion and opportunities for contribution:<br />
* A test framework for running unit tests and smoke tests.<br />
* Simple test files for smoke tests.<br />
* Issue reports for current problems.</p>

<p>Of course this is all just from my perspective, to really track what's going on and to participate in the discussion, head on over to the <a href="http://groups.google.com/group/epubcheck">discussion</a> pages.<br />
</p>]]>
    </content>
</entry>
<entry>
    <title>The Mars Project &quot;PDFXML Inspector&quot; works great as an ePub editing tool.</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2008/10/a_great_tool_for_making_small.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=7751" title="The Mars Project &quot;PDFXML Inspector&quot; works great as an ePub editing tool." />
    <id>tag:blogs.adobe.com,2008:/digitaleditions//153.7751</id>
    
    <published>2008-10-20T20:16:00Z</published>
    <updated>2008-10-20T20:17:08Z</updated>
    
    <summary>The Mars Project on Adobe Labs has a PDFXML Inspector, that works great with XML documents all packaged up, including ePub documents. </summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>If you've just created an ePub and now you want to make a small change, the normal approach is to rename the file with a "zip" extension, extract the contents, make the change, and then repackage the contents. </p>

<p>Fortunately, there's a better way, but I'm not sure if it's been mentioned.<br />
It's from the Mars Project over on <a href="http://labs.adobe.com/technologies/mars/">Adobe Labs</a>, and it's called the "PDFXML Inspector".</p>]]>
        <![CDATA[<p>The Mars Project is an XML-friendly representation for PDF documents, and while the vocabularies used by Mars and by ePub documents are very different, the containers are very similar, and so we can share some of the same tools. In this case it's a matter of our "borrowing" the PDFXML Inspector. Thanks to the Mars team for making it work with ePub documents.</p>

<p>The PDFXML Inspector can be found on the downloads page for the Mars Project, and it requires the <a href="http://get.adobe.com/air/">latest version of Adobe AIR</a>. </p>

<p>Once installed you can drag an epub into the app, and you'll have a view that looks like this:<br />
<img alt="pdfxmlinsp.png" src="http://blogs.adobe.com/digitaleditions/pdfxmlinsp.png" width="95%" /></p>

<p>That's the contents of the package on the left, and the source of the selected file on the right.</p>

<p>So here we could, for instance change the title, open the OPF file and fix up the metadata, etc.</p>

<p>You certainly could also use the PDFXML Inspector to, say, add chapters to your book, but you'd have to understand the changes you'd need to make to the OPF file (manifest entry and spine entry) and to the NCX file (to add navPoints), as the tool was really made for small changes, not big ones.</p>]]>
    </content>
</entry>
<entry>
    <title>Export ePub from InDesign CS4</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2008/10/export_epub_from_indesign_cs4.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=7622" title="Export ePub from InDesign CS4" />
    <id>tag:blogs.adobe.com,2008:/digitaleditions//153.7622</id>
    
    <published>2008-10-08T18:23:49Z</published>
    <updated>2008-10-09T01:02:04Z</updated>
    
    <summary>A new version of InDesign means updates to the Export for Digital Editions plug-in</summary>
    <author>
        <name>Paul Norton</name>
        
    </author>
            <category term="Authoring" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>With the release of Adobe InDesign CS4 you'll find that there's a couple of interesting new features in the Export for Digital Editions plug-in. The most noticeable are the addition of DTBook support and support for "Local Formatting". There's also some subtler changes, like floating anchored images and additional semantic information in the XHTML files. </p>

<p>So we'll go through the major new features and what each one does:</p>]]>
        <![CDATA[<p>1) DTBook DTD<br />
The OPS spec, one of three at the heart of the ePub format, has two preferred vocabularies for textual content XHTML and DTBook. XHTML is an XML compatible vocabulary for HTML files, but what is DTBook. </p>

<p>DTBook is a vocabulary from the <a href="http://www.daisy.org">Daisy Consortium</a>. DTBook is a format intended for ebooks, and helps in making content available for people with print disabilities. The DTBook format has taken much of it's markup from XHTML, but the DTBook format is enhanced with additional structure that better defines the parts of a book, chapter, and sections. (An h1 element in HTML identifies a title, but a 'level1' element in DTBook completely wraps the chapter or section so that there's no confusion what does, and does not belong in the chapter.)</p>

<p>For K-12 textbooks, DTBook content in an ePub should have all the elements required for a NIMAS submission. It also means that we support "Daisy XML".</p>

<p>2) Local Formatting support<br />
With InDesign CS3, the ePub export plug-in interpreted Paragraph and Character styles when generating the CSS. With InDesign CS4 we've added the option for generating CSS from whatever formatting is applied to the text, whether through styles or through "local" or direct formatting.</p>

<p>Now you can apply bold to text and it will indeed be bold. </p>

<p>3) Floating anchored images<br />
If you anchor an image to the left or right in the text flow, it will retain that positioning in the ePub file, and the text will flow around the image.</p>

<p>Images anchored in the document should look more like you intend them to when you export.</p>

<p>4) Additional Semantic information<br />
When using an InDesign TOCStyle (and only when using the TOCStyle) we now convert the levels of TOC to heading levels. (So, a second level item in the TOC becomes an H2 heading.)</p>

<p>You actually won't see much difference, but the XHTML files may be easier to work with if you're post-processing them.</p>

<p>Well, that pretty much covers the new stuff. </p>]]>
    </content>
</entry>
<entry>
    <title>Digital Editions 1.6 Released!</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2008/09/digital_editions_16_released.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=7382" title="Digital Editions 1.6 Released!" />
    <id>tag:blogs.adobe.com,2008:/digitaleditions//153.7382</id>
    
    <published>2008-09-16T00:18:17Z</published>
    <updated>2008-09-16T00:19:20Z</updated>
    
    <summary>Adobe is pleased to announce that we today pushed live the newest version of Digital Editions, 1.6. You can get it here: http://www.adobe.com/products/digitaleditions/ Or you will be automatically upgraded the next time you launch Digital Editions. This version of DE...</summary>
    <author>
        <name>Ric Wright</name>
        
    </author>
            <category term="General" />
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>Adobe is pleased to announce that we today pushed live the newest version of Digital Editions, 1.6.  You can get it here: </p>

<p>http://www.adobe.com/products/digitaleditions/</p>

<p>Or you will be automatically upgraded the next time you launch Digital Editions.</p>

<p>This version of DE does not appear much different on the surface.  The real difference in this version is under the covers. Digital Editions 1.6 supports fulfillment from the new Adobe Content Server 4.  You can read about Content Server here:</p>

<p> http://www.adobe.com/products/contentserver/</p>

<p>But what does fulfillment from Content Server mean to the end user, you might ask?  The answer is that it provides ebook vendors with a modern, reliable system for protecting publishers books. This translates into more content from more publishers.  Both in PDF and now in EPUB.  Up to now, although publishers have been strongly voicing their support for EPUB, there hasn’t been a solution that would allow them to protect their books.  The release of DE 1.6 and Content Server provides that solution.  We are currently hard at work helping the publishers and ebook sellers to get their content ready for stores and libraries. </p>

<p>In addition, the new servers are much more reliable and bug-free than the old systems.  This will mean more hassle-free downloads and less support issues.  This won’t happen immediately as not all the ebook distributors will switch over right away.  But it will steadily improve.</p>

<p>Now that the solution is ready it means there will be more content in more formats and more device support as well, such as  the Sony Reader.  The Digital Publishing team is working hard on supporting additional devices and will release them as soon as possible.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Sony 505A Firmware Released!</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/digitaleditions/2008/07/sony_505a_firmware_released_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=153/entry_id=6740" title="Sony 505A Firmware Released!" />
    <id>tag:blogs.adobe.com,2008:/digitaleditions//153.6740</id>
    
    <published>2008-07-28T15:24:47Z</published>
    <updated>2008-07-28T23:25:01Z</updated>
    
    <summary>Adobe is pleased to announce, in conjunction with Sony, that Adobe Digital Editions now supports the Sony Reader 505. On July 24th, Sony posted the firmware updater to their website. Now people owning the Sony 505 can upgrade their Sony...</summary>
    <author>
        <name>Ric Wright</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/digitaleditions/">
        <![CDATA[<p>Adobe is pleased to announce, in conjunction with Sony, that Adobe Digital<br />
Editions now supports the Sony Reader 505.  On July 24th, Sony posted<br />
the firmware updater to their website.   Now people owning the Sony 505<br />
can upgrade their Sony 505 and use it with Digital Editions.</p>

<p>The updater is available here:</p>

<p><a href="http://esupport.sony.com/US/perl/swu-list.pl?mdl=PRS505">http://esupport.sony.com/US/perl/swu-list.pl?mdl=PRS505</a></p>

<p>Be sure to get the full update.  You need to upgrade your Sony EBook<br />
Library (EBL) FIRST, then should automatically download and run the<br />
updater for your 505.  Doing the steps this way ensures that you have<br />
the right drivers for Digital Editions and the Sony Reader to<br />
communicates with.  Once you have done this, Digital Editions will<br />
automatically recognize the Sony Reader and it will appear as a new<br />
bookshelf (or up to 3 if you have smart cards inserted) in your library.</p>

<p>You will need to authorize your Sony Reader in order to use it with<br />
protected books that you have bought or borrowed online.  Note that this<br />
also means that you will need to authorize Digital Editions if you have<br />
not already done so.  Digital Editions will walk you through these steps<br />
with a wizard.</p>

<p>Once you have authorized your Reader you can drag and drop books back<br />
and forth between your PC and your Reader.  You can even read books off<br />
of your friend's Reader (though you cannot transfer books from his<br />
Reader to your PC or vice versa).</p>

<p>The full text of the Sony press release is here:</p>

<p><a href="http://news.sel.sony.com/en/press_room/consumer/computer_peripheral/e_bo">http://news.sel.sony.com/en/press_room/consumer/computer_peripheral/e_bo<br />
ok/release/36245.html<br />
</a><br />
The new Sony Reader supports display of PDF in both normal and "reflowed" modes.  In the reflowed modes, the reader takes the original content and reflows it at a larger font size.  The result is surprisingly good.  Most books such as novels reflow almost perfectly (though the odd word will be split or two words run together).  But you will find that the more complex the content, the less satisfactory the result.</p>

<p>EPUB is also supported by the Sony Reader and there is lots of EPUB content appearing, both public domain like feedbooks.com and elsewhere.  Most of the major publishers have also promised to support EPUB and there is a lot of content in the pipeline.</p>

<p>This is an exciting time and we are looking forward to being part of it.<br />
</p>]]>
        
    </content>
</entry>

</feed> 

