Наложение текста в PDF через командную строку

Следующая команда произвела результат следующего изображения с помощью convert, где надпись «A» была наложена над PDF:

convert online_gauss.pdf -fill white -undercolor '# 00000080'
-определить 40-градацию South-annotate + 0 + 5 'A' online_gauss_annot.pdf

Желаемый результат

Однако конвертировать растеризует источник. Поскольку я хотел бы сохранить исходный формат PDF (векторный) для публикации, существует ли простой способ достижения этого типа аннотации через командную строку над одним PDF-изображением? Я был бы счастлив только с письмом, даже в левом нижнем углу.

Я видел несколько примеров, используя Ghostscript, pdftk (штамп), но они включают в себя несколько промежуточных шагов, которые трудно получить правильно для изображений формата PDF различного размера.

Ну, я придумал решение, используя TikZ в созданном документе LaTex . Результат не совсем то же самое, но я думаю, что он еще приятнее:

Выход решения

Это потребовало наличия документа tex с заполнителями, которые будут заменены аргументами на сценарий sh .

 % file: add_legend.tex \documentclass{standalone} \usepackage{graphicx} \usepackage{tikz} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LaTeX Overlay Generator - Annotated Figures v0.0.1 % Created with (omitted http) ff.cx/latex-overlay-generator/ % If this generator saves you time, consider donating 5,- EUR! :-) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\annotatedFigureBoxCustom{bottom-left}{top-right}{label}{label-position}{box-color}{label-color}{border-color}{text-color} \newcommand*\annotatedFigureBoxCustom[8]{\draw[#5,thick,rounded corners] (#1) rectangle (#2);\node at (#4) [fill=#6,thick,shape=circle,draw=#7,inner sep=4pt,font=\huge\sffamily,text=#8] {\textbf{#3}};} %\annotatedFigureBox{bottom-left}{top-right}{label}{label-position} \newcommand*\annotatedFigureBox[4]{\annotatedFigureBoxCustom{#1}{#2}{#3}{#4}{white}{white}{black}{black}} \newcommand*\annotatedFigureText[4]{\node[draw=none, anchor=south west, text=#2, inner sep=0, text width=#3\linewidth,font=\sffamily] at (#1){#4};} \newenvironment {annotatedFigure}[1]{\centering\begin{tikzpicture} \node[anchor=south west,inner sep=0] (image) at (-0.75,-0.75) { #1};\begin{scope}[x={(image.south east)},y={(image.north west)}]}{\end{scope}\end{tikzpicture}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \begin{annotatedFigure} {\includegraphics[width=1.0\linewidth]{_image_}} \annotatedFigureBox{0,0}{0.000,0.0}{_letter_}{0,0}%bl \end{annotatedFigure} \end{document} 

И сценарий sh :

 #!/bin/sh # Call this script with at least 2 parameters, for example # sh scriptname <image_file> <letter_of_legend> cat add_legend.tex | sed "s/_image_/$1/g" | sed "s/_letter_/$2/g" | pdflatex #rename output to match <letter_of_legend>_<image_file> format mv texput.pdf $2_$1 #clean up rm texput.* exit 0 

Finnaly, позвонив:

$> ./legend.sh online_gauss.pdf A

вывод, полученный в «A_online_gauss.pdf»!