Sobrepor texto em PDF via linha de comando

1

O comando a seguir produziu o resultado da imagem a seguir usando convert, onde uma caixa de sobreposição contendo a letra "A" foi colocada em camadas sobre o PDF:

convert online_gauss.pdf -fill white -undercolor '# 00000080

-pontos-40-gravidade Sul-anotar + 0 + 5 'A' online_gauss_annot.pdf

No entanto, a conversão rasteriza a origem. Como gostaria de manter o formato PDF original (vetorial) para publicação, existe uma maneira simples de obter esse tipo de anotação via linha de comando em uma única imagem em PDF? Eu ficaria feliz apenas com a carta, mesmo no canto inferior esquerdo.

Eu vi alguns exemplos usando o Ghostscript, pdftk (selo), mas eles envolvem várias etapas intermediárias que são difíceis de acertar para imagens PDF de tamanhos diferentes.

    
por Bruno Silva 02.10.2015 / 19:14

1 resposta

2

Bem, eu encontrei uma solução usando TikZ dentro de um documento LaTex elaborado. O resultado não é exatamente o mesmo, mas acho ainda melhor:

Issoexigiuterumdocumentotexcomespaçosreservadosqueserãosubstituídospelosargumentosparaumscriptsh.

%file:add_legend.tex\documentclass{standalone}\usepackage{graphicx}\usepackage{tikz}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%LaTeXOverlayGenerator-AnnotatedFiguresv0.0.1%Createdwith(omittedhttp)ff.cx/latex-overlay-generator/%Ifthisgeneratorsavesyoutime,considerdonating5,-EUR!:-)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\annotatedFigureBoxCustom{bottom-left}{top-right}{label}{label-position}{box-color}{label-color}{border-color}{text-color}\newcommand*\annotatedFigureBoxCustom[8]{\draw[#5,thick,roundedcorners](#1)rectangle(#2);\nodeat(#4)[fill=#6,thick,shape=circle,draw=#7,innersep=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=southwest,text=#2,innersep=0,textwidth=#3\linewidth,font=\sffamily]at(#1){#4};}\newenvironment{annotatedFigure}[1]{\centering\begin{tikzpicture}\node[anchor=southwest,innersep=0](image)at(-0.75,-0.75){#1};\begin{scope}[x={(image.southeast)},y={(image.northwest)}]}{\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}

Eoscriptsh:

#!/bin/sh#Callthisscriptwithatleast2parameters,forexample#shscriptname<image_file><letter_of_legend>catadd_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, chamando:

$ > ./legend.sh online_gauss.pdf A

a saída desenhada em "A_online_gauss.pdf"!

    
por 04.10.2015 / 14:18