summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-xref.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2015-03-08 18:31:22 +0100
committerRobin Watts <robin.watts@artifex.com>2015-03-20 17:14:07 +0000
commitcef4820268f18f03c4407d3897abfde012e92204 (patch)
tree1d51dfd1a38a66a7dc4bc2e34e5fc5796c62734b /source/pdf/pdf-xref.c
parent6c9dc1493cdf4ff11bc8f8f9fc0e26ee328fbaef (diff)
downloadmupdf-cef4820268f18f03c4407d3897abfde012e92204.tar.xz
Automatically update /Length and /Filter in pdf_update_stream.
Diffstat (limited to 'source/pdf/pdf-xref.c')
-rw-r--r--source/pdf/pdf-xref.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
index 586aab2d..64312010 100644
--- a/source/pdf/pdf-xref.c
+++ b/source/pdf/pdf-xref.c
@@ -2126,8 +2126,9 @@ pdf_update_object(fz_context *ctx, pdf_document *doc, int num, pdf_obj *newobj)
}
void
-pdf_update_stream(fz_context *ctx, pdf_document *doc, int num, fz_buffer *newbuf)
+pdf_update_stream(fz_context *ctx, pdf_document *doc, pdf_obj *ref, fz_buffer *newbuf, int compressed)
{
+ int num = pdf_to_num(ctx, ref);
pdf_xref_entry *x;
if (num <= 0 || num >= pdf_xref_len(ctx, doc))
@@ -2140,6 +2141,13 @@ pdf_update_stream(fz_context *ctx, pdf_document *doc, int num, fz_buffer *newbuf
fz_drop_buffer(ctx, x->stm_buf);
x->stm_buf = fz_keep_buffer(ctx, newbuf);
+
+ pdf_dict_puts_drop(ctx, ref, "Length", pdf_new_int(ctx, doc, newbuf->len));
+ if (!compressed)
+ {
+ pdf_dict_dels(ctx, ref, "Filter");
+ pdf_dict_dels(ctx, ref, "DecodeParms");
+ }
}
int