Pageflip for manuscripts

Recently our website was restored from the depths of backups and refreshed a bit. One of the challenge was to modernize it: replace obsolete plugins with more recent ones.
One particular tricky problem was the presentation of manuscripts: it used to use a system based on Adobe Flash, which is not supported anymore in any modern browser.

And so the search for a replacement “page flip” solution has begun. There were a few requirements for it:
– ability to play a sound when the page flips;
– ability to flip the pages vertically (“down to top” and not “right to left”) as this is the way sanskrit manuscript should be presented;
– ability to zoom in;
– we already had all the manuscript pages as separate image files, so it would be nice if the solution supported them (instead of pdf’s only);
– ability to flip pages by dragging them via clicking on page sides in the middle (not only by clicing on the corners, which is the standard feature);

We’ve tried to integrate 4 different libraries (free and paid as well) and turn out that Pageflip 5 yields the best results. It has many configuration options (including vertical reading mode or on-page-flip event handler which allows to play our custom sound). The best thing is that the pages are just divs with background set to the image file, so it fullfills our needs on the setup matter. It also does not require uploading the content into a separate service/hosting – everything is kept on our server, without external dependencies.

One challenge with Pageflip 5, however, was to convince the library to allow zooming with upscaling. The trick was to pretend the pages are twice as big and some playing with stage size restrictions. It would be great if it was easier (in the previous, Flash-based library, there was a configuration options for “max zoom level” and that was it – no “hacking” around of the page sizes).

Still, overall, Pageflip 5 has beat the “competition” (e.g. Turn.js, Yumpu) for our criteria. We can gladly recommend it for similar applications.