parent
b8a4109e47
commit
7cda982c3c
@ -1,58 +0,0 @@
|
||||
From 68840d4a34e1e56ea9130158e8e163fb60550db4 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <68840d4a34e1e56ea9130158e8e163fb60550db4.1542273624.git.mjg@fedoraproject.org>
|
||||
From: Tor Andersson <tor.andersson@artifex.com>
|
||||
Date: Wed, 7 Nov 2018 19:44:55 +0100
|
||||
Subject: [PATCH] Fix 699840: Use saved sig_widget pointer to sign signatures,
|
||||
not selected_annot.
|
||||
|
||||
---
|
||||
platform/gl/gl-form.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/platform/gl/gl-form.c b/platform/gl/gl-form.c
|
||||
index 94daa8e2..889554f2 100644
|
||||
--- a/platform/gl/gl-form.c
|
||||
+++ b/platform/gl/gl-form.c
|
||||
@@ -10,6 +10,10 @@
|
||||
#include "mupdf/helpers/pkcs7-check.h"
|
||||
#include "mupdf/helpers/pkcs7-openssl.h"
|
||||
|
||||
+static pdf_widget *sig_widget;
|
||||
+static char sig_status[500];
|
||||
+static int sig_result;
|
||||
+
|
||||
static char cert_filename[PATH_MAX];
|
||||
static struct input cert_password;
|
||||
|
||||
@@ -22,7 +26,7 @@ static void do_sign(void)
|
||||
fz_try(ctx)
|
||||
{
|
||||
signer = pkcs7_openssl_read_pfx(ctx, cert_filename, cert_password.text);
|
||||
- pdf_sign_signature(ctx, pdf, selected_annot, signer);
|
||||
+ pdf_sign_signature(ctx, pdf, sig_widget, signer);
|
||||
ui_show_warning_dialog("Signed document successfully.");
|
||||
}
|
||||
fz_always(ctx)
|
||||
@@ -33,7 +37,7 @@ static void do_sign(void)
|
||||
fz_catch(ctx)
|
||||
ui_show_warning_dialog("%s", fz_caught_message(ctx));
|
||||
|
||||
- if (pdf_update_page(ctx, selected_annot->page))
|
||||
+ if (pdf_update_page(ctx, sig_widget->page))
|
||||
render_page();
|
||||
}
|
||||
|
||||
@@ -84,10 +88,6 @@ static void cert_file_dialog(void)
|
||||
}
|
||||
}
|
||||
|
||||
-static pdf_widget *sig_widget;
|
||||
-static char sig_status[500];
|
||||
-static int sig_result;
|
||||
-
|
||||
static void sig_dialog(void)
|
||||
{
|
||||
const char *label = pdf_field_label(ctx, sig_widget->page->doc, sig_widget->obj);
|
||||
--
|
||||
2.19.1.1238.g4b45f61cc0
|
||||
|
@ -1,57 +0,0 @@
|
||||
From 7f5ccdee1f8a990e1cd675bd1a7ab4673e797f46 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <7f5ccdee1f8a990e1cd675bd1a7ab4673e797f46.1542275308.git.mjg@fedoraproject.org>
|
||||
From: Tor Andersson <tor.andersson@artifex.com>
|
||||
Date: Wed, 7 Nov 2018 19:46:54 +0100
|
||||
Subject: [PATCH] Write placeholder appearance streams for digital signatures.
|
||||
|
||||
A proper appearance stream is written when signing with a certificate.
|
||||
This is just to create a placeholder appearance when the original document
|
||||
did not write one.
|
||||
---
|
||||
source/pdf/pdf-appearance.c | 23 +++++++++++++++++++++++
|
||||
1 file changed, 23 insertions(+)
|
||||
|
||||
diff --git a/source/pdf/pdf-appearance.c b/source/pdf/pdf-appearance.c
|
||||
index ceadfd09..c18d5860 100644
|
||||
--- a/source/pdf/pdf-appearance.c
|
||||
+++ b/source/pdf/pdf-appearance.c
|
||||
@@ -1066,6 +1066,25 @@ pdf_write_ch_widget_appearance(fz_context *ctx, pdf_annot *annot, fz_buffer *buf
|
||||
pdf_write_tx_widget_appearance(ctx, annot, buf, rect, bbox, matrix, res, text, ff);
|
||||
}
|
||||
|
||||
+static void
|
||||
+pdf_write_sig_widget_appearance(fz_context *ctx, pdf_annot *annot, fz_buffer *buf,
|
||||
+ fz_rect *rect, fz_rect *bbox, fz_matrix *matrix, pdf_obj **res)
|
||||
+{
|
||||
+ float x0 = rect->x0 + 1;
|
||||
+ float y0 = rect->y0 + 1;
|
||||
+ float x1 = rect->x1 - 1;
|
||||
+ float y1 = rect->y1 - 1;
|
||||
+ float w = x1 - x0;
|
||||
+ float h = y1 - y0;
|
||||
+ fz_append_printf(ctx, buf, "1 w\n0 G\n");
|
||||
+ fz_append_printf(ctx, buf, "%g %g %g %g re\n", x0, y0, w, h);
|
||||
+ fz_append_printf(ctx, buf, "%g %g m %g %g l\n", x0, y0, x1, y1);
|
||||
+ fz_append_printf(ctx, buf, "%g %g m %g %g l\n", x1, y0, x0, y1);
|
||||
+ fz_append_printf(ctx, buf, "s\n");
|
||||
+ *bbox = *rect;
|
||||
+ *matrix = fz_identity;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
pdf_write_widget_appearance(fz_context *ctx, pdf_annot *annot, fz_buffer *buf,
|
||||
fz_rect *rect, fz_rect *bbox, fz_matrix *matrix, pdf_obj **res)
|
||||
@@ -1115,6 +1134,10 @@ pdf_write_widget_appearance(fz_context *ctx, pdf_annot *annot, fz_buffer *buf,
|
||||
fz_catch(ctx)
|
||||
fz_rethrow(ctx);
|
||||
}
|
||||
+ else if (pdf_name_eq(ctx, ft, PDF_NAME(Sig)))
|
||||
+ {
|
||||
+ pdf_write_sig_widget_appearance(ctx, annot, buf, rect, bbox, matrix, res);
|
||||
+ }
|
||||
else
|
||||
{
|
||||
fz_throw(ctx, FZ_ERROR_GENERIC, "cannot create appearance stream for %s widgets", pdf_to_name(ctx, ft));
|
||||
--
|
||||
2.19.1.1238.g4b45f61cc0
|
||||
|
@ -1,77 +0,0 @@
|
||||
From 351c99d8ce23bbf7099dbd52771a095f67e45a2c Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <351c99d8ce23bbf7099dbd52771a095f67e45a2c.1542272011.git.mjg@fedoraproject.org>
|
||||
From: Sebastian Rasmussen <sebras@gmail.com>
|
||||
Date: Mon, 1 Oct 2018 15:13:13 +0800
|
||||
Subject: [PATCH] Avoid being smart about keeping only a single reference to
|
||||
the buffer.
|
||||
|
||||
When pdf_dev_pop() is called it will drop the reference to the buffer.
|
||||
pdf_dev_push_new_buf() will either create a new buffer reference or take a reference to the existing buffer.
|
||||
When pdf_dev_pop() is called unbalance this creates a problem as the
|
||||
top level buffer will be unreferenced too many times.
|
||||
|
||||
fails-32.pdf
|
||||
---
|
||||
source/pdf/pdf-device.c | 15 +++++++++------
|
||||
1 file changed, 9 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/source/pdf/pdf-device.c b/source/pdf/pdf-device.c
|
||||
index 31a7a10f..0103e9a7 100644
|
||||
--- a/source/pdf/pdf-device.c
|
||||
+++ b/source/pdf/pdf-device.c
|
||||
@@ -66,7 +66,6 @@ struct pdf_device_s
|
||||
|
||||
pdf_document *doc;
|
||||
pdf_obj *resources;
|
||||
- fz_buffer *buffer;
|
||||
|
||||
int in_text;
|
||||
|
||||
@@ -1061,7 +1060,10 @@ pdf_dev_drop_device(fz_context *ctx, fz_device *dev)
|
||||
int i;
|
||||
|
||||
for (i = pdev->num_gstates-1; i >= 0; i--)
|
||||
+ {
|
||||
+ fz_drop_buffer(ctx, pdev->gstates[i].buf);
|
||||
fz_drop_stroke_state(ctx, pdev->gstates[i].stroke_state);
|
||||
+ }
|
||||
|
||||
for (i = pdev->num_cid_fonts-1; i >= 0; i--)
|
||||
fz_drop_font(ctx, pdev->cid_fonts[i]);
|
||||
@@ -1069,7 +1071,6 @@ pdf_dev_drop_device(fz_context *ctx, fz_device *dev)
|
||||
for (i = pdev->num_groups - 1; i >= 0; i--)
|
||||
pdf_drop_obj(ctx, pdev->groups[i].ref);
|
||||
|
||||
- fz_drop_buffer(ctx, pdev->buffer);
|
||||
pdf_drop_obj(ctx, pdev->resources);
|
||||
fz_free(ctx, pdev->cid_fonts);
|
||||
fz_free(ctx, pdev->image_indices);
|
||||
@@ -1111,10 +1112,13 @@ fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, fz_matrix topc
|
||||
dev->super.begin_tile = pdf_dev_begin_tile;
|
||||
dev->super.end_tile = pdf_dev_end_tile;
|
||||
|
||||
+ fz_var(buf);
|
||||
+
|
||||
fz_try(ctx)
|
||||
{
|
||||
- dev->buffer = fz_keep_buffer(ctx, buf);
|
||||
- if (!buf)
|
||||
+ if (buf)
|
||||
+ buf = fz_keep_buffer(ctx, buf);
|
||||
+ else
|
||||
buf = fz_new_buffer(ctx, 256);
|
||||
dev->doc = doc;
|
||||
dev->resources = pdf_keep_obj(ctx, resources);
|
||||
@@ -1136,8 +1140,7 @@ fz_device *pdf_new_pdf_device(fz_context *ctx, pdf_document *doc, fz_matrix topc
|
||||
}
|
||||
fz_catch(ctx)
|
||||
{
|
||||
- if (dev->gstates && dev->buffer == NULL)
|
||||
- fz_drop_buffer(ctx, dev->gstates[0].buf);
|
||||
+ fz_drop_buffer(ctx, buf);
|
||||
fz_free(ctx, dev);
|
||||
fz_rethrow(ctx);
|
||||
}
|
||||
--
|
||||
2.19.1.1238.g4b45f61cc0
|
||||
|
@ -1,48 +0,0 @@
|
||||
From 38f883fe129a5e89306252a4676eaaf4bc968824 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <38f883fe129a5e89306252a4676eaaf4bc968824.1542272532.git.mjg@fedoraproject.org>
|
||||
From: Tor Andersson <tor.andersson@artifex.com>
|
||||
Date: Mon, 22 Oct 2018 17:16:35 +0200
|
||||
Subject: [PATCH] Fix text used as clip mask in pdfwrite device.
|
||||
|
||||
Push the clip state, and pass the correct text rendering mode state.
|
||||
---
|
||||
source/pdf/pdf-device.c | 12 ++++++++++--
|
||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/source/pdf/pdf-device.c b/source/pdf/pdf-device.c
|
||||
index 4dd729b8..427e3b38 100644
|
||||
--- a/source/pdf/pdf-device.c
|
||||
+++ b/source/pdf/pdf-device.c
|
||||
@@ -734,9 +734,13 @@ pdf_dev_clip_text(fz_context *ctx, fz_device *dev, const fz_text *text, fz_matri
|
||||
{
|
||||
pdf_device *pdev = (pdf_device*)dev;
|
||||
fz_text_span *span;
|
||||
+
|
||||
+ pdf_dev_end_text(ctx, pdev);
|
||||
+ pdf_dev_push(ctx, pdev);
|
||||
+
|
||||
for (span = text->head; span; span = span->next)
|
||||
{
|
||||
- pdf_dev_begin_text(ctx, pdev, span->trm, 0);
|
||||
+ pdf_dev_begin_text(ctx, pdev, span->trm, 7);
|
||||
pdf_dev_ctm(ctx, pdev, ctm);
|
||||
pdf_dev_font(ctx, pdev, span->font);
|
||||
pdf_dev_text_span(ctx, pdev, span);
|
||||
@@ -748,9 +752,13 @@ pdf_dev_clip_stroke_text(fz_context *ctx, fz_device *dev, const fz_text *text, c
|
||||
{
|
||||
pdf_device *pdev = (pdf_device*)dev;
|
||||
fz_text_span *span;
|
||||
+
|
||||
+ pdf_dev_end_text(ctx, pdev);
|
||||
+ pdf_dev_push(ctx, pdev);
|
||||
+
|
||||
for (span = text->head; span; span = span->next)
|
||||
{
|
||||
- pdf_dev_begin_text(ctx, pdev, span->trm, 0);
|
||||
+ pdf_dev_begin_text(ctx, pdev, span->trm, 7);
|
||||
pdf_dev_font(ctx, pdev, span->font);
|
||||
pdf_dev_ctm(ctx, pdev, ctm);
|
||||
pdf_dev_text_span(ctx, pdev, span);
|
||||
--
|
||||
2.19.1.1238.g4b45f61cc0
|
||||
|
@ -1,62 +0,0 @@
|
||||
From 164ddc22ee0d5b63a81d5148f44c37dd132a9356 Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <164ddc22ee0d5b63a81d5148f44c37dd132a9356.1542272812.git.mjg@fedoraproject.org>
|
||||
From: Tor Andersson <tor.andersson@artifex.com>
|
||||
Date: Mon, 5 Nov 2018 17:49:09 +0100
|
||||
Subject: [PATCH] Fix 700043: Don't assume a font is t3 just because
|
||||
fz_outline_glyph fails.
|
||||
|
||||
---
|
||||
source/fitz/svg-device.c | 31 ++++++++++++++++---------------
|
||||
1 file changed, 16 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/source/fitz/svg-device.c b/source/fitz/svg-device.c
|
||||
index 2876a89b..aaf53b99 100644
|
||||
--- a/source/fitz/svg-device.c
|
||||
+++ b/source/fitz/svg-device.c
|
||||
@@ -472,27 +472,28 @@ svg_dev_text_span_as_paths_defs(fz_context *ctx, fz_device *dev, fz_text_span *s
|
||||
/* Need to send this one */
|
||||
fz_rect rect;
|
||||
fz_path *path;
|
||||
- path = fz_outline_glyph(ctx, span->font, gid, fz_identity);
|
||||
- if (path)
|
||||
+ out = start_def(ctx, sdev);
|
||||
+ fz_write_printf(ctx, out, "<symbol id=\"font_%x_%x\">\n", fnt->id, gid);
|
||||
+ if (fz_font_ft_face(ctx, span->font))
|
||||
{
|
||||
- rect = fz_bound_path(ctx, path, NULL, fz_identity);
|
||||
- shift.e = -rect.x0;
|
||||
- shift.f = -rect.y0;
|
||||
- fz_transform_path(ctx, path, shift);
|
||||
- out = start_def(ctx, sdev);
|
||||
- fz_write_printf(ctx, out, "<symbol id=\"font_%x_%x\">\n", fnt->id, gid);
|
||||
- fz_write_printf(ctx, out, "<path");
|
||||
- svg_dev_path(ctx, sdev, path);
|
||||
- fz_write_printf(ctx, out, "/>\n");
|
||||
- fz_drop_path(ctx, path);
|
||||
+ path = fz_outline_glyph(ctx, span->font, gid, fz_identity);
|
||||
+ if (path)
|
||||
+ {
|
||||
+ rect = fz_bound_path(ctx, path, NULL, fz_identity);
|
||||
+ shift.e = -rect.x0;
|
||||
+ shift.f = -rect.y0;
|
||||
+ fz_transform_path(ctx, path, shift);
|
||||
+ fz_write_printf(ctx, out, "<path");
|
||||
+ svg_dev_path(ctx, sdev, path);
|
||||
+ fz_write_printf(ctx, out, "/>\n");
|
||||
+ fz_drop_path(ctx, path);
|
||||
+ }
|
||||
}
|
||||
- else
|
||||
+ else if (fz_font_t3_procs(ctx, span->font))
|
||||
{
|
||||
rect = fz_bound_glyph(ctx, span->font, gid, fz_identity);
|
||||
shift.e = -rect.x0;
|
||||
shift.f = -rect.y0;
|
||||
- out = start_def(ctx, sdev);
|
||||
- fz_write_printf(ctx, out, "<symbol id=\"font_%x_%x\">\n", fnt->id, gid);
|
||||
fz_run_t3_glyph(ctx, span->font, gid, shift, dev);
|
||||
}
|
||||
fz_write_printf(ctx, out, "</symbol>\n");
|
||||
--
|
||||
2.19.1.1238.g4b45f61cc0
|
||||
|
@ -1 +1 @@
|
||||
SHA512 (mupdf-1.14.0-source.tar.gz) = 2dbe4e1d02e296dd01f59471d34771066eaab10b81d9a357f5ea9661298116b5dbfec61858dc0fb3e6714d66bde9fa22d2b665b90165b8642342ec838289dcf9
|
||||
SHA512 (mupdf-1.15.0-rc1-source.tar.gz) = 2591c1cf30089191b8756cf9a8cc1dff1258619d62e66eed5695c3e0cad65ffbd1274208b4b3fed650443fb59eebe027fde888860c14e8c30514d55059f159f6
|
||||
|
Loading…
Reference in new issue