Robitex's Blog

Ideas in the web

Watermark di precisione


Cos’è un watermark

Si tratta di una sorta di timbro che viene sovrapposto alle pagine di un documento.
Per ragioni di performance che non vi sto a spiegare, recentemente ho avuto la necessità di sovrapporre un watermark a ciascuna pagina di un file in formato PDF.
Questo post mostra come ciò si possa fare mantenendo la precisione vettoriale, utilizzando i programmi di una distribuzione TeX.

Creare una pagina di mark

(Avete una distribuzione recente di LaTeX installata sul vostro sistema vero?)
Per prima cosa creiamo il watermark, ovvero un file pdf di una sola pagina che contiene il timbro, per esempio una riga che dall’angolo in basso a sinistra della pagina, collega quello in alto a destra.

Per ottenere il watermark, compiliamo il seguente codice:

%
% creating a mark test page:
% copy this code in a text file named watermark.tex
% and compile with the command "pdflatex watermark"
%
\documentclass[a4paper]{minimal}
\usepackage[margin=0pt]{geometry}
\usepackage{tikz}
\begin{document}
\noindent\tikz
\draw (0,0)--(210mm-0.4pt,297mm-0.4pt);
\end{document}

Apporre il sigillo

Ma come apporre il sigillo appena creato?
L’idea è quella di caricare ciascuna pagina del nostro documento (chiamiamolo mydoc.pdf) in un file elaborato con pdflatex tramite il pacchetto pdfpages, ed inserirvi il watermark per ciascuna pagina creata con il pacchetto everypage, scritto da Sergio Callegari (che ringrazio per la sua risposta ad alcuni miei quesiti sul pacchetto).

Da come l’ho descritta sembra un mix di confusione, ma il codice seguente chiarirà più di mille parole cosa intendo:

%%%
% compile this file i.e. named output.tex
% with the command "pdflatex output"
%%%
\documentclass[a4paper]{minimal}
\usepackage{graphicx}
\usepackage{everypage}
\usepackage{pdfpages}

\AddEverypageHook{%
  % traslate the origin
  \vskip -1in\hskip -1in%
  % and with same TeX tricks write the watermark
  \vbox to 0pt{%
     \hbox to 0pt{\includegraphics{watermark}\hss}%
  }\vss%
}

\begin{document}
% the mydoc.pdf file must be present in the same directory
% with the watermark.pdf too
%
\includepdf[pages=-]{mydoc}
\end{document}
%%%

Fatto!

Come funziona

Ad ogni pagina del documento LaTeX, l’effetto del comando \AddEverypageHook del pacchetto everypage, è quello di sovrapporre il file watermark.pdf. Il contenuto del documento vero e proprio consiste nell’istruzione \includepdf[pages=-]{mydoc} (pacchetto pdfpages), che inserisce tutte le pagine del nostro documento, che naturalmente deve essere disponibile come file su disco nella directory prescelta.

Utile per la comprensione è leggersi le guide dei pacchetti utilizzati.
Grazie per l’attenzione ed alla prossima.

3 risposte a “Watermark di precisione

  1. frix 06/04/2016 alle 09:21

    Interessante. Molte grazie.

    Se posso permettermi: il post sarebbe ancor più utile se apponessi qualche immagine del risultato che descrivi.
    Lo so che è bene fare le prove da soli, ma, a mio modesto avviso, una _pre-visione_ catturerebbe ancora più attenzione per il post.

    • robitex 06/04/2016 alle 10:09

      @frix grazie per il commento.
      Credo che all’epoca valutai se inserire una preview o meno e decisi per il no.
      Per gli utenti del sistema TeX è conveniente far parlare il codice.
      Il post si rivolge anche agli utenti potenziali del sistema TeX che si interessano a questo tipo di applicazioni, ma per essi previdi la necessità di un “percorso di avvicinamento”.
      R.

      • frix 06/04/2016 alle 10:17

        > Per gli utenti del sistema TeX è conveniente far parlare il codice.

        Sono d’accordo, il codice è _fondamentale_ se fai un post su TeX e LaTeX.

        A volte un’immagine cattura l’attenzione più del codice. Anche per i potenziali utenti.
        Prendi il tuo post su _calctab_: la prima immagine _quasi-quasi_ basta da sola a far venire voglia di leggere e provare il codice.😉

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: