使用 \qrcode 生成扭曲的二维码

使用 \qrcode 生成扭曲的二维码

当我使用 \qrcode 时,生成的二维码图像中有空白行,导致我的手机难以读取二维码。有人知道如何解决这个问题吗?我尝试过 pdfLatex 和 XeLatex,两者都会导致图像失真。 在此处输入图片描述

\documentclass{article}
\usepackage{qrcode}
\begin{document}

default:\quad
\qrcode{https://www.ctan.org/tex-archive/macros/latex/contrib/qrcode?lang=en}
\qquad
1 inch high (and wide):
\quad
\qrcode[height=1in]{https://www.ctan.org/tex-archive/macros/latex/contrib/qrcode?lang=en}

\end{document}

答案1

我认为这是查看器的问题;它在网站的几个问题中都有体现(这里这里这里)。

也许,可以通过在黑色方块中编程一点重叠来规避这个问题(你可以请与作者核实)。另一种可能性是负责 PDF->像素转换。例如,您可以转换为 png,稍微模糊一下,然后重新采样...

\documentclass[border=5mm]{standalone}
\usepackage{qrcode}
\begin{document}
\qrcode{https://www.ctan.org/tex-archive/macros/latex/contrib/qrcode?lang=en}
\end{document}

Firefox(pdf.js)将其视为:

在此处输入图片描述

可以看到细线。你可以用图像魔术师

convert -density 600 -blur 0.5x1 lilla.pdf -resample 300 -sharpen 0x0.5 lilla.png

然后 Firefox 将显示为:

在此处输入图片描述

(您需要调整参数才能获得更好的结果……)

答案2

或者,你可以使用 PSTricks 包pst-barcode。它似乎能产生更好的结果,并提供各种不同类型的条形码和二维码。

排版如下lualatex

\documentclass{article}
\usepackage{pst-barcode}

\begin{document}
default (1 inch height):\quad
\makebox[1in][l]{\rule{0pt}{1in}%
  \psbarcode{https://ctan.org/tex-archive/graphics/pstricks/contrib/pst-barcode}{width=1}{qrcode}%
}
\end{document}

在 1920x1080 屏幕上以 400% 缩放比例截取的 Firefox 屏幕截图:

在此处输入图片描述


另一个选择是修补qrcode。它建立在 LaTeX 的

\rule[raise_len]{wdth}{hght}

命令。可以通过允许相邻模块之间有一些重叠来避免相邻模块之间出现可见的细线,正如罗马诺

这里使用 TikZ 重新实现了\rule带有填充rectangle且边框也绘制的标准:

\documentclass[border=1pt]{standalone}

\usepackage{qrcode}

\usepackage{tikz}
\newcommand\fixedrule[3][0pt]{\raisebox{#1}{\tikz[x=#2,y=#3]{
    \clip (0,0) rectangle (1,1);
    \ifdim #2>0pt\ifdim #3>0pt \filldraw (0,0) rectangle (1,1); \fi\fi
}}}
\makeatletter
\def\qrcode@in#1{\xdef\qr@texttoencode{#1}\egroup\let\rule\fixedrule\qrcode@int\endgroup}
\makeatother

\begin{document}
\qrcode{ABC}
\end{document}

相关内容