如何在 pdf 文档中包含来自 url 的图像

如何在 pdf 文档中包含来自 url 的图像

例如,如果我想从 url 添加此图像

http://www.qqxxzx.com/images/profile-pics/profile-pics-16.jpg

在我的 pdf 中,我该怎么办?

我尝试了几种解决方案href。例如这个

\begin{figure}%[2]
    \centering
    \href{http://www.qqxxzx.com/images/profile-pics/profile-pics-16.jpg}{\includegraphics{profile-pics-16.jpg}}

\end{figure}

但什么都没起作用。我总是得到这个错误

Package pdftex.def Error: File `profile-pics-16.jpg' not found. See the pdftex.def package documentation for explanation. Type H <return> for immediate help. ... l.57 ...pg}{\includegraphics{profile-pics-16.jpg}}

答案1

shell 转义功能 ( \write18) 可用于在编译期间调用外部程序。以下示例首先检查文件是否存在。如果不存在,则调用wget以下载文件(如果pdflatex使用启用的 shell 转义功能调用,例如通过选项-shell-escape-enable-write18(MiKTeX)。

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}
  \centering
  \IfFileExists{profile-pics-16.jpg}{%
  }{%
    \immediate\write18{%
      wget http://www.qqxxzx.com/images/profile-pics/profile-pics-16.jpg%
    }%
  }
  \includegraphics{profile-pics-16.jpg}
\end{figure}
\end{document}

对于 LuaTeX,不需要进行 shell 转义,因为可以通过库进行下载luasocket

以下示例定义了宏\Download,它接受文件名和 URL。如果检测到 LuaTeX,则在 Lua 中处理下载。否则需要 shell 转义。为方便起见,文件名存储在宏中\DownloadFile以供稍后在 中使用\includegraphics

\documentclass{article}
\usepackage{graphicx}
\usepackage{ifluatex}

\ifluatex
  \directlua{
    tex.enableprimitives('', {'luaescapestring'})
  }
  \newcommand*{\Download}[2]{%
    \IfFileExists{#1}{%
    }{%
      \directlua{
        local io = require('io')
        local http = require('socket.http')
        local ltn12 = require('ltn12')
        local file_name = '\luaescapestring{#1}'
        local url = '\luaescapestring{#2}'
        texio.write_nl('Downloading: ' .. file_name)
        texio.write_nl('')
        http.request{
          url=url,
          sink=ltn12.sink.file(io.open(file_name, 'w'))
        }
      }%
    }%
    \edef\DownloadFile{#1}%
  }
\else
  \newcommand*{\Download}[2]{%
    \IfFileExists{#1}{%
    }{%
      \immediate\write18{%
        wget -O "#2" "#1"%
      }%
    }%
    \edef\DownloadFile{#1}%
  }%
\fi

\begin{document}
  \begin{figure}
    \centering
    \Download{profile-pics-16.jpg}{%
      http://www.qqxxzx.com/images/profile-pics/profile-pics-16.jpg%
    }
    \includegraphics{\DownloadFile}
  \end{figure}
\end{document}

警告:代码不会检查任何下载错误。

相关内容