From 24cca7086b2c7f8bb12fbb1f03fa0a438e2493ab Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Thu, 16 Mar 2023 13:10:16 +0100 Subject: [PATCH] build/Makefile.common: shrink pdfs before publish Closes: SYS#6380 Change-Id: I7c01b1cb1a0e7de385359671461a0ad142dfa5ad --- build/Makefile.common.inc | 12 +++++++++--- build/shrink-pdfs.sh | 27 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100755 build/shrink-pdfs.sh diff --git a/build/Makefile.common.inc b/build/Makefile.common.inc index bdc3817..9e79621 100644 --- a/build/Makefile.common.inc +++ b/build/Makefile.common.inc @@ -9,8 +9,9 @@ SSH_COMMAND = ssh -o 'UserKnownHostsFile=$(OSMO_GSM_MANUALS_DIR)/build/known_hosts' -p 48 UPLOAD_PATH ?= generic@sysmocom-downloads:documents SYMLINKS = common build -CLEAN_FILES += $(SYMLINKS) +CLEAN_FILES += $(SYMLINKS) $(SHRINK_MARKER) PDF_FILES = $(patsubst %.adoc,%.pdf,$(ASCIIDOC)) $(patsubst %.xml,%.pdf,$(VTY_REFERENCE)) +SHRINK_MARKER = generated/.pdf_shrink_marker PUBLISH_REF ?= master PUBLISH_TEMPDIR = _publish_tmpdir @@ -20,12 +21,17 @@ prefix ?= /usr/local $(SYMLINKS): ln -s $(OSMO_GSM_MANUALS_DIR)/$@ $@ +# Reduce pdf size by storing the embedded images with less quality (SYS#6380) +shrink: $(SHRINK_MARKER) +$(SHRINK_MARKER): $(UPLOAD_FILES) + build/shrink-pdfs.sh $(UPLOAD_FILES) + # Publish to $UPLOAD_PATH -upload: $(UPLOAD_FILES) +upload: shrink rsync -avz $(UPLOAD_FILES) $(UPLOAD_PATH)/ # Publish to https://ftp.osmocom.org/docs/ -publish: $(UPLOAD_FILES) +publish: shrink [ -n "$(OSMO_REPOSITORY)" ] || exit 1 rm -rf "$(PUBLISH_TEMPDIR)" mkdir -p "$(PUBLISH_TEMPDIR)/$(OSMO_REPOSITORY)/$(PUBLISH_REF)" diff --git a/build/shrink-pdfs.sh b/build/shrink-pdfs.sh new file mode 100755 index 0000000..a919ac3 --- /dev/null +++ b/build/shrink-pdfs.sh @@ -0,0 +1,27 @@ +#!/bin/sh -e +# Reduce pdf size by storing the embedded images with less quality (SYS#6380) +# usage: shrink-pdfs.sh first.pdf [second.pdf [...]] +mkdir -p generated + +for i in $@; do + out="generated/shrink_temp.pdf" + ps2pdf -dPDFSETTINGS=/ebook "$i" "$out" + + size_old=$(du "$i" | cut -f1) + size_old_h=$(du -h "$i" | cut -f1) + size_new=$(du "$out" | cut -f1) + size_new_h=$(du -h "$out" | cut -f1) + + if [ "$size_new" -lt "$size_old" ]; then + echo "* $i: $size_new_h (shrunk from $size_old_h)" + mv "$out" "$i" + else + echo "* $i: $size_old_h" + rm "$out" + fi +done + +# Add a marker so the Makefile knows that the shrink script ran. The generated +# dir is already in the gitignore files of repositories using osmo-gsm-manuals, +# so put it there. +touch generated/.pdf_shrink_marker