Decrypted plugin sample
Each page is fetched only as an AES-GCM encrypted .encfile. definePlugin() decrypts it before the image is rendered.
Source code
import * as ComicViewer from "@publira/comic-viewer";
const encryptedJpegPlugin = ComicViewer.definePlugin({
name: "encrypted-jpeg",
customFetch: ({ signal, url }) =>
fetch(url, { signal }).then((response) => response.arrayBuffer()),
afterFetch: ({ buffer }) => decryptPage(buffer),
});
export const Reader = ({ pages }) => (
<ComicViewer.Root pages={pages} plugins={[encryptedJpegPlugin]}>
<ComicViewer.Viewport />
<ComicViewer.Toolbar />
<ComicViewer.PageNavigation />
</ComicViewer.Root>
);