mirror of
https://codeberg.org/privacy1st/md-to-pdf.git
synced 2024-11-22 05:59:33 +01:00
add script
This commit is contained in:
parent
f19f9032cf
commit
5de67bbafd
@ -0,0 +1,3 @@
|
|||||||
|
# md-to-pdf
|
||||||
|
|
||||||
|
To be able to convert one or more Markdown (`.md`) files to pdf, save [md-to-pdf](md-to-pdf) in `"$HOME"/.local/share/nautilus/scripts/md-to-pdf` and make it executable.
|
68
md-to-pdf
Executable file
68
md-to-pdf
Executable file
@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
SCRIPT_TITLE=md-to-pdf
|
||||||
|
depends=(chromium cmark-gfm)
|
||||||
|
optdepends=()
|
||||||
|
|
||||||
|
# Uncomment for debugging:
|
||||||
|
exec 1> "${HOME}"/"${SCRIPT_TITLE}".log 2>&1
|
||||||
|
set -x
|
||||||
|
|
||||||
|
#######
|
||||||
|
|
||||||
|
|
||||||
|
function command_exists(){
|
||||||
|
command -v "$1" > /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
function notify() {
|
||||||
|
# $1: Message summary
|
||||||
|
# $2: Message body
|
||||||
|
# $3-n: notify-send options
|
||||||
|
|
||||||
|
if command_exists notify-send; then
|
||||||
|
notify-send "$@";
|
||||||
|
else
|
||||||
|
# Write message to stderr
|
||||||
|
printf '%s: %s\n' "$1" "$2" 1>&2;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_depends() {
|
||||||
|
for dep in "${depends[@]}"; do
|
||||||
|
if ! command_exists "${dep}"; then
|
||||||
|
notify "${SCRIPT_TITLE}" "The dependency ${dep} is missing!" --icon=dialog-information;
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for dep in "${optdepends[@]}"; do
|
||||||
|
if ! command_exists "${dep}"; then
|
||||||
|
# Inform about missing opt. dependency on /dev/stderr
|
||||||
|
printf 'Info: The optional dependency %s is missing.' "${dep}" 1>&2;
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check_depends
|
||||||
|
|
||||||
|
# read newline-delimited absolute paths of selected files (on local filesystem)
|
||||||
|
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read file; do
|
||||||
|
# If $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS contains a tailing newline,
|
||||||
|
# $file may be the empty string
|
||||||
|
if [ "${file}" = '' ]; then
|
||||||
|
continue;
|
||||||
|
fi
|
||||||
|
|
||||||
|
html="${file}".html;
|
||||||
|
pdf="${file}".pdf;
|
||||||
|
|
||||||
|
# Convert
|
||||||
|
cmark-gfm "${file}" --to html --unsafe > "${html}" || notify "${SCRIPT_TITLE}" "Conversion of ${file} to html failed!" --icon=dialog-information;
|
||||||
|
chromium --headless --disable-gpu --print-to-pdf="${pdf}" file://"${html}" || notify "${SCRIPT_TITLE}" "Conversion of ${html} to pdf failed!" --icon=dialog-information;
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
rm "${html}" || notify "${SCRIPT_TITLE}" "Could not delete intermediate file ${html}!" --icon=dialog-information;
|
||||||
|
done
|
||||||
|
|
||||||
|
notify "${SCRIPT_TITLE}" 'Done!' --icon=dialog-information;
|
Loading…
Reference in New Issue
Block a user