summaryrefslogtreecommitdiff
path: root/texmf-dist
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2018-06-12 08:07:19 +0900
committerNorbert Preining <norbert@preining.info>2018-06-12 08:07:19 +0900
commit3c18186d7c1bc4aa0a3f5727b5dbe5a251687d9c (patch)
tree5b945b95730cae1a07320b1c1f3d5dece42f796c /texmf-dist
parent76948a9dde88d0b50fd8d5485e2a9e5fff668bd6 (diff)
add qrcstamps
Diffstat (limited to 'texmf-dist')
-rw-r--r--texmf-dist/doc/latex/qrcstamps/README.md20
-rw-r--r--texmf-dist/doc/latex/qrcstamps/examples/qrc-demo1.pdfbin0 -> 44221 bytes
-rw-r--r--texmf-dist/doc/latex/qrcstamps/examples/qrc-demo1.tex63
-rw-r--r--texmf-dist/doc/latex/qrcstamps/examples/qrc-demo2.tex54
-rw-r--r--texmf-dist/doc/latex/qrcstamps/examples/qrc-demo3.tex142
-rw-r--r--texmf-dist/doc/latex/qrcstamps/qrcstamps-man.pdfbin0 -> 216325 bytes
-rw-r--r--texmf-dist/doc/latex/qrcstamps/qrcstamps.pdfbin0 -> 94392 bytes
-rw-r--r--texmf-dist/source/latex/qrcstamps/doc/qrcstamps-man.tex335
-rw-r--r--texmf-dist/source/latex/qrcstamps/qrcstamps.dtx276
-rw-r--r--texmf-dist/source/latex/qrcstamps/qrcstamps.ins59
-rw-r--r--texmf-dist/source/latex/qrcstamps/stamps/qrc-stamps.pdf272
-rw-r--r--texmf-dist/tex/latex/qrcstamps/qrcstamps.sty59
-rw-r--r--texmf-dist/tex/latex/qrcstamps/scandoc-grc.def55
13 files changed, 1335 insertions, 0 deletions
diff --git a/texmf-dist/doc/latex/qrcstamps/README.md b/texmf-dist/doc/latex/qrcstamps/README.md
new file mode 100644
index 00000000..692d3f87
--- /dev/null
+++ b/texmf-dist/doc/latex/qrcstamps/README.md
@@ -0,0 +1,20 @@
+Package: qrcstamps
+Author: D. P. Story
+Dated: 2018/06/02
+
+The qrcstamps package enables the document author to create QR Codes, the
+QR Code Symbology are caste onto a dynamic stamp annotation.
+
+
+PDF Creator: Adobe Distiller or ps2pdf can be used as the PDF creator, but
+the full Acrobat application is needed to perform post-creation tasks. One the
+document is created and saved, it can be viewed by any appropriate PDF viewer.
+
+Also see http://blog.acrotex.net/ for the latest on my
+ruminations on LaTeX and PDF.
+
+Now, I simply must get back to my retirement.
+
+D. P. Story
+dpstory@uakron.edu
+
diff --git a/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo1.pdf b/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo1.pdf
new file mode 100644
index 00000000..a131dcbe
--- /dev/null
+++ b/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo1.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo1.tex b/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo1.tex
new file mode 100644
index 00000000..91eaa5e3
--- /dev/null
+++ b/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo1.tex
@@ -0,0 +1,63 @@
+\documentclass{article}
+\usepackage[forcolorpaper]{web}
+\usepackage[scandoc]{qrcstamps}
+
+\title{Create QR Code Symbols using Stamps}
+\author{D. P. Story}
+\email{dpstory@acrotex.net}
+\subject{Creating QR Code symbols using Acrobat annotation stamps and LaTeX}
+\keywords{stamp annotations, QR Code, LaTeX, PDF, AcroTeX}
+
+\useFullWidthForPaper
+\previewOff
+
+\def\cs#1{\texttt{\char`\\#1}}
+
+\parindent0pt\parskip6pt
+
+\begin{document}
+
+\makeinlinetitle
+
+\textbf{Small}
+
+\defineAPath{\UADPStory}{http://www.math.uakron.edu/~dpstory}
+\qrCode{http://www.acrotex.net} \url{http://www.acrotex.net}\qquad
+\qrCode{mailto:dpstory@acrotex.net} \url{mailto:dpstory@acrotex.net}
+
+\qrCode{Home of AcroTeX.Net Blog\n
+http://www.acrotex.net/blog} \parbox{2in}{Home of Acro\negthinspace\TeX.Net Blog\\
+\url{http://www.acrotex.net/blog}}\hfill\parbox{3.25in}{You can format the
+line of a text message, as is done in the QR symbol to the left, by using
+\cs{n} (new line) within the required argument of \cs{qrCode}.}
+
+
+\textbf{Medium}
+
+%https://theqrplace.wordpress.com/2011/05/02/qr-code-tech-info-mecard-format/
+\qrCode[size=medium]{MECARD:N:Story,Don;NICKNAME:Dr. D. P. Story;
+ADR:1475 AcroTeX Drive, Niceville, FL 32578;TEL:9999999999;EMAIL:dpstory@acrotex.net;
+MEMO:Founder of AcroTeX.Net;
+URL:http://www.acrotex.net;;} (MECARD)
+
+\textbf{Large}
+
+\def\TEXT{%
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.
+%Now is the time for all good men to come to the aid of their country.
+Now is the time for all good men to come to the aid of their country.}
+
+\qrCode[size=large,widthTo=2in,allowresize]{\TEXT} (Now is the time\dots)\hfill
+\parbox{3in}{This is an example of a QR symbol containing text. This paragraph
+is near the limit of 500 characters. If you recompile after un-commenting the
+one line that is commented out, you'll be over the 500 character limit. See
+what happens when you compile. This example as well as others were used in
+the development of the package to check whether there truly is a 500
+character limit.}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo2.tex b/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo2.tex
new file mode 100644
index 00000000..072339ab
--- /dev/null
+++ b/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo2.tex
@@ -0,0 +1,54 @@
+\documentclass{article}
+\usepackage{amsmath}
+\usepackage[forcolorpaper]{web}
+\usepackage{eforms}
+\usepackage[scandoc]{qrcstamps}
+
+
+\title{Creating a QR Code Symbol Stamp Interactively}
+\author{D. P. Story}
+\subject{Creating QR Code symbols using Acrobat annotation stamps and LaTeX interactively}
+\email{dpstory@acrotex.net}
+\keywords{stamp, QRCode, stamps}
+
+\useFullWidthForPaper
+
+\parindent0pt\parskip6pt
+
+\begin{document}
+
+\makeinlinetitle
+
+This file demonstrates that it is possible to create QR Code symbols
+interactively. Enter some text into the field below then click on the white
+space outside the field (or press the \texttt{TAB} key) to commit the data.
+The QR Code symbol stamp will be updated appropriately.
+
+\qrCode[size=medium]{http://www.acrotex.net}\space\textField[
+ \TU{Maximum of 250 characters allowed, enter a URL, a mailto, or simply text.}
+ \MaxLen{250}\Ff{\FfMultiline}\AA{\AAKeystroke{%
+if (event.willCommit) {\r\t
+ if (!/^\\s*$/.test(event.value)) {\r
+ var annot=this.getAnnot({nPage:this.pageNum,cName:"\currentAnnotName"});\r\t
+ var props=annot.getProps();\r\t
+ props.author="QRC";\r\t
+ props.subject=event.value;\r\t
+ annot.setProps(props);\r\t
+ delete props.APCosObj;\r\t
+ annot.setProps(props);\r
+ }\r
+}}}]{txtFld}{3in}{11bp*6}
+
+Ignore the JavaScript code, it is somewhat obscure, but it works.
+
+\paragraph*{Requirements for this file} For this QR Code symbol stamp to
+update as designed, the user must (1) be viewing this document in
+\textsf{Acrobat} and (2) the stamp file \texttt{qrc-stamps.pdf}, which comes
+with this distribution, must be installed in the user \texttt{Stamps} folder
+of \textsf{Acrobat}. This file and these techniques work only for you, my dear
+AeB Pro users.
+
+By the way, if you also have Acrobat Reader, try this file in that
+application to see what happens.
+
+\end{document}
diff --git a/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo3.tex b/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo3.tex
new file mode 100644
index 00000000..2af0324b
--- /dev/null
+++ b/texmf-dist/doc/latex/qrcstamps/examples/qrc-demo3.tex
@@ -0,0 +1,142 @@
+\documentclass{article}
+\usepackage[web=forcolorpaper,eforms]{aeb_pro}
+\usepackage[scandoc]{qrcstamps}
+%\usepackage{lucidbry}
+
+\previewOff
+
+\title{\texorpdfstring{Modify a QR symbol stamp and (optionally) save it to an Image file}
+ {Modify a QR Symbol and save as Image}}
+\author{D. P. Story}
+\email{dpstory@acrotex.net}
+\subject{Methodology and problems with creating dynamic QR barcode stamps}
+\keywords{stamp, QRCode, stamps}
+\setWindowOptions{showtitle}
+
+\def\cs#1{\texttt{\char`\\#1}}
+
+\useFullWidthForPaper
+
+\parindent0pt\parskip6pt
+
+\chngDocObjectTo{\oDoc}{oDoc}
+%
+% Methodology: When user presses 'Make Image', the page of the doc that contains the stamp
+% is extracted and saved as \jobname_tmp.pdf. It is then attached to the current doc, with
+% annotation name (NM key) of "_qrcpage". The attachment is opened (hidden from user), the page is cropped
+% around the annotation and saved in the desired file format under the specified name. The
+% attachment is then closed and removed.
+%
+\begin{insDLJS}{myqrcjs}{Document JS to support QRC}
+var _oDoc,oDoc;
+function saveQrcAsImage(annotname) {
+ if ( arguments.length > 1) {
+ var f=this.getField(arguments[1]);
+ var i=f.currentValueIndices
+ var faceV=f.getItemAt(i,false) // face
+ var fileExt="."+faceV.toLowerCase();
+ var expV=(faceV=="PDF")?"":f.getItemAt(i,true); // export value
+ } else {
+ var faceV="PNG";
+ var fileExt=".png";
+ expV="com.adobe.acrobat.png";
+ }
+ var annot=this.getAnnot({nPage:this.pageNum,cName:annotname});
+ var props=annot.getProps();
+ var Rect=props.rect;
+ var Page=this.pageNum;
+ var pos=this.path.lastIndexOf("/");
+ var _path=this.path.substring(0,pos);
+% Extract the page the targeted qrc is on, and save it to a tmp file
+ \extractPages({nStart:Page, cPath:"\jobname_tmp.pdf"});
+% Now, attach it to the current document
+ \importDataObject({cName:"_qrcpage", cDIPath:"\jobname_tmp.pdf"});
+% Open the attachment, oDoc is the doc object of this doc
+ oDoc=this.openDataObject("_qrcpage");
+ var basename=app.response({cQuestion:"Enter the name of the file to be saved as a "+faceV+" image",
+ cDefault: "qrcode", cLabel: "Save as "+faceV+":"});
+ if (basename.toLowerCase()=="\jobname".toLowerCase()) {
+ basename=null;
+ app.alert("Selecting \"\jobname\" is not permitted, try another name for the saved image.");
+ }
+ if (basename!=null) {
+%
+% We extracted a single page, the annot lies on page 0
+%
+ oDoc.setPageBoxes({cBox:"Crop",nStart:0,rBox:Rect});
+%
+% From experience, we learn that the page must be flattened before we save to EPS
+% In the case of PDF, unless we flatten, the resultant PDF file will be a stamp
+%
+ if (faceV=="EPS"||faceV=="PDF") oDoc.flattenPages();
+ \docSaveAs\oDoc({cPath:_path+"/"+basename+fileExt,cConvID:expV});
+ oDoc.closeDoc(true);
+ this.removeDataObject("_qrcpage");
+ this.dirty=false;
+ }
+}
+function qrcKeyboard(annotname) {
+ if (event.willCommit) {
+ if (!/^\\s*$/.test(event.value)) {
+ var annot=this.getAnnot({nPage:this.pageNum,cName:annotname});
+ var props=annot.getProps();
+ props.author="QRC";
+ props.subject=event.value;
+ annot.setProps(props);
+ delete props.APCosObj;
+ annot.setProps(props);
+ }
+ }
+}
+\end{insDLJS}
+
+
+
+\begin{document}
+
+\makeinlinetitle
+
+We initially create a QR symbol for the url \url{http://www.acrotex.net}. This QR symbol can be modified
+by entering text in the input box (the field allows a maximum of 75 characters). After you've committed your data, the
+QR symbol will update. The new wrinkle is the ability to save this symbol to an image file (PNG). Do this
+by pressing the \textsf{Make Image} button and entering a file name (or just take the default name). If things
+go as planned, the PNG image of the QR symbol is saved to the folder this PDF was opened from.
+
+\qrCode{http://www.acrotex.net}\space
+\textField[\MaxLen{75}\AA{\AAKeystroke{qrcKeyboard("\currentAnnotName");}}]{txtFld1}{2in}{11bp}\olBdry
+\pushButton[\CA{Make Image}\A{\JS{saveQrcAsImage("\currentAnnotName");}}]{btn1}{}{11bp}
+
+But why stop at PNG files? In the demonstration below, use the dropdown menu to select a graphics format.
+Pressing the \textsf{Make Image} button then saves the QR Code symbol to a graphics file.
+
+\qrCode[allowresize]{http://www.acrotex.net}\space
+\textField[\MaxLen{75}\AA{\AAKeystroke{qrcKeyboard("\currentAnnotName");}}]{txtFld2}{2in}{11bp}\olBdry
+\comboBox[\DV{pdf}\V{pdf}]{cb2}{.6in}{11bp}{%
+[(pdf)(PDF)][(com.adobe.acrobat.jpeg)(JPEG)]
+[(com.adobe.acrobat.png)(PNG)]
+[(com.adobe.acrobat.tiff)(TIFF)]
+[(com.adobe.acrobat.eps)(EPS)]}\olBdry
+\pushButton[\CA{Make Image}\A{\JS{saveQrcAsImage("\currentAnnotName","cb2");}}]{btn2}{}{11bp}
+
+\paragraph*{Requirements for this file} Even more amazing than \texttt{qrc-demo2.pdf}! For this QR Code symbol stamp
+to update and image saved, the user must (1) be viewing this document in
+\textsf{Acrobat} and (2) the stamp file \texttt{qrc-stamps.pdf}, which comes
+with this distribution, must be installed in the user \texttt{Stamps} folder
+of \textsf{Acrobat}. This file and these techniques work only for you, my dear
+AeB Pro users; and as an AeB Pro user, you have installed in the correct
+location on your computer the files \texttt{aeb.js} and \texttt{aeb\_pro.js};
+these are silently used.
+
+\paragraph*{Auxiliary file generated} The method (the action of the \textsf{Make Image} button) creates the PDF
+file \cs{jobname\_tmp.pdf} in the source folder. The file can be later
+deleted.
+
+\paragraph*{Applications} What can you do with the save images? Anything you want. Some suggestions:
+(1) import them into another {\LaTeX} source file using \cs{includegraphics}
+(should you be adverse to using stamps in your document), perhaps you are
+creating a business card;\footnote{I don't need on, I'm retired.} (2) put
+them on your web page, the QR symbol might contain a web address, email, or
+other contact info; and (3) other stuff too numerous to mention.
+
+\end{document}
+
diff --git a/texmf-dist/doc/latex/qrcstamps/qrcstamps-man.pdf b/texmf-dist/doc/latex/qrcstamps/qrcstamps-man.pdf
new file mode 100644
index 00000000..d67bc480
--- /dev/null
+++ b/texmf-dist/doc/latex/qrcstamps/qrcstamps-man.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/qrcstamps/qrcstamps.pdf b/texmf-dist/doc/latex/qrcstamps/qrcstamps.pdf
new file mode 100644
index 00000000..4b4491cd
--- /dev/null
+++ b/texmf-dist/doc/latex/qrcstamps/qrcstamps.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/qrcstamps/doc/qrcstamps-man.tex b/texmf-dist/source/latex/qrcstamps/doc/qrcstamps-man.tex
new file mode 100644
index 00000000..cfeb6e1f
--- /dev/null
+++ b/texmf-dist/source/latex/qrcstamps/doc/qrcstamps-man.tex
@@ -0,0 +1,335 @@
+% All About PDF Stamps In Acrobat® & Paperless Workflows
+% NM - the annotation name, unique on page (this is the annot.name property
+% Name - name of the icon (this is the annot.AP property in JS)
+% a=this.getAnnots(0)
+% p=a[0].getProps()
+% for (var o in p) console.println(o+": "+p[o])
+%
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[
+ web={centertitlepage,designv,forcolorpaper,tight*,latextoc,pro},
+ eforms,aebxmp
+]{aeb_pro}
+\usepackage{graphicx,array,fancyvrb}
+\usepackage{aeb_mlink}
+\usepackage[scandoc]{qrcstamps}
+%\usepackage{myriadpro}
+%\usepackage{calibri}
+\usepackage[altbullet]{lucidbry}
+
+\previewOff
+
+\def\hardspace{{\fontfamily{cmtt}\selectfont\symbol{32}}}
+
+\usepackage{acroman}
+\usepackage[active]{srcltx}
+
+\urlstyle{tt}
+\renewcommand\LayoutTextField[2]{#2}
+
+\let\uif\textsf
+
+%\normalmarginpar
+\setlength{\marginparsep}{1bp}
+\setlength{\marginparwidth}{1in}
+
+
+%\def\tutpath{doc/tutorial}
+%\def\tutpathi{tutorial}
+%\def\expath{../examples}
+
+\def\STRUT{\rule{0pt}{14pt}}
+
+
+\DeclareDocInfo
+{
+ university={\AcroTeX.Net},
+ title={Creating QR Codes\texorpdfstring{\\[1em]}{:}
+ The \textsf{qrcstamps} package},
+ author={D. P. Story},
+ email={dpstory@acrotex.net},
+ subject=Documentation for the qrcstamps
+ and the make-qrc packages,
+ talksite={\url{www.acrotex.net}},
+ version={1.0, 2018/06/02},
+ Keywords={LaTeX, form field, QR Code, Stamps, AcroTeX},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL={http://www.acrotex.net}
+}
+
+\universityLayout{fontsize=Large}
+\titleLayout{fontsize=LARGE}
+\authorLayout{fontsize=Large}
+\tocLayout{fontsize=Large,color=aeb}
+
+\sectionLayout{indent=-62.5pt,fontsize=large,color=aeb}
+\subsectionLayout{indent=-31.25pt,color=aeb}
+\subsubsectionLayout{indent=0pt,color=aeb}
+\subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}}
+
+\chngDocObjectTo{\newDO}{doc}
+\begin{docassembly}
+var titleOfManual="The qrcstamps Package";
+var manualfilename="Manual_BG_Print_qrc.pdf";
+var manualtemplate="Manual_BG_Brown.pdf"; // Blue, Green, Brown
+var _pathToBlank="C:/Users/Public/Documents/ManualBGs/"+manualtemplate;
+var doc;
+var buildIt=false;
+if ( buildIt ) {
+ console.println("Creating new " + manualfilename + " file.");
+ doc = \appopenDoc({cPath: _pathToBlank, bHidden: true});
+ var _path=this.path;
+ var pos=_path.lastIndexOf("/");
+ _path=_path.substring(0,pos)+"/"+manualfilename;
+ \docSaveAs\newDO({ cPath: _path });
+ doc.closeDoc();
+ doc = \appopenDoc({cPath: manualfilename, oDoc:this, bHidden: true});
+ f=doc.getField("ManualTitle");
+ f.value=titleOfManual;
+ doc.flattenPages();
+ \docSaveAs\newDO({ cPath: manualfilename });
+ doc.closeDoc();
+} else {
+// console.println("Using the current "+manualfilename+" file.");
+}
+var _path=this.path;
+var pos=_path.lastIndexOf("/");
+_path=_path.substring(0,pos)+"/"+manualfilename;
+\addWatermarkFromFile({
+ bOnTop:false,
+ bOnPrint:false,
+ cDIPath:_path
+});
+//\executeSave();
+\end{docassembly}
+
+
+\begin{document}
+
+\maketitle
+
+\selectColors{linkColor=black}
+\tableofcontents
+\selectColors{linkColor=webgreen}
+
+%\previewtrue
+
+\section{Introduction}
+
+The difficulty with the barcode field of PDF forms is that it cannot be
+created properly except through the user-interface of the \app{Acrobat}
+application. An alternative method is therefore necessary.
+
+The idea of using dynamic stamp annotations to represent barcodes comes from
+Thom Parker through personal communication, through
+\href{https://acrobatusers.com/tutorials/print/dynamic_stamp_secrets}{his
+article} on \href{https://acrobatusers.com/}{AcrobatUser.com}, and from
+his book
+\textsl{\mlhref{https://www.pdfscripting.com/public/All-About-PDF-Stamps-in-Acrobat-and-Paperless-Workflows-The-Book.cfm}
+{All About PDF Stamps In Acrobat${}^{\circledR}$ \& Paperless
+Workflows}}, which is highly recommended if you have interest in dynamic
+stamps.
+
+%\marginpar{\hfill\raisebox{.25in}{\qrCode[widthTo=0.75in]{http://www.acrotex.net}}}%, scan the barcode
+
+
+The \pkg{qrcstamps} package is used to insert QR Code Symbology onto a
+dynamic stamp annotation, \`a la Parker, into a PDF file from a {\LaTeX}
+source. The main command for doing this is
+\cs{qrCode}\qrCode[margin,margprior=\hfill,widthTo=0.75in]{http://www.acrotex.net}.
+The command creates a dynamic stamp annotation (a PDF construct) using the
+\pkg{annot\_pro} package whose appearance is the QR Code symbol. The QR Code
+can be scanned over a monitor or from a printed page using a scanning app
+found on most smartphones.
+As a demonstration of the \cs{qrCode} command, we place a QR Code in the
+margin to obtain the url \url{http://www.acrotex.net}.
+
+%Step up!\qrCode[margin,margintext={\hfill\makebox[0.75in][c]{Hi There!}},margprior=\hfill,widthTo=0.75in]{http://www.acrotex.net}
+
+\section{Requirements and Installation}
+
+\paragraph*{Required packages.} It is assumed the document author already has installed {\AEB} (acrotex) and
+the \pkg{annot\_pro}. If not, these should be in place first.
+
+\paragraph*{Document creation.} This package requires a workflow of \textsf{dvips $+$ Adobe Distiller $+$
+Adobe Acrobat} or \textsf{dvips $+$ ps2pdf $+$ Adobe Acrobat} to produce a
+document in which the QR symbols are inserted as designed. Note that though
+\app{ps2pdf} can be used to produce the PDF, it is necessary to first open the document
+using \app{Acrobat}, then save it. This is because post-PDF-creation JavaScript executes the
+first time the document is opened in \app{Acrobat}.
+
+\paragraph*{Viewing the document.} Once the document is built and saved, the document can be distributed to
+others who can view it in any conforming PDF viewer.
+
+\paragraph*{Installing the QR stamps.} After the distribution is installed, locate \texttt{qrc-stamps.pdf}
+at the end of the path
+\texttt{qrcstamps\string\stamps\string\qrc-stamps.pdf} and copy it to the
+\app{Acrobat} user's \texttt{Stamps} folder. That folder may be found by executing
+\[
+ \text{\texttt{app.getPath("user","stamps");}}\quad\pushButton[\CA{getPath}\A{\JS{console.show();\r
+ console.println('app.getPath("user","stamps");');}}]{gp}{}{11bp}
+\]
+in the console window. Press the button above, place your mouse cursor at the
+end of the line in the console window, and press \textsf{Ctrl+Enter} (\textsf{Cmd+Enter} for Mac
+OS). The executing code should return the path to the \texttt{Stamps} folder. This is where
+the stamp file \texttt{qrc-stamps.pdf} is copied.
+
+\section{The \textsf{qrcstamps} package}
+
+This package has two options and one command.
+
+\subsection{Package options}
+
+There are two options for this package.
+%, the first two of which are used most frequently, while the third is rather technical.
+\begin{description}
+ \item[\opt{scandoc}] The correct coding of the QR symbol does not occur
+ until the page that contains the symbol is visited. When the
+ \opt{scandoc} option is taken, \app{Acrobat} will automatically
+ visit each page when the document is first opened following PDF
+ creating with \app{Acrobat Distiller} or \app{ps2pdf}.
+ \item[\opt{!scandoc}] The document may be built many times before you
+ are satisfied as to its content. The \opt{!scandoc} option is a
+ convenience option for turning off the scanning process. The
+ default is not to scan. However, when the document is ready for
+ publishing, build the document with the \opt{scandoc} option in
+ effect; \emph{this is important!}
+% \item[\opt{basename=\ameta{base-name}}] The \opt{basename} key
+% sets the appearance base name of the barcode annotation. The
+% QR Code annotation name is
+% \texttt{\ameta{base-name}\_\ameta{size}}. The default value of
+% \opt{basename} is \texttt{basename=AeBQRC}. This option need never
+% be specified unless a package developer creates his own custom
+% barcode fields and stamps. To reference these new stamps, the
+% \texttt{basename} would have to be specified, unique that
+% collection of stamps.
+\end{description}
+
+\subsection{The \texorpdfstring{\protect\cs{qrCode}}{\textbackslash{qrCode}} command}
+
+The one and only command of this package is \cs{qrCode}.
+\bVerb\takeMeasure{\string\qrCode[\ameta{options}]\darg{\ameta{content}}}%
+\begin{dCmd}[commandchars=!()]{\bxSize}
+\qrCode[!ameta(options)]{!ameta(content)}
+\end{dCmd}
+\eVerb The required \ameta{content} argument is the content of the stamp, a
+URL, a email address, text, and so on. The \cs{qrCode} command uses the
+\cs{annotpro} command to create the stamp. Any of the options for the stamp
+annotation may be used (except for \texttt{type=stamp}, which is already
+supplied for you); refer to the documentation of \pkg{aeb\_pro} for details.
+In addition to the \ameta{options}, these are a few special options, these are
+\opt{size}, \opt{allowresize}, \opt{basename}, and \opt{contents}.
+\begin{description}
+ \item[\texttt{size=small|medium|large}] The stamps come in three sizes.
+ We describe each of these in turn.
+ \begin{itemize}
+ \item \texttt{size=small}: The QR symbol is allowed to
+ contain at most 75
+ characters\marginpar{\raggedleft\small75 chars
+ max\hspace*{6pt}}. The default size of the barcode is
+ \texttt{1in}\marginpar{\raggedleft\small1\,in
+ (dimen)\hspace*{6pt}}, though this can be changed using
+ the key \texttt{widthTo}; for example,
+ \texttt{widthTo=0.75in} sets the symbol to
+ \texttt{0.75in} square. When making the symbol smaller
+ than its default, you should test the symbol to see if
+ your scanner (perhaps on your smartphone) can read the
+ smaller symbology.
+ \item \texttt{size=medium}: The QR symbol is allowed to
+ contain at most 250
+ characters\marginpar{\raggedleft\small250 chars max\hspace*{6pt}}.
+ The default size of the barcode is
+ \texttt{1.5in}\marginpar{\raggedleft\small1.5\,in
+ (dimen)\hspace*{6pt}}, though this can be changed using
+ the key \texttt{widthTo}, as illustrated above.
+ \item \texttt{size=large}: The QR symbol is allowed to
+ contain at most 500
+ characters\marginpar{\raggedleft\small500 chars max\hspace*{6pt}}.
+ The default size of the barcode is
+ \texttt{2in}\marginpar{\raggedleft\small2\,in
+ (dimen)\hspace*{6pt}}, though this can be changed using
+ the key \texttt{widthTo}, as illustrated above.
+ \end{itemize}
+ When your \ameta{content} exceeds the size, the console window opens
+ informing you of such a matter. For example, your content has 300
+ characters yet you are inserting it into
+ \cs{qrCode[size=medium]\darg{\ameta{content}}}. In such a situation, you'll be
+ informed at the time you build the document of the error.
+
+ When you change the dimension of a barcode stamp to one that is \emph{smaller}
+ than the default dimension, be sure to test the smaller QR symbol to be
+ sure it can still be read by a QR Code scanner, on the screen and on
+ paper.
+
+ When \texttt{size} is not specified, it is assumed that \texttt{size=small,widthTo=1in}.
+
+ \item[\texttt{allowresize=true|false}] When \texttt{allowresize=true}
+ (or just \texttt{allowresize}), after the document has been build,
+ the document consumer is allowed to resize the barcode or to move
+ it around on the page. The default is \texttt{allowresize=false},
+ the user cannot move or resize the stamp.
+
+%\item[\texttt{basename=\ameta{base-name}}] By passing a value of
+% \ameta{base-name} for the \texttt{basename} key, you can locally set
+% the appearance base name of the stamp, different the default base name
+% (possibly set through the \texttt{basename} option. This option is used
+% only when you have developed multiple collections of barcode stamps
+% with a different base name. (Recall, the name of a barcode stamp (at
+% least in so far as this package is concerned) has the form
+% \texttt{\ameta{base-name}\_\ameta{size}}.
+
+%\previewtrue
+
+\item[\texttt{contents=\ameta{text}}] For barcodes, I prefer my stamps to have no popup message
+attached to it; however, I include the \texttt{contents} key to pass a text message. For example,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\normalsize]
+\qrCode[contents={This is my home website, go there,
+ everyone does!\n\n
+ D. P. Story}]{http://www.acrotex.net}
+\end{Verbatim}
+Notice the use of \cs{n} to force a new line. The result are shown in the margin.%
+\qrCode[margin,margprior=\hfill\raisebox{2.5\baselineskip},widthTo=0.75in,contents={This is my home website, go there, everyone does.\n\n
+D. P. Story}]{http://www.acrotex.net}
+\end{description}
+
+\subsection{Examples of QR Code symbols} %\previewtrue
+
+We present several examples of various sizes and content. Other examples are
+found in the sample file \texttt{qrc-demo1.tex}.
+\bVerb\def\sz{1in}\takeMeasure{\string\qrCode\darg{http://www.acrotex.net}}%
+\noindent\begin{minipage}[t]{\sz+2bp}\kern0pt
+\qrCode{http://www.acrotex.net}
+\end{minipage}\hfill\begin{minipage}[t]{\linewidth-\sz-6pt-2bp}\kern0pt
+\textbf{A URL to a web page}
+\begin{Verbatim}[commandchars=!()]
+\qrCode{http://www.acrotex.net}
+\end{Verbatim}
+No \texttt{size} key is given, so this is a small, a maximum of 75 characters, its dimension
+is 1in.
+\end{minipage}\eVerb
+\bVerb\def\sz{1in}\takeMeasure{\string\qrCode\darg{mailto:dpstory@acrotex.net}}%
+\noindent\begin{minipage}[t]{\sz+2bp}\kern0pt\centering
+\qrCode[size=small,widthTo=0.75in]{mailto:dpstory@acrotex.net}
+\end{minipage}\hfill\begin{minipage}[t]{\linewidth-\sz-6pt-2bp}\kern0pt
+\textbf{An email address}
+\begin{Verbatim}[commandchars=!(),fontsize=\small]
+\qrCode[size=small,widthTo=.75in]{mailto:dpstory@acrotex.net}
+\end{Verbatim}
+\medskip
+The \texttt{size} key is explicitly set to \texttt{small} (optional), a
+maximum of 75 characters, its dimension is 0.75in.
+\end{minipage}\eVerb\smallskip
+
+In addition to \texttt{qrc-demo1.tex}, there are two `advanced' files \texttt{qrc-demo2.tex} and
+\texttt{qrc-demo3.tex}, which I'm sure you'll enjoy.
+
+
+\section{My retirement}
+
+
+\newtopic
+Now, I simply must get back to it. \dps
+
+\end{document}
diff --git a/texmf-dist/source/latex/qrcstamps/qrcstamps.dtx b/texmf-dist/source/latex/qrcstamps/qrcstamps.dtx
new file mode 100644
index 00000000..fea0309f
--- /dev/null
+++ b/texmf-dist/source/latex/qrcstamps/qrcstamps.dtx
@@ -0,0 +1,276 @@
+%\iffalse
+% makeindex -s gglo.ist -o qrcstamps.gls qrcstamps.glo
+% makeindex -s gind.ist -o qrcstamps.ind qrcstamps.idx
+%<*copyright>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% qrcstamps.sty package, %%
+%% Copyright (C) 2017 %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</copyright>
+%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+%<package>\ProvidesPackage{qrcstamps}
+%<package> [2018/06/02 v1.0 qrcstamps: Create QR codes using stamps]
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{xcolor}
+\usepackage[colorlinks,hyperindex=false]{hyperref}
+%\usepackage{qrcstamps}
+%\pdfstringdefDisableCommands{\let\\\textbackslash}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\gdef\brpr#1{\texttt{\char123\relax#1\char125\relax}}
+\let\darg\brpr
+\let\env\texttt
+\let\opt\texttt
+\let\app\textsf
+\let\pkg\textsf
+\def\visispace{\symbol{32}}
+\def\ameta#1{\ensuremath{\langle\textit{\texttt{#1}}\rangle}}
+\def\meta#1{\textsl{\texttt{#1}}}
+\def\SUB#1{\ensuremath{{}_{\mbox{\scriptsize\ttfamily#1}}}}
+%\def\cs#1{\texttt{\bslash#1}}
+\DeclareRobustCommand{\tmspace}[3]{%
+ \ifmmode\mskip#1#2\else\kern#1#3\fi\relax}
+\renewcommand{\,}{\tmspace+\thinmuskip{.1667em}}
+\let\thinspace\,
+\renewcommand{\!}{\tmspace-\thinmuskip{.1667em}}
+\let\negthinspace\!
+\renewcommand{\:}{\tmspace+\medmuskip{.2222em}}
+\let\medspace\:
+\newcommand{\negmedspace}{\tmspace-\medmuskip{.2222em}}
+\renewcommand{\;}{\tmspace+\thickmuskip{.2777em}}
+\let\thickspace\;
+\newcommand{\negthickspace}{\tmspace-\thickmuskip{.2777em}}
+\makeatletter
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}
+ {\normalfont\normalsize\bfseries}}
+\renewenvironment{quote}[1][]
+ {\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\rghtm\@empty\else\def\rghtm{\rightmargin\leftmargin}\fi
+ \list{}{\rghtm} %{\rightmargin\leftmargin}%
+ \item\relax}
+ {\endlist}
+\makeatother
+\InputIfFileExists{aebdocfmt.def}{\PackageInfo{qrcstamps}{Inputting aebdocfmt.def}}
+ {\def\IndexOpt{\DescribeMacro}\def\IndexKey{\DescribeMacro}\let\setupFullwidth\relax
+ \PackageInfo{qrcstamps}{aebdocfmt.def cannot be found}}
+\begin{document}
+\def\CMD#1{\textbackslash#1}
+ \GetFileInfo{qrcstamps.sty}
+ \title{\textsf{qrcstamps}: Create QR codes using stamps}
+ \author{D. P. Story\\
+ Email: \texttt{dpstory@acrotex.net}}
+ \date{processed \today}
+ \maketitle
+ \tableofcontents
+ \let\Email\texttt
+ \DocInput{qrcstamps.dtx}
+\IfFileExists{\jobname.ind}{\newpage\setupFullwidth\par\PrintIndex}{\paragraph*{Index} The index goes here.\\Execute
+ \texttt{makeindex -s gind.ist -o qrcstamps.ind qrcstamps.idx}\\on the command line and recompile
+ \texttt{qrcstamps.dtx}.}
+\IfFileExists{\jobname.gls}{\PrintChanges}{\paragraph*{Change History} The list of changes goes here.\\Execute
+ \texttt{makeindex -s gglo.ist -o qrcstamps.gls qrcstamps.glo}\\on the command line and recompile
+ \texttt{qrcstamps.dtx}.}
+\end{document}
+%</driver>
+% \fi
+% \MakeShortVerb{|}
+%
+% \InputIfFileExists{aebdonotindex.def}{\PackageInfo{web}{Inputting aebdonotindex.def}}
+% {\PackageInfo{web}{cannot find aebdonotindex.def}}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% \section{Description}
+% This package attempts to create barcodes, at least the ones supported by Acrobat: PDF417,
+% QR Code, Data Matrix. Acrobat has a barcode field that can be created in the standard way using
+% \pkg{eforms}, but it does not work because the barcode renderer is never called to create the image
+% for the barcode. Bummer.
+%
+% The approach we take was suggested to me by Thom Parker, through personal communication, through
+% \href{https://acrobatusers.com/tutorials/print/dynamic_stamp_secrets}{his article} on \href{https://acrobatusers.com/}{AcrobatUser.com}
+% and his book on \href{https://www.pdfscripting.com/public/All-About-PDF-Stamps-in-Acrobat-and-Paperless-Workflows-The-Book.cfm}{PDF Stamps}.
+% The idea is to create \emph{dynamic stamps} whose appearances are barcodes, such as a QR symbol.
+%
+% In this version, we concentrate of the QR Code symbology. Whereas PDF417 and Data Matrix symbology may
+% be created in the same way, there seems no need for either of these two. A QR Code symbology can be
+% read by the scanners available on most mobile phones today. In that context, the symbology often contains
+% an URL that can be scanned by a persons mobile, after which time, he (or she) may visit that web site without
+% having to physically type in the URL address.
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+% \end{macrocode}
+% \section{Documentation and Code}
+% The \IndexOpt{scandoc}\opt{scandoc} option calls some doc assembly JavaScript to scan the document
+% for barcode stamps, this may not be necessary, depending on the version of Acrobat you have.
+% \begin{macrocode}
+\DeclareOptionX{scandoc}{\let\grc@InputScanDoc\qr@scanDoc}
+% \end{macrocode}
+% During document development, you don't what to scan the newly created PDF after you build it to,
+% perhaps, edit the text. In this case, use the \IndexOpt{!scandoc}\opt{!scandoc} option. You want to scan the document when you build the document for the last time
+% before publishing it. Be sure to save the document using the SaveAs menu item. This saves the
+% stamp appearances (symbology in this case) as part of the document.
+% \begin{macrocode}
+\DeclareOptionX{!scandoc}{\let\grc@InputScanDoc\relax}
+% \end{macrocode}
+% The default is not to scan the document. Remember, the final document must be scanned; that is,
+% it must be build with the \opt{scandoc} option in effect.
+% \begin{macrocode}
+\let\grc@InputScanDoc\relax
+\def\qr@scanDoc{\InputIfFileExists{scandoc-grc.def}{\PackageInfo{qrcstamps}
+ {Inputting the scandoc-grc.def file}}
+ {\PackageWarning{qrcstamps}{Cannot find the file scandoc-grc.def}}}
+% \end{macrocode}
+% \leavevmode\IndexOpt{basename}\hspace{-\marginparsep}\texttt{=\ameta{name}} sets the base name of the barcode annotation.
+% The form of the name is \texttt{\ameta{basename}\_\ameta{size}}. The default value
+% of \opt{basename} is \texttt{basename=AeBQRC}. This option need never be specified unless
+% a package developer creates his own custom barcode fields and stamps. To reference these new
+% stamps, the \texttt{basename} would have to be specified, unique that collection of stamps.
+% \begin{macrocode}
+\DeclareOptionX{basename}{\def\QRBase{#1}}
+\def\QRBase{AeBQRC}
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{insdljs}}
+% \end{macrocode}
+% \begin{macrocode}
+\ProcessOptionsX
+% \end{macrocode}
+% The package used here is \pkg{annot\_pro}, version dated 2017/06/06. I made a minor
+% modification of \pkg{annot\_pro} to accommodate \cs{qrcstamps}.
+% \begin{macrocode}
+\RequirePackage{annot_pro}[2017/06/06]
+\ifx\grc@InputScanDoc\relax\else\let\execjs=y\fi
+% \end{macrocode}
+% \subsection{The \texorpdfstring{\protect\cs{qrCode}}{\textbackslash{qrCode}} command}
+% We develop the stamp annotation for a QR barcode.
+% The command \cs{qrCode}, defined below, uses \cs{annotpro} from \pkg{annot\_pro}, and
+% as such, its optional argument takes the same options as \cs{annotpro}. However,
+% we add two new options, available only within the options list of \cs{qrCode}.
+% modification of \pkg{annot\_pro} to accommodate \cs{qrcstamps}.\medskip
+%
+% \noindent The \IndexKey{size}\texttt{size} key takes one of three values
+% \texttt{small}, \texttt{medium}, and \texttt{large}.
+% \begin{itemize}
+% \item \texttt{size=small} produces a stamp that holds at most 75 characters
+% \item \texttt{size=medium} produces a stamp that holds at most 250 characters
+% \item \texttt{size=small} produces a stamp that holds at most 500 characters
+% \end{itemize}
+% The choice of \texttt{size} should be the best fit for the data you provide \cs{qrCode}.
+% \begin{macrocode}
+\define@choicekey+{annotprostampQR}{size}[\val\nr]{%
+small,medium,large}[small]{\ifcase\nr\relax
+ \def\apstamp@@size{Small}\def\qrc@def@W{1in}\or
+ \def\apstamp@@size{Med}\def\qrc@def@W{1.5in}\or
+ \def\apstamp@@size{Large}\def\qrc@def@W{2in}\else
+ \def\apstamp@@size{Small}\def\qrc@def@W{1in}\fi}%
+{\PackageWarning{qrcstamps}{Invalid choice of `size=#1'\MessageBreak
+ Permissible values are small, medium, large}}
+\def\apstamp@@size{Small}
+% \end{macrocode}
+% \leavevmode\IndexKey{allowresize}\hspace{-\marginparsep}\texttt{=\ameta{\upshape{true\string|false}}}
+% The \texttt{allowresize} allows you to resize and move the stamp.
+% By default, the stamp (qr code symbology) cannot be resized or moved.
+% \begin{macrocode}
+\define@boolkey{annotprostampQR}{allowresize}[true]{}
+% \end{macrocode}
+% \leavevmode\IndexKey{basename}\hspace{-\marginparsep}\texttt{=\ameta{name}}
+% The \texttt{basename} key allows you to give a \ameta{name} to the stamp you want to use
+% \emph{locally}. It's unlikely you are using more than one barcode stamp collection, so this option
+% is normally not used, but just in case, it is here. Specifying a value for the key \texttt{basename}
+% overrides the choice for the option \texttt{basename}.
+% \begin{macrocode}
+\define@key{annotprostampQR}{basename}[\QRBase]{\edef\QRBase{#1}}
+% \end{macrocode}
+% \leavevmode\IndexKey{contents}\hspace{-\marginparsep}\texttt{=\ameta{text}}
+% It's unlikely you'll want to include a text message as part of your stamp, but just in
+% case, we previde the \texttt{contents} key.
+% \begin{macrocode}
+\define@key{annotprostampQR}{contents}[]{\long\def\qrc@contents{#1}}
+\let\qrc@contents\@empty
+% \end{macrocode}
+% \begin{macro}{\qrCode}\hspace{-\marginparsep}\,\texttt{[\ameta{options}]\darg{\ameta{content}}}
+% The \cs{qrCode} command is the one that produces the QR Code stamp symbol, not as a barcode field,
+% but as an annotation stamp. For printed material, the stamps are flattened and appear as you expect
+% them. The \ameta{options} may be any option for a stamp annotation as produced by \cs{annotpro}
+% plus the options \texttt{size} and \texttt{allowresize}. The required argument \ameta{content}
+% is the text you want the qr barcode symbology to represent. Usually its an URL.
+% \begin{macrocode}
+\newcommand\qrCode[2][]{\begingroup\def\n{\string\n}%
+ \def\apstamp@@size{Small}\def\qrc@def@W{1in}%
+ \setkeys*{annotprostampQR}{#1}%
+ \annotpro*[widthTo=\qrc@def@W,#1,type=stamp,
+ \ifKV@annotprostampQR@allowresize\else readonly\fi,
+ title=QRC,subject={#2},%
+ name=\#\QRBase_\apstamp@@size]{\qrc@contents}\endgroup}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</package>
+%<*scandoc>
+% \end{macrocode}
+% \subsection{Document assembly}
+% The document assembly code is executed when the \texttt{scandoc} option is used. It is executed
+% then the document is first opened.
+% \begin{macrocode}
+\begin{execJS}{scan4qrc}
+var aBCStamps=new Array();
+if (typeof scancomplete=="undefined") {
+ var scancomplete=false,annots,isStamp,isHashtag;
+ this.syncAnnotScan();
+ for (var p=0; p<this.numPages; p++) {
+ annots=this.getAnnots(p);
+ if (annots!=null) {
+ for (var i=0; i<annots.length; i++) {
+% \end{macrocode}
+% At this time, we search only for annots of type \texttt{"Stamp"} and ones whose \texttt{AP} key
+% has an entry beginning with `\texttt{\#}'. Once found, we push it (the page number)
+% onto the \texttt{aBCStamps} array.
+% \begin{macrocode}
+ isStamp=(annots[i].type=="Stamp");
+ isHashtag=(annots[i].AP.indexOf("\#")==0);
+ if ( isStamp && isHashtag ) {
+ aBCStamps.push(p);
+ break;
+ }
+ }
+ }
+ }
+}
+QRCscrollPage.index=0;
+function QRCscrollPage() {
+% \end{macrocode}
+% We go to the page where each stamp of the type we are interested in. Opening the page
+% causes \app{Acrobat} to create an appearance for the stamp.
+% \begin{macrocode}
+ if (QRCscrollPage.index<aBCStamps.length) {
+ this.pageNum=aBCStamps[QRCscrollPage.index];
+ QRCscrollPage.index+=1;
+ } else {
+ app.clearInterval(qrcTO);
+ scancomplete=true;
+ this.pageNum=0;
+ }
+}
+if (aBCStamps.length>0)
+ var qrcTO=app.setInterval("QRCscrollPage()", 5);
+\end{execJS}
+%</scandoc>
+%<*package>
+% \end{macrocode}
+% Input the \texttt{scandoc-grc.def} code, if the option \texttt{scandoc} is in effect.
+% \begin{macrocode}
+\grc@InputScanDoc
+%</package>
+% \end{macrocode}
+\endinput
diff --git a/texmf-dist/source/latex/qrcstamps/qrcstamps.ins b/texmf-dist/source/latex/qrcstamps/qrcstamps.ins
new file mode 100644
index 00000000..98f90b82
--- /dev/null
+++ b/texmf-dist/source/latex/qrcstamps/qrcstamps.ins
@@ -0,0 +1,59 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 2017-2018 D. P. Story
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2018/06/02}
+\def\batchfile{qrcstamps.ins}
+
+\input docstrip
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+
+\generate
+{%
+ \file{qrcstamps.sty}{\from{qrcstamps.dtx}{copyright,package}}
+ \file{scandoc-grc.def}{\from{qrcstamps.dtx}{copyright,scandoc}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/texmf-dist/source/latex/qrcstamps/stamps/qrc-stamps.pdf b/texmf-dist/source/latex/qrcstamps/stamps/qrc-stamps.pdf
new file mode 100644
index 00000000..fe608651
--- /dev/null
+++ b/texmf-dist/source/latex/qrcstamps/stamps/qrc-stamps.pdf
@@ -0,0 +1,272 @@
+%PDF-1.6 %
+11 0 obj <</AA<<>>/AcroForm 24 0 R/Metadata 8 0 R/Names 13 0 R/OpenAction 12 0 R/PageLabels 5 0 R/PageLayout/SinglePage/PageMode/UseNone/Pages 7 0 R/Type/Catalog/ViewerPreferences<<>>>> endobj 24 0 obj <</CO[25 0 R 26 0 R 27 0 R]/DA(/Helv 0 Tf 0 g )/DR<</Encoding<</PDFDocEncoding 28 0 R>>/Font<</Helv 29 0 R/ZaDb 30 0 R>>>>/Fields[25 0 R 26 0 R 27 0 R]>> endobj 8 0 obj <</Length 3491/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c015 84.159810, 2016/09/10-02:41:30 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
+ <pdf:Producer>Acrobat Distiller 18.0 (Windows)</pdf:Producer>
+ <pdf:Keywords/>
+ <xmp:CreatorTool>The AcroTeX eDucation Bundle</xmp:CreatorTool>
+ <xmp:ModifyDate>2018-06-02T07:08:33-05:00</xmp:ModifyDate>
+ <xmp:CreateDate>2018-06-02T07:08:26Z</xmp:CreateDate>
+ <xmp:MetadataDate>2018-06-02T07:08:33-05:00</xmp:MetadataDate>
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">AeB QR Codes</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li>D. P. Story</rdf:li>
+ </rdf:Seq>
+ </dc:creator>
+ <xmpMM:DocumentID>uuid:88d32fc1-0fb3-4a92-af6d-0c1d41b96d23</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:4b1145e8-79f0-4ab5-9a21-d596d355590f</xmpMM:InstanceID>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
+endstream endobj 13 0 obj <</Dests 1 0 R/JavaScript 31 0 R/Pages 32 0 R>> endobj 12 0 obj <</JS(;)/S/JavaScript>> endobj 5 0 obj <</Nums[0 6 0 R]>> endobj 7 0 obj <</Count 4/Kids[14 0 R 33 0 R 34 0 R 35 0 R]/Type/Pages>> endobj 14 0 obj <</AA<</O<</JS(if\(typeof _bInsdljsload1 == "undefined"\)\r\n \( app.viewerVersion > 8 \) ? aebTrustedFunctions\( this, aebImportAnFDF, "calscript.fdf"\) : this.importAnFDF\("calscript.fdf"\);\r\nif\(typeof _docassembly == "undefined"\)\r\n \( app.viewerVersion > 8 \) ?\ aebTrustedFunctions\( this, aebImportAnFDF, "docassembly.fdf"\) : this.importAnFDF\("docassembly.fdf"\);\r\n)/S/JavaScript>>>>/Contents 17 0 R/CropBox[0 0 336 268]/MediaBox[0 0 612 792]/Parent 7 0 R/Resources 15 0 R/Rotate 0/Type/Page>> endobj 33 0 obj <</Annots 36 0 R/Contents 37 0 R/CropBox[0.0 0.0 72.0 72.0]/MediaBox[0.0 0.0 72.0 72.0]/Parent 7 0 R/Resources<<>>/Rotate 0/Type/Page>> endobj 34 0 obj <</Annots 38 0 R/Contents 39 0 R/CropBox[0.0 0.0 108.0 108.0]/MediaBox[0.0 0.0 108.0 108.0]/Parent 7 0 R/Resources<<>>/Rotate 0/Type/Page>> endobj 35 0 obj <</Annots 40 0 R/Contents 41 0 R/CropBox[0.0 0.0 144.0 144.0]/MediaBox[0.0 0.0 144.0 144.0]/Parent 7 0 R/Resources<<>>/Rotate 0/Type/Page>> endobj 40 0 obj [25 0 R] endobj 41 0 obj <</Length 0>>stream
+
+endstream endobj 25 0 obj <</AA<</C 42 0 R>>/AP<</N 43 0 R>>/DA(/Helv 12 Tf 0 g)/DataPrep 0/F 4/FT/Tx/Ff 4198405/MK<</BG[1.0]>>/P 35 0 R/PMD 44 0 R/Rect[0.0 0.185837 143.814 144.0]/Subtype/Widget/T(AeBQRC_Large)/Type/Annot/V(http://www.acrotex.net/ABCDEFG/ABCDEFGHI/JKLMNOPQR/abcdefghi/jklmnopqr/123456789/ABCDEFGHI/JKLMNOPQR/http://www.acrotex.net/ABCDEFG/ABCDEFGHI/JKLMNOPQR/abcdefghi/jklmnopqr/123456789/ABCDEFGHI/JKLMNOPQR/http://www.acrotex.net/ABCDEFG/ABCDEFGHI/JKLMNOPQR/ab\ cdefghi/jklmnopqr/123456789/ABCDEFGHI/JKLMNOPQR/http://www.acrotex.net/ABCDEFG/ABCDEFGHI/JKLMNOPQR/abcdefghi/jklmnopqr/123456789/ABCDEFGHI/JKLMNOPQR/http://www.acrotex.net/ABCDEFG/ABCDEFGHI/JKLMNOPQR/abcdefghi/jklmnopqr/123456789/ABCDEFGHI/JKLMN)>> endobj 44 0 obj <</Caption()/ECC 0/Height 1.99742/Resolution 300.0/Symbology/QRCode/Type/PaperMetaData/Version 1/Width 1.99742/XSymWidth 7>> endobj 43 0 obj <</BBox[0.0 0.0 143.76 143.76]/FormType 1/Length 41/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ProcSet[/PDF]/XObject<</PmdIm30 45 0 R>>>>/Subtype/Form/Type/XObject>>stream
+q
+143.76 0 0 143.76 0 0 cm
+/PmdIm30 Do
+Q
+
+endstream endobj 45 0 obj <</BitsPerComponent 1/ColorSpace/DeviceGray/Filter[/FlateDecode]/Height 599/Length 2010/Name/PmdIm30/Subtype/Image/Type/XObject/Width 599>>stream
+H1L Er<GQ8!5f^lh>o%uwuuuuuuuuuuu.m~ ?avW,'b7QP;Nqp DkD]o/zʠVr(8RBzHI7%*b`fX0 %!C%cFEy- q\hv6ʵqPxa8x҅x jQQɸ}o֨2Y>h;[E}?82<evK5(
+.d/\DbEXۨ2(՝Ql:ŰԜSP' *[U %/`($ˉ]Vm;SQlxjT!TD8)4HƦ#ԕOU
+Ÿ]WH+N3ҨRFGL|\zэFBMZrqJ3ڏ+f vLHo~+6ԕ O<jp]aL5
+)5p˴\xCXA<UGJmT#jplSƀ]e'V'KW:4~>E+r[dMU)uy{4xmڥ'g"b^QG:%$C ,|jTI ܧ(w/Iި:(0p({ڌ+l OrNFӠU Mŝ@.@JRR}6e][0ʒRB6h:>J{#`4*_~4('aIh: :[~ tFU@AWSI9^4^l'[4̧U
+4-iiNFB}}B`PO+h5JBB1O?hP&֨2(ȸ!pNM'ΰar 5j}!0ˋg8W}Rl9]R*>
+ b) ])E"m?utԓ9}VL]%(3Cc]5p'P=Tƴ  ?M<9VqF\''V#kbCQG1`5F+}&eW5xQPLs@B'}*ѢD;6(LoAb`<(!̥kȌQuPc}TvA#xQP>7uL47窉I^2jfғ3My&;3nQF94FMvK_C&PʠV a %aXF9=w|TGDQePtU1%$d9ը>`*Jp*)R*%$g[zUAt%[cx%Q~jT%G1rt5[ '[`MUB)"\iP_2n`O5]kmT!ZFf)5Z=dulpl5І$*k褱0#NQGGT8&t%3 {LU
+%NN\ cޢbpЄd U
+ƃ[7 oJs9ɕ`L7}N~Q$QRwU.L F 2dZI!6*N&PM <31h,/lhʠ30]VP\<J+tZC?T>:r4
+
+Sd8rp<0E8mD~(F?ڨ:(4Pä$&{. -DG]{ biF+5'ģ3hmT 71rI] 뒶sxQeP. E[TE~ob,_vjԡQT< gzA>YOT|ΫF&YK-i%IcJ|Fd$LVek('*WT
+7=kl IߺjT-j) 9d24yRBbuBKU5t!vux˘= JB<}L2[$07ʱqR#(IJDQ9dPQE삙^1O&$AѨ5**R 0
+endstream endobj 42 0 obj <</JS(qrCalc\('Large'\))/S/JavaScript>> endobj 38 0 obj [26 0 R] endobj 39 0 obj <</Length 0>>stream
+
+endstream endobj 26 0 obj <</AA<</C 46 0 R>>/AP<</N 47 0 R>>/DA(/Helv 12 Tf 0 g)/DataPrep 0/F 4/FT/Tx/Ff 4198405/MK<</BG[1.0]>>/P 34 0 R/PMD 48 0 R/Rect[0.0 0.139847 110.037 109.498]/Subtype/Widget/T(AeBQRC_Med)/Type/Annot/V(http://www.acrotex.net/abcdefghijklmnopqrstuvwxyz/http://www.acrotex.net/abcdefghijklmnopqrstuvwxyz/http://www.acrotex.net/abcdefghijklmnopqrstuvwxyz/http://www.acrotex.net/abcdefghijklmnopqrstuvwxyz/http://www.acrotex.net/abcdefghijklmnopqrstuvwxyz/)>> endobj 48 0 obj <</Caption()/ECC 0/Height 1.51886/Resolution 300.0/Symbology/QRCode/Type/PaperMetaData/Version 1/Width 1.52829/XSymWidth 7>> endobj 47 0 obj <</BBox[0.0 0.0 109.92 109.44]/FormType 1/Length 41/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ProcSet[/PDF]/XObject<</PmdIm11 49 0 R>>>>/Subtype/Form/Type/XObject>>stream
+q
+109.92 0 0 109.44 0 0 cm
+/PmdIm11 Do
+Q
+
+endstream endobj 49 0 obj <</BitsPerComponent 1/ColorSpace/DeviceGray/Filter[/FlateDecode]/Height 456/Length 1293/Name/PmdIm11/Subtype/Image/Type/XObject/Width 458>>stream
+H=X " d ,KRX!e[I\H=D%4Wwŋ/<w޽4YOq{ss_-xLjw=4b'%Cmq<1
+/CxzjhrףͱFy٥Iws֕ͩ eːO]'yM֓X3,!m؅+K4$NfxM0ߞ~&ra֜A)LDvd1I)+mLF[OMphDYD1epR&l U҂67^BOF䙼HݍMMJz 'd9h԰qf'=SsMPi6wMFOG3Nqhf..qd&L(ze>ሧ}4YF7%%%ԜIVO3MةH]UӤ zReMd1gZմxROD&"mQÊr FN`=[EL@$=Qs8,baj2JsS# =6Ohұ\ԑ }$bAϺ{k' ~M ޿d! d-G3 |& I_4g O 'M?dMۨl]vVbMV@A.`n6y&H kf6 `AAQuTAqv}z_u$Ԩt Hw /=a`0,'Y15t?M')V֎eSQdy9+}MYSc":4oq4YOšuṣHu^MBhl*ĵ'@֝h|KAKޗqb
+=<t 1Ҍ5
+b !og
+#!}ɛ<4z2-h#@
+^.MX<w * u+ν5YG-p'SۜG=m&+Ixj.fۚfچk]M֑4SO:a8lCSyIϛ.A$P!kYJ&3=Яd (f9|&=?.M\<7ɪ3z(Ll R&@ .<5e;5y
+endstream endobj 46 0 obj <</JS(qrCalc\('Med'\))/S/JavaScript>> endobj 36 0 obj [27 0 R] endobj 37 0 obj <</Length 0>>stream
+
+endstream endobj 27 0 obj <</AA<</C 50 0 R>>/AP<</N 51 0 R>>/DA(/Helv 12 Tf 0 g)/DataPrep 0/F 4/FT/Tx/Ff 4198405/MK<</BG[1.0]>>/P 33 0 R/PMD 52 0 R/Rect[-1.25307 -0.43692 73.16 72.5301]/Subtype/Widget/T(AeBQRC_Small)/Type/Annot/V(http://www.acrotex.net/ABCDEFG/ABCDEFGHI/JKLMNOPQR/abcdefghi/jklmnopqr/1234)>> endobj 52 0 obj <</Caption()/ECC 0/Height 1.01343/Resolution 300.0/Symbology/QRCode/Type/PaperMetaData/Version 1/Width 1.03351/XSymWidth 7>> endobj 51 0 obj <</BBox[0.0 0.0 74.4 72.96]/FormType 1/Length 38/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ProcSet[/PDF]/XObject<</PmdIm12 53 0 R>>>>/Subtype/Form/Type/XObject>>stream
+q
+74.4 0 0 72.96 0 0 cm
+/PmdIm12 Do
+Q
+
+endstream endobj 53 0 obj <</BitsPerComponent 1/ColorSpace/DeviceGray/Filter[/FlateDecode]/Height 304/Length 509/Name/PmdIm12/Subtype/Image/Type/XObject/Width 310>>stream
+HW@[!%JKs).a_Ҟ0|?gtfeիWߨ{2<\G^z%}@JƯq ~A0J
+F:C:o gjJKRV[>hVf X޶}`<i\᦯f?K\elq¨Q˧UbH6HFMV1cXbǛl ?ֲ&|6#rJ]C7hL#֦Ju(2e^wWk"}rgtNY>xJۍ0ʤw1V,3:*X:HKyb
+:6IY]UY.01;^}601Z5`1h{tI5(0?؆ЍkHR+!(BSⳉč|3q7#KŕAR݈q$kacl:} ST?HRK#L"
+Ÿe+FիW?Y_
+endstream endobj 50 0 obj <</JS(qrCalc\('Small'\))/S/JavaScript>> endobj 17 0 obj <</Filter/FlateDecode/Length 163>>stream
+hd0 E|T]KB0@! ]ZPXedFC?E֠/ "20LdBے@[J%(ܽCd30KҜHrݏ۫"])Oμ2UU@A;^ۋ[ TV:_utnhW,^
+endstream endobj 15 0 obj <</ExtGState<</GS1 18 0 R>>/Font<</F1 16 0 R>>/ProcSet[/PDF/Text]>> endobj 16 0 obj <</BaseFont/CODEHB+CMSSBX10/Encoding 19 0 R/FirstChar 44/FontDescriptor 21 0 R/LastChar 147/Subtype/Type1/ToUnicode 22 0 R/Type/Font/Widths[306 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 733 703 367 367 367 367 367 367 367 367 581 978 367 367 367 794 703 611 367 367 367 367 367 367 367 367 367 367 367 367 367 525 367 489 561 511 367 550 367 367 367 367 256 867 561 550 367 367 372 422 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 367 586]>> endobj 19 0 obj <</Differences[44/comma 66/B/C 76/L/M 81/Q/R/S 97/a 99/c/d/e 103/g 108/l/m/n/o 114/r/s 147/fi]/Type/Encoding>> endobj 21 0 obj <</Ascent 693/CapHeight 688/CharSet(/space/S/m/a/l/comma/M/e/d/n/L/r/g/Q/R/C/o/B/c/fi/s)/Descent -206/Flags 262148/FontBBox[-318 -250 1099 931]/FontFile3 20 0 R/FontName/CODEHB+CMSSBX10/ItalicAngle 0/StemH 94/StemV 136/Type/FontDescriptor/XHeight 458>> endobj 22 0 obj <</Filter/FlateDecode/Length 289>>stream
+hTQn0-/Ja(E(P ck_.JwfhڧL77&)3$={ ݾn8fX@Hẹ>4Ɍp8%DtkqFA u H4Ͻ}g?[kqBכAՀF?8wQ㴩#Y&ӏppE1&'<<*Dsa"eLM !C ߌ뾕.QM|M\dlvя
+endstream endobj 20 0 obj <</Filter/FlateDecode/Length 2251/Subtype/Type1C>>stream
+hތVyPwf`ftgFxA<+ H&A0nF{3 3 D4* )%QQj6nHRQ<K6j7gd{@U]]տ}}$F$9= hc&7y/w[I,wtl6r')v*a!eIU3 7 V}K-T,yʖ?bF,$A-/FRѲ6'+S,[4? _HIAS bI,! 7Ÿ 6b!C" [n"WD(STl3Nnܚk=uD!BDբ;q7=Uq߄9-#Al iQg8ƔKr5)zI1UF -+k^9::a4 A9L/V
+}:)ԁ@}56/U30[by;4@i@:~EE0C
+|b.<"\,*J˷q\j&bOvv>WƉp/{vu=lhUҟN`-8޳i[CyUviʦ=fL|nh4LnvD==Ɠ-9IlaVce+}fIeqYvx?HEKq
+"K#yI-ضB3E{%{C"sTBkE%VW]#Q]>3`!Ox
+@>)9 smW#WLKQhFU!#֌rFk4XjdcψQUXT(=~8T"M Q{AB Ȼl*cPI&w MMtb6R`
+endstream endobj 18 0 obj <</AIS false/BM/Normal/CA 1/OP false/OPM 1/SA false/SM 0.02/SMask/None/TK true/Type/ExtGState/ca 1/op false>> endobj 6 0 obj <</S/D>> endobj 1 0 obj <</Kids[2 0 R]>> endobj 31 0 obj <</Names[(!ADBE::0050_FieldInit_AeBQRC_Large)54 0 R(!ADBE::0050_FieldInit_AeBQRC_Med)55 0 R(!ADBE::0050_FieldInit_AeBQRC_Small)56 0 R(!ADBE::0100_VersChkStrings)57 0 R(!ADBE::0100_VersChkVars)58 0 R(!ADBE::0200_VersChkCode_PMD1)59 0 R(Calculation Script for QRC Stamps)60 0 R(ExecJS docassembly)61 0 R]>> endobj 32 0 obj <</Names[(#AeBQRC_Large=QR Code \(Large, 500 Characters max\))35 0 R(#AeBQRC_Med=QR Code \(Medium, 250 Characters max\))34 0 R(#AeBQRC_Small=QR Code \(Small, 75 Characters max\))33 0 R]>> endobj 54 0 obj <</JS(if \(\(app.viewerVersion < 5\) && \(app.viewerVersion > 0\) && \(this.getField\("AeBQRC_Large"\) != null\)\)\r\n this.getField\("AeBQRC_Large"\).value = "";\r\n)/S/JavaScript>> endobj 55 0 obj <</JS(if \(\(app.viewerVersion < 5\) && \(app.viewerVersion > 0\) && \(this.getField\("AeBQRC_Med"\) != null\)\)\r\n this.getField\("AeBQRC_Med"\).value = "";\r\n)/S/JavaScript>> endobj 56 0 obj <</JS(if \(\(app.viewerVersion < 5\) && \(app.viewerVersion > 0\) && \(this.getField\("AeBQRC_Small"\) != null\)\)\r\n this.getField\("AeBQRC_Small"\).value = "";\r\n)/S/JavaScript>> endobj 57 0 obj <</JS 62 0 R/S/JavaScript>> endobj 58 0 obj <</JS 63 0 R/S/JavaScript>> endobj 59 0 obj <</JS 64 0 R/S/JavaScript>> endobj 60 0 obj <</JS 65 0 R/S/JavaScript>> endobj 61 0 obj <</JS(var _docassembly = true;)/S/JavaScript>> endobj 65 0 obj <</Filter[/FlateDecode]/Length 1025>>stream
+HW{kH?0ރ EI
+`UWr
+nHp\+r;oF??tC@ySGnS*șB's4Ch\䉓:{'>{zHkN< =ou:#D
+#2A~}%{n`%&FϬ燯%5xqv3 7&V7wzSmaMj5֟ȟ-vTZb@$BT@*"U1V6SJs,_@~7m"DrX&vFko=[$zlW[J*X8鈵c(O;vv
+̊Pg)`L&~hS ]_ڌe~
+endstream endobj 64 0 obj <</Filter[/FlateDecode]/Length 373>>stream
+Hē]K0^P/&Mցູ/ f]iRw-kqP<$DQW6EaƮ
+Wo
+endstream endobj 63 0 obj <</Filter[/FlateDecode]/Length 318>>stream
+HRJ@YB".XDP(
+M ɐGXA@rc=gã2]D{q 7Hzs' | dN>8R
+Ȇᘅ=A"eM*Y_S 8EF~mbҤ@㺓kpUN6PqxuWנ>J-Wڲ..>},eQlR- Up bX4ȳ-3Z"i>gugqm8 ta KhU4Bq\H @D=؟NH{);rE/ l
+endstream endobj 62 0 obj <</Filter[/FlateDecode]/Length 458>>stream
+HSn0 ;9%@r(&EtGChG,zo?vۡ[^|>mjX!K>ۯ+l`;q+xy 8/a՗ϟR5wW*=/.vs`D_5Ńa k*S8g=*
+!j}0Ф!wKɷwo<Pz8Mh= ~>RokQӬV MP
+41DOy!hEZyƓ JYu ʁq!CEΉ}(Q'e*k'  {(= : #zL
+endstream endobj 2 0 obj <</Limits[(Doc-Start)(page.1)]/Names[(Doc-Start)3 0 R(page.1)4 0 R]>> endobj 3 0 obj <</D[14 0 R/XYZ null 317 null]>> endobj 4 0 obj <</D[14 0 R/XYZ null 334 null]>> endobj 29 0 obj <</BaseFont/Helvetica/Encoding 28 0 R/Name/Helv/Subtype/Type1/Type/Font>> endobj 30 0 obj <</BaseFont/ZapfDingbats/Name/ZaDb/Subtype/Type1/Type/Font>> endobj 28 0 obj <</Differences[24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek/ring/tilde 39/quotesingle 96/grave 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin/fraction/guilsinglleft/guilsinglright/minus/perthousand/quotedblbase/quotedblleft/quotedblright/quoteleft/quoteright/quotesinglbase/trademark/fi/fl/Lslash/OE/Scaron/Ydieresis/Zcaron/dotlessi/lslash/oe/scaron/zcaron 160/Euro 164/currency 166/brokenbar 168/dieresis/copyright/ordfeminine 172/logicalnot/.notdef/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]/Type/Encoding>> endobj 9 0 obj <</Author(D. P. Story)/CreationDate(D:20180602070826Z)/Creator(The AcroTeX eDucation Bundle)/Keywords()/ModDate(D:20180602070833-05'00')/Producer(Acrobat Distiller 18.0 \(Windows\))/Title(AeB QR Codes)>> endobj xref
+0 66
+0000000010 65535 f
+0000016641 00000 n
+0000020502 00000 n
+0000020587 00000 n
+0000020635 00000 n
+0000004051 00000 n
+0000016617 00000 n
+0000004085 00000 n
+0000000379 00000 n
+0000022042 00000 n
+0000000023 00000 f
+0000000016 00000 n
+0000004011 00000 n
+0000003947 00000 n
+0000004158 00000 n
+0000012740 00000 n
+0000012824 00000 n
+0000012507 00000 n
+0000016491 00000 n
+0000013399 00000 n
+0000014154 00000 n
+0000013526 00000 n
+0000013795 00000 n
+0000000000 00000 f
+0000000209 00000 n
+0000005222 00000 n
+0000008642 00000 n
+0000011091 00000 n
+0000020850 00000 n
+0000020683 00000 n
+0000020773 00000 n
+0000016673 00000 n
+0000016994 00000 n
+0000004684 00000 n
+0000004836 00000 n
+0000004992 00000 n
+0000011017 00000 n
+0000011042 00000 n
+0000008568 00000 n
+0000008593 00000 n
+0000005148 00000 n
+0000005173 00000 n
+0000008512 00000 n
+0000006084 00000 n
+0000005943 00000 n
+0000006327 00000 n
+0000010963 00000 n
+0000009252 00000 n
+0000009111 00000 n
+0000009495 00000 n
+0000012451 00000 n
+0000011531 00000 n
+0000011390 00000 n
+0000011768 00000 n
+0000017198 00000 n
+0000017400 00000 n
+0000017598 00000 n
+0000017800 00000 n
+0000017844 00000 n
+0000017888 00000 n
+0000017932 00000 n
+0000017976 00000 n
+0000019972 00000 n
+0000019582 00000 n
+0000019137 00000 n
+0000018039 00000 n
+trailer
+<</Size 66/Root 11 0 R/Info 9 0 R/ID[<FDD3FC61B26D3716799E587420AB69A7><9F970F332E06B944B12048D663BCE89C>]>>
+startxref
+22261
+%%EOF
+8 0 obj <</Length 3491/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c015 84.159810, 2016/09/10-02:41:30 ">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
+ <pdf:Producer>Acrobat Distiller 18.0 (Windows)</pdf:Producer>
+ <pdf:Keywords/>
+ <xmp:CreatorTool>The AcroTeX eDucation Bundle</xmp:CreatorTool>
+ <xmp:ModifyDate>2018-06-02T07:09:04-05:00</xmp:ModifyDate>
+ <xmp:CreateDate>2018-06-02T07:08:26Z</xmp:CreateDate>
+ <xmp:MetadataDate>2018-06-02T07:09:04-05:00</xmp:MetadataDate>
+ <dc:format>application/pdf</dc:format>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">AeB QR Codes</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li>D. P. Story</rdf:li>
+ </rdf:Seq>
+ </dc:creator>
+ <xmpMM:DocumentID>uuid:88d32fc1-0fb3-4a92-af6d-0c1d41b96d23</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:5755f609-029e-481f-b331-c9d3c67cc91f</xmpMM:InstanceID>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end="w"?>
+endstream endobj 9 0 obj <</Author(D. P. Story)/CreationDate(D:20180602070826Z)/Creator(The AcroTeX eDucation Bundle)/Keywords()/ModDate(D:20180602070904-05'00')/Producer(Acrobat Distiller 18.0 \(Windows\))/Title(AeB QR Codes)>> endobj 14 0 obj <</AA<<>>/Contents 17 0 R/CropBox[0 0 336 268]/MediaBox[0 0 612 792]/Parent 7 0 R/Resources 15 0 R/Rotate 0/Type/Page>> endobj 24 0 obj <</CO[25 0 R 26 0 R 27 0 R]/DA(/Helv 0 Tf 0 g )/DR<</Encoding<</PDFDocEncoding 28 0 R>>/Font<</Helv 29 0 R/ZaDb 30 0 R>>>>/Fields[25 0 R 26 0 R 27 0 R]>> endobj 31 0 obj <</Names[(!ADBE::0050_FieldInit_AeBQRC_Large)54 0 R(!ADBE::0050_FieldInit_AeBQRC_Med)55 0 R(!ADBE::0050_FieldInit_AeBQRC_Small)56 0 R(!ADBE::0100_VersChkStrings)57 0 R(!ADBE::0100_VersChkVars)58 0 R(!ADBE::0200_VersChkCode_PMD1)59 0 R(Calculation Script for QRC Stamps)60 0 R]>> endobj xref
+0 1
+0000000000 65535 f
+8 2
+0000023737 00000 n
+0000027305 00000 n
+14 1
+0000027524 00000 n
+24 1
+0000027660 00000 n
+31 1
+0000027830 00000 n
+trailer
+<</Size 66/Root 11 0 R/Info 9 0 R/ID[<FDD3FC61B26D3716799E587420AB69A7><52324B63524C34499E766BFF70669F0F>]/Prev 22261>>
+startxref
+28125
+%%EOF
diff --git a/texmf-dist/tex/latex/qrcstamps/qrcstamps.sty b/texmf-dist/tex/latex/qrcstamps/qrcstamps.sty
new file mode 100644
index 00000000..dc83a5de
--- /dev/null
+++ b/texmf-dist/tex/latex/qrcstamps/qrcstamps.sty
@@ -0,0 +1,59 @@
+%%
+%% This is file `qrcstamps.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% qrcstamps.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% qrcstamps.sty package, %%
+%% Copyright (C) 2017 %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{qrcstamps}
+ [2018/06/02 v1.0 qrcstamps: Create QR codes using stamps]
+\RequirePackage{xkeyval}
+\DeclareOptionX{scandoc}{\let\grc@InputScanDoc\qr@scanDoc}
+\DeclareOptionX{!scandoc}{\let\grc@InputScanDoc\relax}
+\let\grc@InputScanDoc\relax
+\def\qr@scanDoc{\InputIfFileExists{scandoc-grc.def}{\PackageInfo{qrcstamps}
+ {Inputting the scandoc-grc.def file}}
+ {\PackageWarning{qrcstamps}{Cannot find the file scandoc-grc.def}}}
+\DeclareOptionX{basename}{\def\QRBase{#1}}
+\def\QRBase{AeBQRC}
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{insdljs}}
+\ProcessOptionsX
+\RequirePackage{annot_pro}[2017/06/06]
+\ifx\grc@InputScanDoc\relax\else\let\execjs=y\fi
+\define@choicekey+{annotprostampQR}{size}[\val\nr]{%
+small,medium,large}[small]{\ifcase\nr\relax
+ \def\apstamp@@size{Small}\def\qrc@def@W{1in}\or
+ \def\apstamp@@size{Med}\def\qrc@def@W{1.5in}\or
+ \def\apstamp@@size{Large}\def\qrc@def@W{2in}\else
+ \def\apstamp@@size{Small}\def\qrc@def@W{1in}\fi}%
+{\PackageWarning{qrcstamps}{Invalid choice of `size=#1'\MessageBreak
+ Permissible values are small, medium, large}}
+\def\apstamp@@size{Small}
+\define@boolkey{annotprostampQR}{allowresize}[true]{}
+\define@key{annotprostampQR}{basename}[\QRBase]{\edef\QRBase{#1}}
+\define@key{annotprostampQR}{contents}[]{\long\def\qrc@contents{#1}}
+\let\qrc@contents\@empty
+\newcommand\qrCode[2][]{\begingroup\def\n{\string\n}%
+ \def\apstamp@@size{Small}\def\qrc@def@W{1in}%
+ \setkeys*{annotprostampQR}{#1}%
+ \annotpro*[widthTo=\qrc@def@W,#1,type=stamp,
+ \ifKV@annotprostampQR@allowresize\else readonly\fi,
+ title=QRC,subject={#2},%
+ name=\#\QRBase_\apstamp@@size]{\qrc@contents}\endgroup}
+\grc@InputScanDoc
+\endinput
+%%
+%% End of file `qrcstamps.sty'.
diff --git a/texmf-dist/tex/latex/qrcstamps/scandoc-grc.def b/texmf-dist/tex/latex/qrcstamps/scandoc-grc.def
new file mode 100644
index 00000000..148cdbc9
--- /dev/null
+++ b/texmf-dist/tex/latex/qrcstamps/scandoc-grc.def
@@ -0,0 +1,55 @@
+%%
+%% This is file `scandoc-grc.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% qrcstamps.dtx (with options: `copyright,scandoc')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% qrcstamps.sty package, %%
+%% Copyright (C) 2017 %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{execJS}{scan4qrc}
+var aBCStamps=new Array();
+if (typeof scancomplete=="undefined") {
+ var scancomplete=false,annots,isStamp,isHashtag;
+ this.syncAnnotScan();
+ for (var p=0; p<this.numPages; p++) {
+ annots=this.getAnnots(p);
+ if (annots!=null) {
+ for (var i=0; i<annots.length; i++) {
+ isStamp=(annots[i].type=="Stamp");
+ isHashtag=(annots[i].AP.indexOf("\#")==0);
+ if ( isStamp && isHashtag ) {
+ aBCStamps.push(p);
+ break;
+ }
+ }
+ }
+ }
+}
+QRCscrollPage.index=0;
+function QRCscrollPage() {
+ if (QRCscrollPage.index<aBCStamps.length) {
+ this.pageNum=aBCStamps[QRCscrollPage.index];
+ QRCscrollPage.index+=1;
+ } else {
+ app.clearInterval(qrcTO);
+ scancomplete=true;
+ this.pageNum=0;
+ }
+}
+if (aBCStamps.length>0)
+ var qrcTO=app.setInterval("QRCscrollPage()", 5);
+\end{execJS}
+\endinput
+%%
+%% End of file `scandoc-grc.def'.