Vẽ trên hình nền
Tôi muốn lấy các trang của một tệp PDF hiện có (chỉ đơn giản là hình ảnh) và vẽ một số hộp trên mỗi trang. (Các hộp giới hạn của các từ được phát hiện bởi một chương trình OCR bên ngoài.)
Những gì tôi đã thử cho đến nay:
có thể sử dụng
\includepdf(từpdfpagesgói) với tùy chọn[fitpaper=true]để làm cho các trang của PDF kết quả giống với các trang của PDF gốc.có thể sử dụng TikZ để vẽ hình chữ nhật / đa giác, với tọa độ được chỉ định bằng cách sử dụng
current page.north westvà một số số học (mà tôi nhận được từ câu trả lời này ), mặc dù có nhiều vấn đề:Chúng kết thúc trên một trang riêng biệt,
Trang riêng biệt này có kích thước TeX (letter / A4) mặc định, không phải kích thước của PDF đi kèm (mặc dù điều này có thể được đặt rõ ràng)
Đây là những gì tôi có cho đến nay (sử dụng example-image-athay vì tệp PDF của tôi):
\documentclass{article}
\pagestyle{empty}
\usepackage{pdfpages}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\paperwidth=319.999bp
\paperheight=239.999bp
\pagewidth=319.999bp
\pageheight=239.999bp
\begin{document}
\includepdf[fitpaper=true]{example-image-a}%
\begin{tikzpicture}[remember picture,overlay]
\draw [line width=1mm,opacity=.25] (current page.center) circle (3cm);
\draw[red, thick] ($(current page.north west)+(102 bp,-72 bp)$) -- ($(current page.north west)+(132 bp,-72 bp)$) -- ($(current page.north west)+(132 bp,-90 bp)$) -- ($(current page.north west)+(102 bp,-90 bp)$) -- cycle;
\end{tikzpicture}%
\end{document}
Kết quả trong hai trang (theo thứ tự khác nếu tôi đặt \includepdfsau):
Trả lời
Sử dụng eso-pic's \AddToShipoutPictureFG*ai có thể đạt được điều này (tôi đã nhận lỗi tự kiểm soát không xác định trên \pagewidthvà \pageheightvà nhận xét họ):
\documentclass{article}
\pagestyle{empty}
\usepackage{eso-pic}
\usepackage{pdfpages}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\paperwidth=319.999bp
\paperheight=239.999bp
%\pagewidth=319.999bp
%\pageheight=239.999bp
\begin{document}
\AddToShipoutPictureFG*{%
\put(0,0){\begin{tikzpicture}[remember picture,overlay]
\draw [line width=1mm,opacity=.25] (current page.center) circle (3cm);
\draw[red, thick] ($(current page.north west)+(102 bp,-72 bp)$) -- ($(current page.north west)+(132 bp,-72 bp)$) -- ($(current page.north west)+(132 bp,-90 bp)$) -- ($(current page.north west)+(102 bp,-90 bp)$) -- cycle;
\end{tikzpicture}%
}}%
\includepdf[fitpaper=true]{example-image-a}%
\end{document}
Sử dụng tùy chọn picturecommandcủa \includepdfvà đưa nội dung của bạn tikzpicturevào đó:
\documentclass{article}
\usepackage{pdfpages}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\begin{document}
\includepdf[
fitpaper=true,
picturecommand={%
\begin{tikzpicture}[remember picture,overlay]
\draw [line width=1mm,opacity=.25] (current page.center) circle (3cm);
\draw[red, thick]
($(current page.north west)+(102 bp,-72 bp)$) --
($(current page.north west)+(132 bp,-72 bp)$) --
($(current page.north west)+(132 bp,-90 bp)$) --
($(current page.north west)+(102 bp,-90 bp)$) -- cycle;
\end{tikzpicture}}
]{example-image-a}
\end{document}
Lưu ý rằng picturecommandbản thân nó sử dụng \AddToShipoutPicturetừ eso-picgói, do đó đây chính xác là nơi thích hợp để đặt nội dung vẽ của bạn.
Dựa trên phương pháp này :
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\usepackage{tikz}
\begin{document}
\includepdf[
fitpaper=true,
picturecommand={%
\begin{tikzpicture}[remember picture,overlay,
x={(current page.south east)},y={(current page.north west)}
]
% Help CoSy
\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
\foreach \x in {0,1,...,9} { \node [anchor=south] at (\x/10,0) {0.\x}; }
\foreach \y in {1,...,9} { \node [anchor=west] at (0,\y/10) {0.\y}; }
% Stuff
\draw[red, thick, rounded corners] (0.1,0.9) rectangle (0.25,0.75);
\draw [cyan, very thick] (0.5,0.5) circle[radius=2cm];
\draw[yellow, line width=4mm, ->] (0.7,0.1) -- (0.9,0.3);
\draw [blue, very thick] (current page.center) circle[radius=3cm];
\end{tikzpicture}}
]{example-image-a.pdf}
\end{document}