Exemplo

Exemplo

Uma solução alternativa é usar pdfcropseparadamente (no terminal) para cortar o arquivo PDF que queremos importar.

No entanto - existe uma maneira de remover as margens brancas ao importar um arquivo PDF de dentro do texarquivo?

Os dois pacotes comuns para importar arquivos PDF são pdfpagesou graphicx. Posso 'pré-processar' um arquivo para eles pdfcropdentro texdo arquivo?

Responder1

Um novo comando que funciona como \includegraphics, mas corta a imagem do pdf:

\newcommand{\includeCroppedPdf}[2][]{%
    \immediate\write18{pdfcrop #2}%
    \includegraphics[#1]{#2-crop}}

Lembrar: \write18precisa ser habilitado. Para a maioria das distribuições TeX, defina o --shell-escapesinalizador ao executar latex/ pdflatexetc.

Exemplo

\documentclass{article}

\usepackage{graphicx}

\newcommand{\includeCroppedPdf}[2][]{%
    \immediate\write18{pdfcrop #2}%
    \includegraphics[#1]{#2-crop}}

\begin{document}
    \includeCroppedPdf[width=\textwidth]{test}
\end{document}

Evite cortar em cada compilação

Para evitar cortes em cada compilação de documentos, você pode verificar se o arquivo cortado já existe. (alguma soma de verificação seria melhor)

\documentclass{article}

\usepackage{graphicx}

\newcommand{\includeCroppedPdf}[2][]{%
    \IfFileExists{./#2-crop.pdf}{}{%
        \immediate\write18{pdfcrop #2 #2-crop.pdf}}%
    \includegraphics[#1]{#2-crop.pdf}}

\begin{document}
    \includeCroppedPdf[width=\textwidth]{test}
\end{document} 

Exemplo de soma de verificação MD5

A ideia é salvar o MD5 da imagem e compará-lo na próxima execução. Isso requer a \pdf@filemdfivesummacro (funciona apenas com PDFLaTeXou LuaLaTeX). Para XeLaTeXvocê pode usar \write18com md5sumutilitário ou fazer um arquivo diff.

\documentclass{article}

\usepackage{graphicx}

\usepackage{etoolbox}

\makeatletter
\newcommand{\includeCroppedPdf}[2][]{\begingroup%
    \edef\temp@mdfivesum{\pdf@filemdfivesum{#2.pdf}}%
    \ifcsstrequal{#2mdfivesum}{temp@mdfivesum}{}{%
        %file changed
        \immediate\write18{pdfcrop #2 #2-crop.pdf}}%
        \immediate\write\@auxout{\string\expandafter\string\gdef\string\csname\space #2mdfivesum\string\endcsname{\temp@mdfivesum}}%
    \includegraphics[#1]{#2-crop.pdf}\endgroup}
\makeatother

\begin{document}
    \includeCroppedPdf[width=\textwidth]{abc}
\end{document}

Responder2

Se alguém tiver problemas devido a espaços no caminho do nome do arquivo, o seguinte resolve o problema:

\documentclass{article}

\usepackage{graphicx}

\usepackage{etoolbox}

\makeatletter
\newcommand{\includeCroppedPdf}[2][]{\begingroup%
    \edef\temp@mdfivesum{\pdf@filemdfivesum{"#2.pdf"}}%
    \ifcsstrequal{#2mdfivesum}{temp@mdfivesum}{}{%
        %file changed
        \immediate\write18{pdfcrop "#2.pdf" "#2-crop.pdf"}}%
        \immediate\write\@auxout{\string\expandafter\string\gdef\string\csname\space #2mdfivesum\string\endcsname{\temp@mdfivesum}}%
    \includegraphics[#1]{"#2-crop"}\endgroup}
\makeatother

\begin{document}
    \includeCroppedPdf[width=\textwidth]{./path to file with spaces/abc efg}
\end{document}

NB: Não funciona quando o \graphicspathé alterado

informação relacionada