Your comments

If you are using the browser viewer then JavaScript can detect the browser window size with:
var w = window.innerWidth, h = window.innerHeight;
I use this on a site I'm coding. You can even bind it to fire whenever the size is adjusted, like when the screen goes from potrait to landscape with jQuery:
$(window).resize(function() { $("#displaypage").width(window.innerWidth);
});
Tom, I'm running Zen now. Thanks for the tip!
Stephen Hill, you can use the comic to kindle convertor on Windows or OSX to to the conversion then email the books to your Kindle address. The convertor is Python based. Ubooquity is Java so including the code would be a little tricky.

http://www.mobileread.com/forums/showthread.php?t=207461
I've been reading through this forum and people really like how simple and easy to use the comic reader is currently.

The html generator places the page image in to:

<div id="pageContent">
	<img id="displayedpage" src="/comicreader/80160?page=3&amp;width=1200">
</div>
using:
(JavaScript):
document.getElementById('pageContent').innerHTML="<img id=displayedpage src=\"" + readerSubUrl + documentId + "?page=" + currentPage + "&width=" + targetWidth + "\">";

(jQuery):
var page_url = readerSubUrl + documentId + '?page=' + currentPage + '&width=' + targetWidth;
$("#pageContent").html('<img id="displayedpage" src="'+page_url+'">');
#displayedpage is replaced every time a page is turned. If you appended the image tag to #pageContent and gave it a data-page attribute then we could make use of the browsers' cache to speed up displaying previously loaded pages as well as create a page-dragging effect like on Android OS and also a thumbnail gallery for jumping to pages.

<div id="pageContent">
	<img src="/comicreader/80160?page=0&width=1200" data-page="0">
	<img src="/comicreader/80160?page=1&width=1200" data-page="1">
	<img src="/comicreader/80160?page=2&width=1200" data-page="2">
	<img class="displayedpage" src="/comicreader/80160?page=3&amp;width=1200" data-page="3">
	<img src="/comicreader/80160?page=4&width=1200" data-page="4">
</div>

This is an example of how you'd append the images and check for their existence to speed up loading previous pages. Of course, the pages would have to be changed from no display to simply being displayed off page when you add the swiping functionality.
<style type="text/css">
	/* Make sure that all of the images in the page content div are hidden except for the displayed page. */
	#pageContent img:not(.displayedpage) { display: none; }
</style>

<script type="text/javascript">
$("document").ready( function() {
	var pageContent = $("#pageContent");
	
	function loadDocPage() {
		...
		var page_url = readerSubUrl + documentId + '?page=' + currentPage + '&width=' + targetWidth;
		
		if(pageContent.find("img[data-page='"+currentPage+"']").length > 1) {
			//The image for the requested page has already been loaded once. Show the image instead of requesting it from the server.
			
			//Remove the displayedpage class from the last page.
			pageContent.find(".displayedpage").removeClass("displayedpage");
			
			//Add the displayedpage class to the current page.
			$("img[data-page='"+currentPage+"']").addClass("displayedpage");
		}
		else {
			//The image for the requested page has not yet been loaded. Request the page from the server.
			$("#pageContent").append('<img id="displayedpage" src="'+page_url+'">');
		}
		...
	}
});
<script>
The current 1.7 version will not resize images to less than 1200 pixels wide. It does detect resolutions, but the minimum resolution it will stream a page to a client through the web interface is 1200 pixels.
For comics with over 100 issues the issues are sorted 1, 10, 100, 11, 12, 13... if sorted by filename (path).

ComicRack metadata includes the issue number. Consider adding a sort by "metadata" or sort by "issue number" sort option. This would quickly sort by the issue number using the example I wrote here (https://ideone.com/cTmciw).

You probably have a big array containing all of the issues to print before generating the html so sorting by the issue number before printing would fix this annoyance. By using the built in Java Arrays method you'd be sorting properly instead of relying on the operating systems' whacky sorting. :)

-Matthew
You're welcome, Tom. I hope this will help others with the same machine to install this great software.
Thanks for replying, Tom. Using JavaScript I could move around all of the page elements, but that would be a really big hassle -_-

Using a HTML template would, of course, be the easiest for both you and I in the future to update. That would clean up some of your JAVA by getting rid of the HTML strings and make it easier for me to manipulate.

In addition, if you used a template that would open the door for skinners, like myself, to access all of the comic and book metadata. For example, if I have a simple span where I want to print the issue name and publication date I could write: "<span>{meta_book_issue_name} ({meta_book_volume_publication_date})</span>" and in your JAVA you'd simply import the template as a string then do string replace for every variable you make available to skinners.

However, I know that your code may be intricately woven with the HTML so moving everything to a template may be way too much work for the benefit right now. and I understand if this gets shifted lower in priority.
One more reason for folder exclusion: Some NAS machines, like my Synology NAS, have #recyle directories in the root of each shared folder. Deleted items are moved to this directory to enable user friendly file recovery. However, Ubooquity treats this folder as any other and scans it for books.
Josh, I have successfully streamed pages over OPDS through Ubooquity to the Challenger Viewer Android application.

Make sure these are checked off:
  1. Log in to your web interface admin area (192.168.1.x:2202/admin).
  2. Scroll to the bottom and click 'edit' next to the advanced settings area.
  3. Put a check mark next to the Enable OPDS feed setting.
  4. Open the Challenger Viewer application.
  5. Tap the bottom right icon Add Web.
  6. Choose OpenOPDS from the list.
  7. Using the address of your server enter the url in this format: 192.168.1.x:2202/opds-comics
  8. For the Username and Password fields use the username and password used to log in to the computer that is running Ubooquity. If you are on Windows this is the user and pass you use to open Windows. If you are on a NAS this is the admin password used to open the web interface or gain root SSH access. The Password field is not the password you set when running Ubooquity for the first time.
  9. Open the library in Challenger Viewer and click the circular refresh icon.
After tapping the refresh icon Challenger will bring up the download dialog, but it's not actually downloading the whole comic. It is scraping the metadata and downloading a cover thumbnail. This may take a long time depending on the size of your collection, but is still much faster than transferring the entire books to your Android device.