From 1f1d318d56e2b1a2c0f58b9b42b1f4e8502c7ef7 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Sun, 26 Jan 2020 10:06:22 -0800 Subject: [PATCH] fix metadata handling --- quad/qtest/test-metadata-tester.pdf | Bin 0 -> 6988 bytes quad/qtest/test-metadata.rkt | 6 ++++++ quad/quadwriter/render.rkt | 20 +++++++++----------- 3 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 quad/qtest/test-metadata-tester.pdf create mode 100644 quad/qtest/test-metadata.rkt diff --git a/quad/qtest/test-metadata-tester.pdf b/quad/qtest/test-metadata-tester.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a9edac78fbc963435e87beddefcd6a48bc5eaa64 GIT binary patch literal 6988 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 literal 0 HcmV?d00001 diff --git a/quad/qtest/test-metadata.rkt b/quad/qtest/test-metadata.rkt new file mode 100644 index 00000000..7ab97698 --- /dev/null +++ b/quad/qtest/test-metadata.rkt @@ -0,0 +1,6 @@ +#lang quadwriter + +#:pdf-title "My Life" +#:pdf-author "Roxy Butterick" +#:pdf-subject "pupography" +#:pdf-keywords "cute boxer dog" \ No newline at end of file diff --git a/quad/quadwriter/render.rkt b/quad/quadwriter/render.rkt index 2b1b595a..6eb9e750 100644 --- a/quad/quadwriter/render.rkt +++ b/quad/quadwriter/render.rkt @@ -194,17 +194,15 @@ (or (debug-column-gap) (quad-ref (car qs) :column-gap default-column-gap))) (define (setup-pdf-metadata! qs pdf) - (for ([str (match qs - [(cons q _) - (in-list (for/list ([k (in-list (list :pdf-title - :pdf-author - :pdf-subject - :pdf-keywords))]) - (quad-ref q k)))] - [_ (in-value #f)])] - [pdf-k (in-list '(Title Author Subject Keywords))]) - (hash-set! (pdf-info pdf) pdf-k (or str ""))) ; default val is empty string - (hash-set! (pdf-info pdf) 'Creator (format "Racket ~a [Quad library]" (version)))) + (define kvs + (apply append + (for/list ([k (in-list (list :pdf-title :pdf-author :pdf-subject :pdf-keywords))] + [pdf-k (in-list '(Title Author Subject Keywords))]) + (define str (or (match qs + [(cons q _) (quad-ref q k)] + [_ #false]) "")) ; default val is empty string + (list pdf-k str)))) + (apply hash-set*! (pdf-info pdf) 'Creator (format "Racket ~a [Quad library]" (version)) kvs)) (define (footnote-flow? q) (equal? (quad-ref q 'flow) "footnote"))