diff --git a/Makefile b/Makefile index 1af43d4f0..b3912e72d 100644 --- a/Makefile +++ b/Makefile @@ -8,8 +8,8 @@ DJVUDIR=djvulibre KPVCRLIBDIR=kpvcrlib CRENGINEDIR=$(KPVCRLIBDIR)/crengine -FREETYPEDIR=$(MUPDFDIR)/thirdparty/freetype-2.4.10 -JPEGDIR=$(MUPDFDIR)/thirdparty/jpeg-9 +FREETYPEDIR=$(MUPDFDIR)/thirdparty/freetype +JPEGDIR=$(MUPDFDIR)/thirdparty/jpeg LFSDIR=luafilesystem POPENNSDIR=popen-noshell @@ -96,6 +96,7 @@ K2PDFOPT_CFLAGS=-I$(K2PDFOPTLIBDIR)/willuslib -I$(K2PDFOPTLIBDIR)/k2pdfoptlib -I MUPDFLIBS := $(MUPDFLIBDIR)/libfitz.a DJVULIBS := $(DJVUDIR)/build/libdjvu/.libs/libdjvulibre.so \ $(LIBDIR)/libdjvulibre.so +DJVULIB := $(LIBDIR)/libdjvulibre.so.21 DJVULIBDIR := $(DJVUDIR)/build/libdjvu/.libs/ CRENGINELIBS := $(CRENGINEDIR)/crengine/libcrengine.a \ $(CRENGINEDIR)/thirdparty/chmlib/libchmlib.a \ @@ -111,7 +112,7 @@ THIRDPARTYLIBS := $(MUPDFLIBDIR)/libfreetype.a \ #$(MUPDFLIBDIR)/libjpeg.a \ #$(CRENGINEDIR)/thirdparty/libjpeg/libjpeg.a \ -LUALIB := $(LUADIR)/src/libluajit.a +LUALIB := $(LIBDIR)/libluajit-5.1.so.2 POPENNSLIB := $(POPENNSDIR)/libpopen_noshell.a @@ -136,18 +137,18 @@ kpdfview: kpdfview.o einkfb.o pdf.o blitbuffer.o drawcontext.o koptcontext.o inp ft.o \ lfs.o \ mupdfimg.o \ - $(MUPDFLIBS) \ - $(THIRDPARTYLIBS) \ - $(LUALIB) \ - djvu.o \ pic.o \ pic_jpeg.o \ + $(MUPDFLIBS) \ + $(THIRDPARTYLIBS) \ + djvu.o \ cre.o \ $(CRENGINELIBS) \ $(STATICLIBSTDCPP) \ $(LDFLAGS) \ + -Wl,-rpath=$(LIBDIR)/ \ -o $@ \ - -lm -ldl -lpthread -lk2pdfopt -ldjvulibre -ljpeg -L$(MUPDFLIBDIR) -L$(LIBDIR)\ + -lm -ldl -lpthread -lk2pdfopt -ldjvulibre -lluajit-5.1 -L$(MUPDFLIBDIR) -L$(LIBDIR)\ $(EMU_LDFLAGS) \ $(DYNAMICLIBSTDCPP) @@ -193,26 +194,19 @@ fetchthirdparty: test -d $(LUADIR) && (cd $(LUADIR); git checkout .) || echo warn: $(LUADIR) folder not found git submodule init git submodule update + cd mupdf && (git submodule init; git submodule update) ln -sf kpvcrlib/crengine/cr3gui/data data test -e data/cr3.css || ln kpvcrlib/cr3.css data/ test -d fonts || ln -sf $(TTF_FONTS_DIR) fonts + test -d history || mkdir history + test -d clipboard || mkdir clipboard # CREngine patch: disable fontconfig grep USE_FONTCONFIG $(CRENGINEDIR)/crengine/include/crsetup.h && grep -v USE_FONTCONFIG $(CRENGINEDIR)/crengine/include/crsetup.h > /tmp/new && mv /tmp/new $(CRENGINEDIR)/crengine/include/crsetup.h || echo "USE_FONTCONFIG already disabled" - test -f mupdf-thirdparty.zip || wget http://www.mupdf.com/download/mupdf-thirdparty.zip # CREngine patch: change child nodes' type face # @TODO replace this dirty hack 24.04 2012 (houqp) cd kpvcrlib/crengine/crengine/src && \ patch -N -p0 < ../../../lvrend_node_type_face.patch && \ patch -N -p3 < ../../../lvdocview-getCurrentPageLinks.patch || true - unzip mupdf-thirdparty.zip -d mupdf - # check mupdf's thirdparty libs' version, if not matched, remove the old one - # run make fetchthirdparty again to get the latest thirdparty libs. - test -d $(FREETYPEDIR) || ( echo "error: mupdf's thirdparty libs' version not match" ; \ - rm -rf mupdf-thirdparty.zip ; exit 1 ) - # dirty patch in MuPDF's thirdparty lib for CREngine - cd mupdf/thirdparty/jpeg-*/ && \ - patch -N -p0 < ../../../kpvcrlib/jpeg_compress_struct_size.patch &&\ - patch -N -p0 < ../../../kpvcrlib/jpeg_decompress_struct_size.patch # MuPDF patch: use external fonts cd mupdf && patch -N -p1 < ../mupdf.patch test -f popen-noshell/popen_noshell.c || svn co http://popen-noshell.googlecode.com/svn/trunk/ popen-noshell @@ -232,24 +226,18 @@ cleanthirdparty: test -d $(CRENGINEDIR)/crengine && ($(MAKE) -C $(CRENGINEDIR)/crengine clean) || echo warn: chmlib folder not found test -d $(KPVCRLIBDIR) && ($(MAKE) -C $(KPVCRLIBDIR) clean) || echo warn: chmlib folder not found rm -rf $(DJVUDIR)/build - rm -f $(MUPDFDIR)/fontdump.host - rm -f $(MUPDFDIR)/cmapdump.host $(MAKE) -C $(POPENNSDIR) clean $(MAKE) -C $(K2PDFOPTLIBDIR) clean -$(MUPDFDIR)/fontdump.host: - CFLAGS="$(HOSTCFLAGS)" $(MAKE) -C mupdf build="release" CC="$(HOSTCC)" $(MUPDFTARGET)/fontdump - cp -a $(MUPDFLIBDIR)/fontdump $(MUPDFDIR)/fontdump.host - $(MAKE) -C mupdf clean - -$(MUPDFDIR)/cmapdump.host: - CFLAGS="$(HOSTCFLAGS)" $(MAKE) -C mupdf build="release" CC="$(HOSTCC)" $(MUPDFTARGET)/cmapdump - cp -a $(MUPDFLIBDIR)/cmapdump $(MUPDFDIR)/cmapdump.host - $(MAKE) -C mupdf clean - -$(MUPDFLIBS) $(THIRDPARTYLIBS): $(MUPDFDIR)/cmapdump.host $(MUPDFDIR)/fontdump.host +$(MUPDFLIBS) $(THIRDPARTYLIBS): # build only thirdparty libs, libfitz and pdf utils, which will care for libmupdf.a being built - CFLAGS="$(CFLAGS) -DNOBUILTINFONT" $(MAKE) -C mupdf build="release" CC="$(CC)" CMAPDUMP=cmapdump.host FONTDUMP=fontdump.host MUPDF= MU_APPS= BUSY_APP= XPS_APPS= verbose=1 +ifdef EMULATE_READER + $(MAKE) -C mupdf XCFLAGS="$(CFLAGS) -DNOBUILTINFONT" build="release" CC="$(CC)" MUPDF= MU_APPS= BUSY_APP= XPS_APPS= verbose=1 NOX11=yes +else + # generate data headers + $(MAKE) -C mupdf generate build="release" + $(MAKE) -C mupdf XCFLAGS="$(CFLAGS) -DNOBUILTINFONT" build="release" CC="$(CC)" MUPDF= MU_APPS= BUSY_APP= XPS_APPS= verbose=1 NOX11=yes CROSSCOMPILE=yes OS=Kindle +endif $(DJVULIBS): mkdir -p $(DJVUDIR)/build @@ -269,11 +257,14 @@ $(CRENGINELIBS): $(LUALIB): ifdef EMULATE_READER - $(MAKE) -C $(LUADIR) BUILDMODE=static + $(MAKE) -C $(LUADIR) BUILDMODE=shared else # To recap: build its TARGET_CC from CROSS+CC, so we need HOSTCC in CC. Build its HOST/TARGET_CFLAGS based on CFLAGS, so we need a neutral CFLAGS without arch - $(MAKE) -C $(LUADIR) BUILDMODE=static CC="$(HOSTCC)" HOST_CC="$(HOSTCC) -m32" CFLAGS="$(BASE_CFLAGS)" HOST_CFLAGS="$(HOSTCFLAGS)" TARGET_CFLAGS="$(CFLAGS)" CROSS="$(CHOST)-" TARGET_FLAGS="-DLUAJIT_NO_LOG2 -DLUAJIT_NO_EXP2" + $(MAKE) -C $(LUADIR) BUILDMODE=shared CC="$(HOSTCC)" HOST_CC="$(HOSTCC) -m32" CFLAGS="$(BASE_CFLAGS)" HOST_CFLAGS="$(HOSTCFLAGS)" TARGET_CFLAGS="$(CFLAGS)" CROSS="$(CHOST)-" TARGET_FLAGS="-DLUAJIT_NO_LOG2 -DLUAJIT_NO_EXP2" endif + test -d $(LIBDIR) || mkdir $(LIBDIR) + cp -a $(LUADIR)/src/libluajit.so* $(LUALIB) + ln -s libluajit-5.1.so.2 $(LIBDIR)/libluajit-5.1.so $(POPENNSLIB): $(MAKE) -C $(POPENNSDIR) CC="$(CC)" AR="$(AR)" @@ -299,10 +290,11 @@ customupdate: all mkdir -p $(INSTALL_DIR)/{history,screenshots,clipboard,libs} cp -p README.md COPYING kpdfview extr kpdf.sh $(LUA_FILES) $(INSTALL_DIR) mkdir $(INSTALL_DIR)/data - cp -L libs/libdjvulibre.so.21 $(K2PDFOPTLIB) $(INSTALL_DIR)/libs + cp -L $(DJVULIB) $(LUALIB) $(K2PDFOPTLIB) $(INSTALL_DIR)/libs $(STRIP) --strip-unneeded $(INSTALL_DIR)/libs/* cp -rpL data/*.css $(INSTALL_DIR)/data cp -rpL fonts $(INSTALL_DIR) + rm $(INSTALL_DIR)/fonts/droid/DroidSansFallback.ttf cp -r git-rev resources $(INSTALL_DIR) cp -rpL frontend $(INSTALL_DIR) mkdir $(INSTALL_DIR)/fonts/host diff --git a/einkfb.c b/einkfb.c index c40863ec5..cdbc61658 100644 --- a/einkfb.c +++ b/einkfb.c @@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include #include #include #include @@ -24,6 +23,11 @@ #include "einkfb.h" +#ifdef EMULATE_READER + int emu_w = EMULATE_READER_W; + int emu_h = EMULATE_READER_H; +#endif + static int openFrameBuffer(lua_State *L) { const char *fb_device = luaL_checkstring(L, 1); FBInfo *fb = (FBInfo*) lua_newuserdata(L, sizeof(FBInfo)); @@ -114,14 +118,14 @@ static int openFrameBuffer(lua_State *L) { if(SDL_Init(SDL_INIT_VIDEO) < 0) { return luaL_error(L, "cannot initialize SDL."); } - if(!(fb->screen = SDL_SetVideoMode(EMULATE_READER_W, EMULATE_READER_H, 32, SDL_HWSURFACE))) { + if(!(fb->screen = SDL_SetVideoMode(emu_w, emu_h, 32, SDL_HWSURFACE))) { return luaL_error(L, "can't get video surface %dx%d for 32bpp.", - EMULATE_READER_W, EMULATE_READER_H); + emu_w, emu_h); } - fb->vinfo.xres = EMULATE_READER_W; - fb->vinfo.yres = EMULATE_READER_H; - fb->buf->pitch = (EMULATE_READER_W + 1) / 2; - fb->buf->data = calloc(fb->buf->pitch * EMULATE_READER_H, sizeof(char)); + fb->vinfo.xres = emu_w; + fb->vinfo.yres = emu_h; + fb->buf->pitch = (emu_w + 1) / 2; + fb->buf->data = calloc(fb->buf->pitch * emu_h, sizeof(char)); if(fb->buf->data == NULL) { return luaL_error(L, "cannot get framebuffer emu memory"); } @@ -342,7 +346,6 @@ static int einkUpdate(lua_State *L) { /* NOTICE!!! You must close and reopen framebuffer after called this method. * Otherwise, screen resolution will not be updated! */ static int einkSetOrientation(lua_State *L) { -#ifndef EMULATE_READER FBInfo *fb = (FBInfo*) luaL_checkudata(L, 1, "einkfb"); int mode = luaL_optint(L, 2, 0); @@ -367,12 +370,22 @@ static int einkSetOrientation(lua_State *L) { * +--------------+ * 0 * */ +#ifndef EMULATE_READER if (mode == 1) mode = 2; else if (mode == 2) mode = 1; ioctl(fb->fd, FBIO_EINK_SET_DISPLAY_ORIENTATION, mode); +#else + if (mode == 0 || mode == 2) { + emu_w = EMULATE_READER_W; + emu_h = EMULATE_READER_H; + } + else if (mode == 1 || mode == 3) { + emu_w = EMULATE_READER_H; + emu_h = EMULATE_READER_W; + } #endif return 0; } @@ -390,6 +403,9 @@ static int einkGetOrientation(lua_State *L) { mode = 1; else if (mode == 1) mode = 2; +#else + if (emu_w == EMULATE_READER_H || emu_h == EMULATE_READER_W) + mode = 1; #endif lua_pushinteger(L, mode); return 1; diff --git a/frontend/ui/font.lua b/frontend/ui/font.lua index b0c919114..c831fa079 100644 --- a/frontend/ui/font.lua +++ b/frontend/ui/font.lua @@ -3,7 +3,7 @@ require "settings" -- for DEBUG() Font = { fontmap = { -- default font for menu contents - cfont = "droid/DroidSans.ttf", + cfont = "droid/DroidSansFallbackFull.ttf", -- default font for title tfont = "NimbusSanL-BoldItal.cff", -- default font for footer diff --git a/kpdf.sh b/kpdf.sh index 69be73d9f..a2b09ee4c 100755 --- a/kpdf.sh +++ b/kpdf.sh @@ -21,9 +21,8 @@ fi # stop cvm killall -stop cvm -export LD_LIBRARY_PATH=`pwd`/libs # finally call reader -./reader.lua "$1" 2> /mnt/us/kindlepdfviewer/crash.log || cat /mnt/us/kindlepdfviewer/crash.log +./reader.lua "$1" 2> crash.log # unmount system fonts if grep /mnt/us/kindlepdfviewer/fonts/host /proc/mounts; then diff --git a/kpvcrlib/CMakeLists.txt b/kpvcrlib/CMakeLists.txt index d36200925..a430a42be 100644 --- a/kpvcrlib/CMakeLists.txt +++ b/kpvcrlib/CMakeLists.txt @@ -9,14 +9,14 @@ SET(CR_3RDPARTY_DIR crengine/thirdparty) SET(CR3_PNG 1) #SET(CR3_JPEG 1) -SET(FREETYPE_INCLUDE_DIRS ${MUPDF_3RDPARTY_DIR}/freetype-2.4.10/include) +SET(FREETYPE_INCLUDE_DIRS ${MUPDF_3RDPARTY_DIR}/freetype/include) #SET(FREETYPE_INCLUDE_DIRS ${CR_3RDPARTY_DIR}/freetype/include) SET(ANTIWORD_INCLUDE_DIR ${CR_3RDPARTY_DIR}/antiword) SET(CHM_INCLUDE_DIRS ${CR_3RDPARTY_DIR}/chmlib) SET(PNG_INCLUDE_DIR ${CR_3RDPARTY_DIR}/libpng) -SET(ZLIB_INCLUDE_DIR ${MUPDF_3RDPARTY_DIR}/zlib-1.2.7) +SET(ZLIB_INCLUDE_DIR ${MUPDF_3RDPARTY_DIR}/zlib) #SET(ZLIB_INCLUDE_DIR ${CR_3RDPARTY_DIR}/zlib) -SET(JPEGLIB_INCLUDE_DIR ${MUPDF_3RDPARTY_DIR}/jpeg-9) +SET(JPEGLIB_INCLUDE_DIR ${MUPDF_3RDPARTY_DIR}/jpeg) #SET(JPEGLIB_INCLUDE_DIR ${CR_3RDPARTY_DIR}/libjpeg) SET(JCONFIG_INCLUDE_DIR ${MUPDF_DIR}/scripts) diff --git a/kpvcrlib/jpeg_compress_struct_size.patch b/kpvcrlib/jpeg_compress_struct_size.patch deleted file mode 100644 index e2da6de22..000000000 --- a/kpvcrlib/jpeg_compress_struct_size.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- jcapimin.c 2012-04-04 00:02:30.000000000 +0800 -+++ jcapimin-patched.c 2012-04-04 00:02:26.000000000 +0800 -@@ -36,9 +36,9 @@ - cinfo->mem = NULL; /* so jpeg_destroy knows mem mgr not called */ - if (version != JPEG_LIB_VERSION) - ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version); -- if (structsize != SIZEOF(struct jpeg_compress_struct)) -- ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, -- (int) SIZEOF(struct jpeg_compress_struct), (int) structsize); -+ /*if (structsize != SIZEOF(struct jpeg_compress_struct))*/ -+ /*ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, */ -+ /*(int) SIZEOF(struct jpeg_compress_struct), (int) structsize);*/ - - /* For debugging purposes, we zero the whole master structure. - * But the application has already set the err pointer, and may have set diff --git a/kpvcrlib/jpeg_decompress_struct_size.patch b/kpvcrlib/jpeg_decompress_struct_size.patch deleted file mode 100644 index deaf375a1..000000000 --- a/kpvcrlib/jpeg_decompress_struct_size.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- jdapimin.c 2012-04-04 01:09:00.000000000 +0800 -+++ jdapimin-patched.c 2012-04-04 01:42:44.000000000 +0800 -@@ -36,9 +36,9 @@ - cinfo->mem = NULL; /* so jpeg_destroy knows mem mgr not called */ - if (version != JPEG_LIB_VERSION) - ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version); -- if (structsize != SIZEOF(struct jpeg_decompress_struct)) -- ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, -- (int) SIZEOF(struct jpeg_decompress_struct), (int) structsize); -+ /*if (structsize != SIZEOF(struct jpeg_decompress_struct))*/ -+ /*ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, */ -+ /*(int) SIZEOF(struct jpeg_decompress_struct), (int) structsize);*/ - - /* For debugging purposes, we zero the whole master structure. - * But the application has already set the err pointer, and may have set diff --git a/luajit-2.0 b/luajit-2.0 index 5bd133d6c..eb6f890eb 160000 --- a/luajit-2.0 +++ b/luajit-2.0 @@ -1 +1 @@ -Subproject commit 5bd133d6c89fb9ef5c501eb27d2d6221ec44d11d +Subproject commit eb6f890ebd01ee4cf4f31a66d8a946bc8dccd885 diff --git a/mupdf b/mupdf index bdb6b688a..05219d086 160000 --- a/mupdf +++ b/mupdf @@ -1 +1 @@ -Subproject commit bdb6b688a238df56b2cf47fa17a08a4dd4b7a122 +Subproject commit 05219d086a5136ee19f643cf062bd5c0d3aef5d3 diff --git a/mupdf.patch b/mupdf.patch index 348190f95..e6bf72bb1 100644 --- a/mupdf.patch +++ b/mupdf.patch @@ -1,62 +1,60 @@ diff --git a/pdf/pdf_font.c b/pdf/pdf_font.c -index 5e54e0b..38bd1d8 100644 +index 33a1a65..c2fdee3 100644 --- a/pdf/pdf_font.c +++ b/pdf/pdf_font.c -@@ -182,8 +182,13 @@ pdf_load_builtin_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fontname) +@@ -185,7 +185,12 @@ pdf_load_builtin_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fontname) if (!data) fz_throw(ctx, "cannot find builtin font: '%s'", fontname); - + +#ifndef NOBUILTINFONT - fontdesc->font = fz_new_font_from_memory(ctx, data, len, 0, 1); - /* RJW: "cannot load freetype font from memory" */ + fontdesc->font = fz_new_font_from_memory(ctx, fontname, data, len, 0, 1); +#else -+ fontdesc->font = fz_new_font_from_file(ctx, data, 0, 1); ++ fontdesc->font = fz_new_font_from_file(ctx, fontname, data, 0, 1); + free(data); +#endif - + if (!strcmp(fontname, "Symbol") || !strcmp(fontname, "ZapfDingbats")) fontdesc->flags |= PDF_FD_SYMBOLIC; -@@ -199,8 +204,13 @@ pdf_load_substitute_font(fz_context *ctx, pdf_font_desc *fontdesc, int mono, int +@@ -201,7 +206,12 @@ pdf_load_substitute_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fontnam if (!data) fz_throw(ctx, "cannot find substitute font"); - + +#ifndef NOBUILTINFONT - fontdesc->font = fz_new_font_from_memory(ctx, data, len, 0, 1); - /* RJW: "cannot load freetype font from memory" */ + fontdesc->font = fz_new_font_from_memory(ctx, fontname, data, len, 0, 1); +#else -+ fontdesc->font = fz_new_font_from_file(ctx, data, 0, 1); ++ fontdesc->font = fz_new_font_from_file(ctx, fontname, data, 0, 1); + free(data); +#endif - + fontdesc->font->ft_substitute = 1; fontdesc->font->ft_bold = bold && !ft_is_bold(fontdesc->font->ft_face); -@@ -218,7 +228,12 @@ pdf_load_substitute_cjk_font(fz_context *ctx, pdf_font_desc *fontdesc, int ros, +@@ -219,7 +229,12 @@ pdf_load_substitute_cjk_font(fz_context *ctx, pdf_font_desc *fontdesc, char *fon fz_throw(ctx, "cannot find builtin CJK font"); - + /* a glyph bbox cache is too big for droid sans fallback (51k glyphs!) */ +#ifndef NOBUILTINFONT - fontdesc->font = fz_new_font_from_memory(ctx, data, len, 0, 0); + fontdesc->font = fz_new_font_from_memory(ctx, fontname, data, len, 0, 0); +#else -+ fontdesc->font = fz_new_font_from_file(ctx, data, 0, 0); ++ fontdesc->font = fz_new_font_from_file(ctx, fontname, data, 0, 1); + free(data); +#endif - /* RJW: "cannot load builtin CJK font" */ - + fontdesc->font->ft_substitute = 1; + } diff --git a/pdf/pdf_fontfile.c b/pdf/pdf_fontfile.c -index 543ce76..a076033 100644 +index 99565da..a91380f 100644 --- a/pdf/pdf_fontfile.c +++ b/pdf/pdf_fontfile.c -@@ -1,6 +1,8 @@ - #include "fitz.h" - #include "mupdf.h" - +@@ -15,6 +15,8 @@ + Set NODROIDFONT to use the base 14 fonts as substitute fonts. + */ + +#ifndef NOBUILTINFONT + #ifdef NOCJK #define NOCJKFONT #endif -@@ -129,3 +131,112 @@ pdf_find_substitute_cjk_font(int ros, int serif, unsigned int *len) +@@ -152,3 +154,112 @@ pdf_lookup_substitute_cjk_font(int ros, int serif, unsigned int *len) return NULL; #endif } diff --git a/utils/pdfattach b/utils/pdfattach index a7ae4d76f..a4de38aa8 100755 --- a/utils/pdfattach +++ b/utils/pdfattach @@ -19,7 +19,7 @@ function escape_tex_specialchars() function usage() { - echo "Usage: $progname -o file.pdf file1.djvu [file2.mp3] ..." + echo "Usage: $progname -o file.pdf [-a author] file1.djvu [file2.mp3] ..." exit 1 } @@ -43,9 +43,13 @@ declare -a infiles=() declare -a infiles_texclean=() declare -a infilesize=() declare -i infcount=0 outfcount=0 totalsize=0 +declare author="" -while getopts ":o:" opt; do +while getopts ":o:a:" opt; do case $opt in + a) + author="$OPTARG" + ;; o) outfile=$(readlink -f "$OPTARG") ((outfcount++)) @@ -96,6 +100,9 @@ cd $workdir echo -E "\documentclass{book}" >> tmp.tex echo -E "\usepackage[margin={1mm},papersize={9cm,12cm}]{geometry}" >> tmp.tex echo -E "\usepackage{hyperref,attachfile}" >> tmp.tex +if [ ! -z "$author" ] ; then + echo -E "\AtBeginDocument{\hypersetup{pdfauthor={$author}}}" >> tmp.tex +fi echo -E "\begin{document}" >> tmp.tex echo -E "\tolerance=10000\pagestyle{empty}\fontsize{7}{13}\selectfont" >> tmp.tex