diff options
-rw-r--r-- | include/mupdf/pdf/xref.h | 2 | ||||
-rw-r--r-- | platform/java/mupdf_native.c | 10 | ||||
-rw-r--r-- | platform/java/mupdf_native.h | 8 | ||||
-rw-r--r-- | platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java | 32 | ||||
-rw-r--r-- | source/pdf/pdf-page.c | 2 | ||||
-rw-r--r-- | source/pdf/pdf-xref.c | 4 | ||||
-rw-r--r-- | source/tools/murun.c | 17 |
7 files changed, 56 insertions, 19 deletions
diff --git a/include/mupdf/pdf/xref.h b/include/mupdf/pdf/xref.h index c97916f5..971e5b8f 100644 --- a/include/mupdf/pdf/xref.h +++ b/include/mupdf/pdf/xref.h @@ -27,7 +27,7 @@ void pdf_update_stream(fz_context *ctx, pdf_document *doc, pdf_obj *ref, fz_buff pdf_obj *pdf_add_object(fz_context *ctx, pdf_document *doc, pdf_obj *obj); pdf_obj *pdf_add_object_drop(fz_context *ctx, pdf_document *doc, pdf_obj *obj); -pdf_obj *pdf_add_stream(fz_context *ctx, pdf_document *doc, fz_buffer *buf, pdf_obj *obj); +pdf_obj *pdf_add_stream(fz_context *ctx, pdf_document *doc, fz_buffer *buf, pdf_obj *obj, int compressed); /* * xref and object / stream api diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index 5dec7b05..722444a2 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -6057,10 +6057,11 @@ FUN(PDFDocument_graftObject)(JNIEnv *env, jobject self, jobject jsrc, jobject jo } JNIEXPORT jobject JNICALL -FUN(PDFDocument_addStreamBuffer)(JNIEnv *env, jobject self, jobject jbuf) +FUN(PDFDocument_addStreamBuffer)(JNIEnv *env, jobject self, jobject jbuf, jobject jobj, jboolean compressed) { fz_context *ctx = get_context(env); pdf_document *pdf = from_PDFDocument(env, self); + pdf_obj *obj = from_PDFObject(env, jobj); fz_buffer *buf = from_Buffer(env, jbuf); pdf_obj *ind = NULL; @@ -6068,7 +6069,7 @@ FUN(PDFDocument_addStreamBuffer)(JNIEnv *env, jobject self, jobject jbuf) if (!jbuf) { jni_throw_arg(env, "buffer must not be null"); return NULL; } fz_try(ctx) - ind = pdf_add_stream(ctx, pdf, buf, NULL); + ind = pdf_add_stream(ctx, pdf, buf, obj, compressed); fz_catch(ctx) { jni_rethrow(env, ctx); @@ -6079,10 +6080,11 @@ FUN(PDFDocument_addStreamBuffer)(JNIEnv *env, jobject self, jobject jbuf) } JNIEXPORT jobject JNICALL -FUN(PDFDocument_addStreamString)(JNIEnv *env, jobject self, jstring jbuf) +FUN(PDFDocument_addStreamString)(JNIEnv *env, jobject self, jstring jbuf, jobject jobj, jboolean compressed) { fz_context *ctx = get_context(env); pdf_document *pdf = from_PDFDocument(env, self); + pdf_obj *obj = from_PDFObject(env, jobj); fz_buffer *buf = NULL; const char *sbuf = NULL; unsigned char *data = NULL; @@ -6104,7 +6106,7 @@ FUN(PDFDocument_addStreamString)(JNIEnv *env, jobject self, jstring jbuf) memcpy(data, sbuf, len); buf = fz_new_buffer_from_data(ctx, data, len); data = NULL; - ind = pdf_add_stream(ctx, pdf, buf, NULL); + ind = pdf_add_stream(ctx, pdf, buf, obj, compressed); } fz_always(ctx) { diff --git a/platform/java/mupdf_native.h b/platform/java/mupdf_native.h index c572b6bd..3e6c51b3 100644 --- a/platform/java/mupdf_native.h +++ b/platform/java/mupdf_native.h @@ -1471,18 +1471,18 @@ JNIEXPORT jobject JNICALL Java_com_artifex_mupdf_fitz_PDFDocument_graftObject /* * Class: com_artifex_mupdf_fitz_PDFDocument * Method: addStreamBuffer - * Signature: (Lcom/artifex/mupdf/fitz/Buffer;)Lcom/artifex/mupdf/fitz/PDFObject; + * Signature: (Lcom/artifex/mupdf/fitz/Buffer;Ljava/lang/Object;Z)Lcom/artifex/mupdf/fitz/PDFObject; */ JNIEXPORT jobject JNICALL Java_com_artifex_mupdf_fitz_PDFDocument_addStreamBuffer - (JNIEnv *, jobject, jobject); + (JNIEnv *, jobject, jobject, jobject, jboolean); /* * Class: com_artifex_mupdf_fitz_PDFDocument * Method: addStreamString - * Signature: (Ljava/lang/String;)Lcom/artifex/mupdf/fitz/PDFObject; + * Signature: (Ljava/lang/String;Ljava/lang/Object;Z)Lcom/artifex/mupdf/fitz/PDFObject; */ JNIEXPORT jobject JNICALL Java_com_artifex_mupdf_fitz_PDFDocument_addStreamString - (JNIEnv *, jobject, jstring); + (JNIEnv *, jobject, jstring, jobject, jboolean); /* * Class: com_artifex_mupdf_fitz_PDFDocument diff --git a/platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java b/platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java index 601919d7..f866cb86 100644 --- a/platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java +++ b/platform/java/src/com/artifex/mupdf/fitz/PDFDocument.java @@ -48,15 +48,39 @@ public class PDFDocument public native PDFGraftMap newPDFGraftMap(); public native PDFObject graftObject(PDFDocument src, PDFObject obj, PDFGraftMap map); - private native PDFObject addStreamBuffer(Buffer buf); - private native PDFObject addStreamString(String str); + private native PDFObject addStreamBuffer(Buffer buf, Object obj, boolean compressed); + private native PDFObject addStreamString(String str, Object obj, boolean compressed); + + public PDFObject addRawStream(Buffer buf, Object obj) { + return addStreamBuffer(buf, obj, true); + } + + public PDFObject addStream(Buffer buf, Object obj) { + return addStreamBuffer(buf, obj, false); + } + + public PDFObject addRawStream(String str, Object obj) { + return addStreamString(str, obj, true); + } + + public PDFObject addStream(String str, Object obj) { + return addStreamString(str, obj, false); + } + + public PDFObject addRawStream(Buffer buf) { + return addStreamBuffer(buf, null, true); + } public PDFObject addStream(Buffer buf) { - return addStreamBuffer(buf); + return addStreamBuffer(buf, null, false); + } + + public PDFObject addRawStream(String str) { + return addStreamString(str, null, true); } public PDFObject addStream(String str) { - return addStreamString(str); + return addStreamString(str, null, false); } private native PDFObject addPageBuffer(Rect mediabox, int rotate, PDFObject resources, Buffer contents); diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c index 3a26445c..2112040a 100644 --- a/source/pdf/pdf-page.c +++ b/source/pdf/pdf-page.c @@ -673,7 +673,7 @@ pdf_add_page(fz_context *ctx, pdf_document *doc, const fz_rect *mediabox, int ro pdf_dict_put_drop(ctx, page_obj, PDF_NAME_MediaBox, pdf_new_rect(ctx, doc, mediabox)); pdf_dict_put_drop(ctx, page_obj, PDF_NAME_Rotate, pdf_new_int(ctx, doc, rotate)); pdf_dict_put_drop(ctx, page_obj, PDF_NAME_Resources, pdf_add_object(ctx, doc, resources)); - pdf_dict_put_drop(ctx, page_obj, PDF_NAME_Contents, pdf_add_stream(ctx, doc, contents, NULL)); + pdf_dict_put_drop(ctx, page_obj, PDF_NAME_Contents, pdf_add_stream(ctx, doc, contents, NULL, 0)); } fz_catch(ctx) { diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c index df3c3254..ccbe4cf6 100644 --- a/source/pdf/pdf-xref.c +++ b/source/pdf/pdf-xref.c @@ -2624,7 +2624,7 @@ pdf_add_object_drop(fz_context *ctx, pdf_document *doc, pdf_obj *obj) } pdf_obj * -pdf_add_stream(fz_context *ctx, pdf_document *doc, fz_buffer *buf, pdf_obj *obj) +pdf_add_stream(fz_context *ctx, pdf_document *doc, fz_buffer *buf, pdf_obj *obj, int compressed) { pdf_obj *ind; if (!obj) @@ -2632,7 +2632,7 @@ pdf_add_stream(fz_context *ctx, pdf_document *doc, fz_buffer *buf, pdf_obj *obj) else ind = pdf_add_object(ctx, doc, obj); fz_try(ctx) - pdf_update_stream(ctx, doc, ind, buf, 0); + pdf_update_stream(ctx, doc, ind, buf, compressed); fz_catch(ctx) { pdf_drop_obj(ctx, ind); diff --git a/source/tools/murun.c b/source/tools/murun.c index 7d26c49c..8ba003b6 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -3055,7 +3055,7 @@ static void ffi_PDFDocument_addObject(js_State *J) ffi_pushobj(J, ind); } -static void ffi_PDFDocument_addStream(js_State *J) +static void ffi_PDFDocument_addStream_imp(js_State *J, int compressed) { fz_context *ctx = js_getcontext(J); pdf_document *pdf = js_touserdata(J, 0, "pdf_document"); @@ -3064,7 +3064,7 @@ static void ffi_PDFDocument_addStream(js_State *J) pdf_obj *ind; fz_try(ctx) - ind = pdf_add_stream(ctx, pdf, buf, obj); + ind = pdf_add_stream(ctx, pdf, buf, obj, compressed); fz_always(ctx) { fz_drop_buffer(ctx, buf); pdf_drop_obj(ctx, obj); @@ -3074,6 +3074,16 @@ static void ffi_PDFDocument_addStream(js_State *J) ffi_pushobj(J, ind); } +static void ffi_PDFDocument_addStream(js_State *J) +{ + ffi_PDFDocument_addStream_imp(J, 0); +} + +static void ffi_PDFDocument_addRawStream(js_State *J) +{ + ffi_PDFDocument_addStream_imp(J, 1); +} + static void ffi_PDFDocument_addImage(js_State *J) { fz_context *ctx = js_getcontext(J); @@ -4358,7 +4368,8 @@ int murun_main(int argc, char **argv) jsB_propfun(J, "PDFDocument.createObject", ffi_PDFDocument_createObject, 0); jsB_propfun(J, "PDFDocument.deleteObject", ffi_PDFDocument_deleteObject, 1); jsB_propfun(J, "PDFDocument.addObject", ffi_PDFDocument_addObject, 1); - jsB_propfun(J, "PDFDocument.addStream", ffi_PDFDocument_addStream, 1); + jsB_propfun(J, "PDFDocument.addStream", ffi_PDFDocument_addStream, 2); + jsB_propfun(J, "PDFDocument.addRawStream", ffi_PDFDocument_addRawStream, 2); jsB_propfun(J, "PDFDocument.addSimpleFont", ffi_PDFDocument_addSimpleFont, 1); jsB_propfun(J, "PDFDocument.addFont", ffi_PDFDocument_addFont, 1); jsB_propfun(J, "PDFDocument.addImage", ffi_PDFDocument_addImage, 1); |