From 59f0335d2b030103b36a71712e10d2002eb1cf5e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 5 Jul 2018 21:48:34 +0000 Subject: hyperbar (5jul18) git-svn-id: svn://tug.org/texlive/trunk@48147 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/hyperbar/hyperbar.sty | 181 ++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/hyperbar/hyperbar.sty (limited to 'Master/texmf-dist/tex/latex/hyperbar') diff --git a/Master/texmf-dist/tex/latex/hyperbar/hyperbar.sty b/Master/texmf-dist/tex/latex/hyperbar/hyperbar.sty new file mode 100644 index 00000000000..a35d1db4318 --- /dev/null +++ b/Master/texmf-dist/tex/latex/hyperbar/hyperbar.sty @@ -0,0 +1,181 @@ +%% +%% This is file `hyperbar.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% hyperbar.dtx (with options: `package') +%% +%% Copyright (C) 2018 by Marcel Kr^^c3^^bcger +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% 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.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Marcel Kr^^c3^^bcger +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{hyperbar} + [2018/07/04 v0.1 + Add barcode form fields to hyperref for pdfTeX] +\RequirePackage{hyperref} + +\def\BarField@SetKeys{\kvsetkeys{BarField}} +\kv@set@family@handler{BarField}{\kv@processor@default{Field}{#1}{#2}} +\newcount\BarFld@barcodetype +\newcount\BarFld@symwidth +\newcount\BarFld@symfactor +\newcount\BarFld@ecc +\BarFld@barcodetype=0 +\BarFld@symwidth=6 +\BarFld@symfactor=2 +\BarFld@ecc=2 +\define@key{BarField}{pdf417}[]{% + \BarFld@barcodetype=0 +} +\define@key{BarField}{qr}[]{% + \BarFld@barcodetype=1 +} +\define@key{BarField}{datamatrix}[]{% + \BarFld@barcodetype=2 +} +\define@key{BarField}{symwidth}{% + \BarFld@symwidth=#1\relax +} +\define@key{BarField}{symfactor}{% + \BarFld@symfactor=#1\relax +} +\define@key{BarField}{ecc}{% + \BarFld@ecc=#1\relax +} +\def\qBarcodeFld{\qBarcodeFld} +\def\BarFld@barcode@set@calculate@names#1#2#3,#4{% + \ifx\qBarcodeFld#4% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\def\Fld@calculate@code{event.value = event.value + " "}% + \def\Fld@format@code{event.value="#1#3\string\\n#2"+getField("#3").valueAsString;}}% + {\BarFld@barcode@set@calculate@names + {#1#3\string\\t} + {#2"+getField("#3").valueAsString+"\string\\t}% + #4% + }% +} +\define@key{Field}{tsv}{% + \BarFld@barcode@set@calculate@names{}{}#1,\qBarcodeFld +} +\DeclareRobustCommand\BarcodeField{% + \@ifnextchar[{\@BarcodeField}{\@BarcodeField[]}% +} +%% The following is based on the TextField implementation +%% from the hyperref bundle, file hpdftex.def, with only the +%% barcode specific fields added. +\def\BarField@FlagsBarcode{% + \HyField@FlagsAnnot{barcode field}% + \bitsetReset{HyField@Ff}% + \HyField@UseFlag{Ff}{ReadOnly}% + \HyField@UseFlag{Ff}{Required}% + \HyField@UseFlag{Ff}{NoExport}% + \HyField@UseFlag{Ff}{Multiline}% + \HyField@UseFlag{Ff}{DoNotSpellCheck}% + \HyField@UseFlag{Ff}{DoNotScroll}% + \HyField@PrintFlags{Ff}{text field}% + \bitsetIsEmpty{HyField@Ff}{% + \let\Fld@flags\ltx@empty + }{% + \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}% + }% +} +\def\LayoutBarcodeField#1#2{#2} +\def\MakeBarcodeField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}} +\def\DefaultOptionsofBarcode{readonly,noexport,multiline,donotspellcheck} +\def\BarPDF@BarcodeDict{% + /Subtype/Widget% + \Fld@annotflags + \Fld@pageobjref + \Fld@annotnames + /FT/Tx% + \Fld@flags + /PMD \the\pdflastobj\space0 R% + /Q \Fld@align + /BS<>% + /DataPrep 0% + \ifcase0\ifnum\Fld@rotation=\z@ \else 1\fi + \ifx\Fld@bordercolor\relax\else 1\fi + \ifx\Fld@bcolor\relax \else 1\fi + \space + \else + /MK<<% + \ifnum\Fld@rotation=\z@ + \else + /R \Fld@rotation + \fi + \ifx\Fld@bordercolor\relax + \else + /BC[\Fld@bordercolor]% + \fi + \ifx\Fld@bcolor\relax + \else + /BG[\Fld@bcolor]% + \fi + >>% + \fi + /DA(/Helv \strip@pt\Fld@charsize\space Tf% + \ifx\Fld@color\@empty\else\space\Fld@color\fi)% + /DV(\Hy@escapestring{\Fld@default})% + /V(\Hy@escapestring{\Fld@value})% + \Fld@additionalactions +} +\def\@BarcodeField[#1]#2{% + \def\Fld@name{#2}% + \let\Fld@default\ltx@empty + \let\Fld@value\@empty + \def\Fld@width{\DefaultWidthofText}% + \def\Fld@height{\DefaultHeightofTextMultiline}% + \begingroup + \expandafter\BarField@SetKeys\expandafter{% + \DefaultOptionsofBarcode,#1% + }% + \PDFForm@Name + \BarField@FlagsBarcode + \ifFld@hidden\def\Fld@width{1sp}\fi + \ifx\Fld@value\@empty\def\Fld@value{\Fld@default}\fi + \LayoutBarcodeField{#2}{% + \leavevmode + \HyAnn@AbsPageLabel + \immediate\pdfobj{<<% + /Type/PaperMetaData% + /Version 1% + /Width \strip@pt\dimexpr\Fld@width*65536/\number\dimexpr1in\relax\relax + /Height \strip@pt\dimexpr\Fld@height*65536/\number\dimexpr1in\relax\relax + /XSymWidth \the\BarFld@symwidth + \ifcase\BarFld@barcodetype + /Symbology/PDF417% + /XSymHeight \the\numexpr\BarFld@symwidth*\BarFld@symfactor\relax + /ECC \the\BarFld@ecc + \or + /Symbology/QRCode% + /ECC \the\BarFld@ecc + \or + /Symbology/DataMatrix% + \fi + /Resolution 300.0% + >>}% + \Hy@escapeform\BarPDF@BarcodeDict + \pdfstartlink user {\BarPDF@BarcodeDict}\relax + \MakeBarcodeField{\Fld@width}{\Fld@height}\pdfendlink + \HyField@AddToFields + }% + \endgroup +} +\endinput +%% +%% End of file `hyperbar.sty'. -- cgit v1.2.3