bugs fixed

This commit is contained in:
Marc Wäckerlin
2025-11-11 15:11:28 +01:00
parent 65335f7981
commit 29ce75ecf1
22 changed files with 476 additions and 447 deletions
+476 -445
View File
@@ -7,8 +7,8 @@
% option evaluation
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=BCQ,
prefix=BCQ@
family=BCQ,
prefix=BCQ@
}
\DeclareStringOption[89mm]{paperwidth}
\DeclareStringOption[59mm]{paperheight}
@@ -28,8 +28,8 @@
\DeclareStringOption[1.0]{bgopacity} % background image opacity (1.0 = 100% visible, 0.0 = invisible), default 1.0
\DeclareStringOption[1.0]{qrbgopacity} % QR code background opacity (1.0 = white solid, 0.0 = transparent), default 1.0
\DeclareStringOption[de]{lang}
\DeclareBoolOption[false]{ioscrlf} % use CRLF line endings in vCard (iOS compatibility); default off to avoid pdfTeX issues
\DeclareBoolOption[true]{address}
\DeclareBoolOption[true]{crlf} % use CRLF line endings in vCard (iOS compatibility)
\DeclareComplementaryOption{nocrlf}{crlf}\DeclareBoolOption[true]{address}
\DeclareComplementaryOption{noaddress}{address}
\DeclareBoolOption[true]{hint}
\DeclareComplementaryOption{nohint}{hint}
@@ -94,52 +94,52 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% data registration
\newcommand\BCQ@datareset{%
\def\BCQ@data@hide{}%
\def\BCQ@data@logo{}%
\def\BCQ@data@height{}%
\def\BCQ@data@hide{}%
\def\BCQ@data@logo{}%
\def\BCQ@data@height{}%
}
\define@key{BCQ@data}{hide}[true]{%
\edef\BCQ@data@hide{#1}%
\edef\BCQ@data@hide{#1}%
}
\define@key{BCQ@data}{logo}{%
\def\BCQ@data@logo{#1}%
\def\BCQ@data@logo{#1}%
}
\define@key{BCQ@data}{height}{%
\def\BCQ@data@height{#1}%
\def\BCQ@data@height{#1}%
}
\newlength{\BCQ@companybrandingheight}
\setlength{\BCQ@companybrandingheight}{2em}
\newcommand\BCQ@applycompanyoptions{%
\csundef{Xcompanylogo}%
\csundef{Xcompanylogoheight}%
\setlength{\BCQ@companybrandingheight}{2em}%
\ifx\BCQ@data@logo\@empty\else
\let\Xcompanylogo\BCQ@data@logo
\ifx\BCQ@data@height\@empty
\def\Xcompanylogoheight{1.5em}%
\else
\edef\Xcompanylogoheight{\BCQ@data@height}%
\fi
\setlength{\BCQ@companybrandingheight}{\Xcompanylogoheight}%
\fi
\csundef{Xcompanylogo}%
\csundef{Xcompanylogoheight}%
\setlength{\BCQ@companybrandingheight}{2em}%
\ifx\BCQ@data@logo\@empty\else
\let\Xcompanylogo\BCQ@data@logo
\ifx\BCQ@data@height\@empty
\def\Xcompanylogoheight{1.5em}%
\else
\edef\Xcompanylogoheight{\BCQ@data@height}%
\fi
\setlength{\BCQ@companybrandingheight}{\Xcompanylogoheight}%
\fi
}
\newcommand\registerData[1]{%
\expandafter\newcommand\csname #1\endcsname[2][]{%
\BCQ@datareset
\edef\BCQ@data@options{##1}%
\ifx\BCQ@data@options\@empty\else
\setkeys{BCQ@data}{##1}%
\fi
\csundef{X#1@hide}%
\ifx\BCQ@data@hide\@empty\else
\edef\BCQ@data@hidetmp{\BCQ@data@hide}%
\ifdefstring{\BCQ@data@hidetmp}{false}{}{%
\expandafter\def\csname X#1@hide\endcsname{true}%
}%
\fi
\expandafter\def\csname X#1\endcsname{##2}%
\ifstrequal{#1}{company}{\BCQ@applycompanyoptions}{}%
}%
\expandafter\newcommand\csname #1\endcsname[2][]{%
\BCQ@datareset
\edef\BCQ@data@options{##1}%
\ifx\BCQ@data@options\@empty\else
\setkeys{BCQ@data}{##1}%
\fi
\csundef{X#1@hide}%
\ifx\BCQ@data@hide\@empty\else
\edef\BCQ@data@hidetmp{\BCQ@data@hide}%
\ifdefstring{\BCQ@data@hidetmp}{false}{}{%
\expandafter\def\csname X#1@hide\endcsname{true}%
}%
\fi
\expandafter\def\csname X#1\endcsname{##2}%
\ifstrequal{#1}{company}{\BCQ@applycompanyoptions}{}%
}%
}
\registerData{type}
\registerData{givennames}
@@ -181,71 +181,71 @@
% Override document \title to capture card title (original available via \carddocumenttitle)
\let\BCQ@documenttitle\title
\renewcommand\title[1]{%
\def\Xtitle{#1}%
\def\Xtitle{#1}%
}
\newcommand\carddocumenttitle[1]{%
\BCQ@documenttitle{#1}%
\BCQ@documenttitle{#1}%
}
% Special commands with optional parameters
% \logo[height=...]{file} - logo next to name, overrides logoheight option
\define@key{BCQ@logo}{height}{\def\BCQ@logoheight@local{#1}}
\newcommand\logo[2][]{
\def\Xlogo{#2}
\def\BCQ@logo@tmp{#1}%
\ifx\BCQ@logo@tmp\@empty\else
\setkeys{BCQ@logo}{#1}
\fi
\def\Xlogo{#2}
\def\BCQ@logo@tmp{#1}%
\ifx\BCQ@logo@tmp\@empty\else
\setkeys{BCQ@logo}{#1}
\fi
}
% \qrlogo[scale=...,opacity=...]{file} - logo in QR code center (scale is unitless fraction like 0.3)
\define@key{BCQ@qrlogo}{scale}{\def\BCQ@qrlogoscale@local{#1}}
\define@key{BCQ@qrlogo}{opacity}{\def\BCQ@qrbgopacity@local{#1}}
\newcommand\qrlogo[2][]{
\def\Xqrlogo{#2}
\def\BCQ@qrlogo@tmp{#1}%
\ifx\BCQ@qrlogo@tmp\@empty\else
\setkeys{BCQ@qrlogo}{#1}
\fi
\def\Xqrlogo{#2}
\def\BCQ@qrlogo@tmp{#1}%
\ifx\BCQ@qrlogo@tmp\@empty\else
\setkeys{BCQ@qrlogo}{#1}
\fi
}
% \background[scale=...,opacity=...]{file/color} - background image or color
\define@key{BCQ@background}{scale}{\def\BCQ@bgscale@local{#1}}
\define@key{BCQ@background}{opacity}{\def\BCQ@bgopacity@local{#1}}
\newcommand\background[2][]{
\def\Xbackground{#2}
\def\BCQ@background@tmp{#1}%
\ifx\BCQ@background@tmp\@empty\else
\setkeys{BCQ@background}{#1}
\fi
\def\Xbackground{#2}
\def\BCQ@background@tmp{#1}%
\ifx\BCQ@background@tmp\@empty\else
\setkeys{BCQ@background}{#1}
\fi
}
\registerData{companylogo} % content (image/object) to display instead of company text (company still in vCard)
\define@key{BCQ@companylogo}{height}{%
\def\BCQ@companylogo@height{#1}%
\def\BCQ@companylogo@height{#1}%
}
\renewcommand\companylogo[2][]{%
\def\BCQ@companylogo@height{}%
\edef\BCQ@companylogo@options{#1}%
\ifx\BCQ@companylogo@options\@empty\else
\setkeys{BCQ@companylogo}{#1}%
\fi
\def\Xcompanylogo{#2}%
\ifx\BCQ@companylogo@height\@empty
\def\Xcompanylogoheight{1.5em}%
\else
\edef\Xcompanylogoheight{\BCQ@companylogo@height}%
\fi
\setlength{\BCQ@companybrandingheight}{\Xcompanylogoheight}%
\def\BCQ@companylogo@height{}%
\edef\BCQ@companylogo@options{#1}%
\ifx\BCQ@companylogo@options\@empty\else
\setkeys{BCQ@companylogo}{#1}%
\fi
\def\Xcompanylogo{#2}%
\ifx\BCQ@companylogo@height\@empty
\def\Xcompanylogoheight{1.5em}%
\else
\edef\Xcompanylogoheight{\BCQ@companylogo@height}%
\fi
\setlength{\BCQ@companybrandingheight}{\Xcompanylogoheight}%
}
\newcommand\ifvisible[3]{%
\ifcsdef{#1}{%
\ifcsdef{#1@hide}{#3}{#2}%
}{#3}%
\ifcsdef{#1}{%
\ifcsdef{#1@hide}{#3}{#2}%
}{#3}%
}
\newcommand\conddisplay[1]{%
\ifvisible{#1}{\exec{#1}}{}%
\ifvisible{#1}{\exec{#1}}{}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -254,11 +254,11 @@
\newcommand\exec[1]{\csname #1\endcsname}
\newcommand\insa[3][]{\ifvisible{#2}{
\ifBCQ@iconleft
\ifBCQ@icon\parbox{1em}{\centering\exec{#3}}\ \fi\ifBCQ@hint{\tiny#1}\fi\ifBCQ@fill\hfill\fi\exec{#2}
\else
\ifBCQ@hint{\tiny#1\ }\fi\exec{#2}\ifBCQ@fill\hfill\fi\ifBCQ@icon\ \parbox{1em}{\centering\exec{#3}}\fi
\fi
\ifBCQ@iconleft
\ifBCQ@icon\parbox{1em}{\centering\exec{#3}}\ \fi\ifBCQ@hint{\tiny#1}\fi\ifBCQ@fill\hfill\fi\exec{#2}
\else
\ifBCQ@hint{\tiny#1\ }\fi\exec{#2}\ifBCQ@fill\hfill\fi\ifBCQ@icon\ \parbox{1em}{\centering\exec{#3}}\fi
\fi
}{}}
\newcommand\ifexists[2]{\ifcsdef{#1}{#2}{}}
\newcommand\ifboth[3]{\ifcsdef{#1}{\ifcsdef{#2}{#3}{}}{}}
@@ -268,13 +268,23 @@
% internal boxes and lengths for measuring
\newsavebox{\BCQ@namebox}
\newsavebox{\BCQ@logobox}
\newsavebox{\BCQ@companytitlebox}
\newsavebox{\BCQ@companyrightbox}
\newlength{\BCQ@logoheightdimen}
\setlength{\BCQ@logoheightdimen}{0pt}% initialize to prevent errors
\newlength{\BCQ@bgimagedimen}
\setlength{\BCQ@bgimagedimen}{0pt}
\newdimen\BCQ@companytitlewidth
\newdimen\BCQ@companyrightwidth
\newdimen\BCQ@companylineavailable
\newdimen\BCQ@companylinesum
\newif\ifBCQ@companylineneeded
\newif\ifBCQ@companytitleexists
\newif\ifBCQ@companyrightexists
\newlength{\BCQ@reservedheight}
\newlength{\BCQ@heightscale}
\newlength{\BCQ@namewidth}
\newlength{\BCQ@namecolumnwidth}
\newlength{\BCQ@logosep}
\newlength{\BCQ@logosepused}
\setlength{\BCQ@logosep}{1em}
@@ -282,161 +292,179 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% name - assemble full name from the parts, such as Xgivennames and Xfamilynames
\newcommand\personalnamevcard{%
\ifexists{Xhonoricprefix}{\Xhonoricprefix\ }%
\ifexists{Xgivennames}{\Xgivennames\ }%
\ifexists{Xadditionalnames}{\Xadditionalnames\ }%
\ifexists{Xfamilynames}{\Xfamilynames}%
\ifexists{Xhonoricsuffix}{\ \Xhonoricsuffix}%
\ifexists{Xhonoricprefix}{\Xhonoricprefix\ }%
\ifexists{Xgivennames}{\Xgivennames\ }%
\ifexists{Xadditionalnames}{\Xadditionalnames\ }%
\ifexists{Xfamilynames}{\Xfamilynames}%
\ifexists{Xhonoricsuffix}{\ \Xhonoricsuffix}%
}
\newcommand\personalname{%
\ifvisible{Xhonoricprefix}{\Xhonoricprefix\ }{}%
\ifvisible{Xgivennames}{\Xgivennames\ }{}%
\ifvisible{Xadditionalnames}{\Xadditionalnames\ }{}%
\ifvisible{Xfamilynames}{\Xfamilynames}{}%
\ifvisible{Xhonoricsuffix}{\ \Xhonoricsuffix}{}%
\ifvisible{Xhonoricprefix}{\Xhonoricprefix\ }{}%
\ifvisible{Xgivennames}{\Xgivennames\ }{}%
\ifvisible{Xadditionalnames}{\Xadditionalnames\ }{}%
\ifvisible{Xfamilynames}{\Xfamilynames}{}%
\ifvisible{Xhonoricsuffix}{\ \Xhonoricsuffix}{}%
}
\newcommand\ifhaspersonalname[2]{%
\ifvisible{Xhonoricprefix}{#1}{%
\ifvisible{Xgivennames}{#1}{%
\ifvisible{Xadditionalnames}{#1}{%
\ifvisible{Xfamilynames}{#1}{%
\ifvisible{Xhonoricsuffix}{#1}{#2}%
}%
}%
}%
}%
\ifvisible{Xhonoricprefix}{#1}{%
\ifvisible{Xgivennames}{#1}{%
\ifvisible{Xadditionalnames}{#1}{%
\ifvisible{Xfamilynames}{#1}{%
\ifvisible{Xhonoricsuffix}{#1}{#2}%
}%
}%
}%
}%
}
\newcommand\ifhaspositiontext[2]{%
\ifvisible{Xcompany}{#1}{%
\ifvisible{Xtitle}{#1}{%
\ifvisible{Xrole}{#1}{#2}%
}%
}%
\ifvisible{Xcompany}{#1}{%
\ifvisible{Xtitle}{#1}{%
\ifvisible{Xrole}{#1}{#2}%
}%
}%
}
\newcommand\ifhaspositionblock[2]{%
\ifhaspositiontext{#1}{%
\ifcsdef{Xcompanylogo}{#1}{#2}%
}%
\ifhaspositiontext{#1}{%
\ifcsdef{Xcompanylogo}{#1}{#2}%
}%
}
\newcommand\ifhaspersonalnamevcard[2]{%
\ifcsname Xhonoricprefix\endcsname
#1%
\else\ifcsname Xgivennames\endcsname
#1%
\else\ifcsname Xadditionalnames\endcsname
#1%
\else\ifcsname Xfamilynames\endcsname
#1%
\else\ifcsname Xhonoricsuffix\endcsname
#1%
\else
#2%
\fi\fi\fi\fi\fi
\ifcsname Xhonoricprefix\endcsname
#1%
\else\ifcsname Xgivennames\endcsname
#1%
\else\ifcsname Xadditionalnames\endcsname
#1%
\else\ifcsname Xfamilynames\endcsname
#1%
\else\ifcsname Xhonoricsuffix\endcsname
#1%
\else
#2%
\fi\fi\fi\fi\fi
}
% heightscale - calculate available height for text/QR
% Uses actual logo height if logo is taller than default reserved space
% This is computed as a length and stored, not a macro
\newcommand\computeheightscale{%
\setlength{\BCQ@reservedheight}{\dimexpr\ifhaspersonalname{2em}{0em}+\ifhaspositionblock{\BCQ@companybrandingheight}{0pt}\relax}%
\ifdim\BCQ@logoheightdimen>\BCQ@reservedheight
\setlength{\BCQ@heightscale}{\dimexpr\textheight-\BCQ@logoheightdimen-\ifcsdef{Xpgpfingerprint}{2em}{0em}\relax}%
\else
\setlength{\BCQ@heightscale}{\dimexpr\textheight-\BCQ@reservedheight-\ifcsdef{Xpgpfingerprint}{2em}{0em}\relax}%
\fi
\setlength{\BCQ@reservedheight}{\dimexpr\ifhaspersonalname{2em}{0em}+\ifhaspositionblock{\BCQ@companybrandingheight}{0pt}\relax}%
\ifdim\BCQ@logoheightdimen>\BCQ@reservedheight
\setlength{\BCQ@heightscale}{\dimexpr\textheight-\BCQ@logoheightdimen-\ifcsdef{Xpgpfingerprint}{2em}{0em}\relax}%
\else
\setlength{\BCQ@heightscale}{\dimexpr\textheight-\BCQ@reservedheight-\ifcsdef{Xpgpfingerprint}{2em}{0em}\relax}%
\fi
}
\newcommand\heightscale{\BCQ@heightscale}
\newcommand\companyrolestringdisplay{%
\ifvisible{Xtitle}{\Xtitle}{}%
\ifvisible{Xrole}{%
\ifvisible{Xtitle}{, }{}%
\Xrole
}{}%
\ifvisible{Xcompany}{%
\ifvisible{Xtitle}{\ \Xcompany}{%
\ifvisible{Xrole}{\ \Xcompany}{\Xcompany}%
}%
}{}%
\newcommand\companytitleblock{%
\ifvisible{Xtitle}{\Xtitle}{}%
\ifvisible{Xrole}{%
\ifvisible{Xtitle}{,\ }{}%
\Xrole
}{}%
}
\newcommand\companyrightblock{%
\ifcsdef{Xcompanylogo}{\companylogocontent}{}%
\ifvisible{Xcompany}{%
\Xcompany
\ifcsdef{Xcompanylogo}{\hspace{0.5em}}{}%
}{}%
}
\newcommand\companybrandingline{%
\ifcsdef{Xcompanylogo}{\companylogocontent}{}%
\ifhaspositiontext{%
\ifcsdef{Xcompanylogo}{\hspace{0.5em}}{}%
\companyrolestringdisplay
}{}%
\begingroup
\BCQ@companytitleexistsfalse
\ifvisible{Xtitle}{\BCQ@companytitleexiststrue}{}%
\ifvisible{Xrole}{\BCQ@companytitleexiststrue}{}%
\BCQ@companyrightexistsfalse
\ifvisible{Xcompany}{\BCQ@companyrightexiststrue}{}%
\ifcsdef{Xcompanylogo}{\BCQ@companyrightexiststrue}{}%
\ifBCQ@companytitleexists
\companytitleblock
\fi
\ifBCQ@companytitleexists
\ifBCQ@companyrightexists
\space
\fi
\fi
\ifBCQ@companyrightexists
\companyrightblock
\fi
\endgroup
}
\newcommand\companyrolestringvcard{%
\ifcsname Xtitle\endcsname
\Xtitle
\fi
\ifcsname Xrole\endcsname
\ifcsname Xtitle\endcsname , \fi
\Xrole
\fi
\ifcsname Xcompany\endcsname
\ifcsname Xtitle\endcsname
\ \Xcompany
\else
\ifcsname Xrole\endcsname
\ \Xcompany
\else
\Xcompany
\fi
\fi
\fi
\ifcsname Xtitle\endcsname
\Xtitle
\fi
\ifcsname Xrole\endcsname
\ifcsname Xtitle\endcsname ,\ \fi
\Xrole
\fi
\ifcsname Xcompany\endcsname
\ifcsname Xtitle\endcsname
\ \Xcompany
\else
\ifcsname Xrole\endcsname
\ \Xcompany
\else
\Xcompany
\fi
\fi
\fi
}
\newcommand\displayname{%
\ifhaspersonalname{\personalname}{\companybrandingline}%
\ifhaspersonalname{\personalname}{\companybrandingline}%
}
\newcommand\BCQ@appendvcardposition{%
\ifhaspersonalnamevcard{%
\ (\companyrolestringvcard)%
}{%
\companyrolestringvcard
}%
\ifhaspersonalnamevcard{%
\ (\companyrolestringvcard)%
}{%
\companyrolestringvcard
}%
}
\newcommand\BCQ@buildname{%
\ifhaspersonalnamevcard{%
\personalnamevcard
\ifcsname Xtitle\endcsname
\BCQ@appendvcardposition
\else
\ifcsname Xrole\endcsname
\BCQ@appendvcardposition
\else
\ifcsname Xcompany\endcsname
\BCQ@appendvcardposition
\fi
\fi
\fi
}{%
\companyrolestringvcard
}%
\ifhaspersonalnamevcard{%
\personalnamevcard
\ifcsname Xtitle\endcsname
\BCQ@appendvcardposition
\else
\ifcsname Xrole\endcsname
\BCQ@appendvcardposition
\else
\ifcsname Xcompany\endcsname
\BCQ@appendvcardposition
\fi
\fi
\fi
}{%
\companyrolestringvcard
}%
}
\let\BCQ@cachedname\@empty
\newcommand\BCQ@setnamecache{%
\begingroup
\edef\BCQ@tmp{\BCQ@buildname}%
\global\let\BCQ@cachedname\BCQ@tmp
\endgroup
\begingroup
\edef\BCQ@tmp{\BCQ@buildname}%
\global\let\BCQ@cachedname\BCQ@tmp
\endgroup
}
\newcommand\name{%
\ifx\BCQ@cachedname\@empty
\BCQ@buildname
\else
\BCQ@cachedname
\fi
\ifx\BCQ@cachedname\@empty
\BCQ@buildname
\else
\BCQ@cachedname
\fi
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% vcard - the content of the vcard
% newline selection: default LF (robust for qrcode). Optional CRLF if ioscrlf option set.
\ifBCQ@ioscrlf
\def\BCQ@nl{\char13\char10}% CRLF
% newline selection: default LF (robust for qrcode). Optional CRLF if crlf option set.
{\catcode`\^^M=12\gdef\BCQ@carriagereturn{^^M}}% literal CR (catcode 12)
{\catcode`\^^J=12\gdef\BCQ@linefeed{^^J}}% literal LF (catcode 12)
\ifBCQ@crlf
\def\BCQ@nl{\BCQ@carriagereturn\BCQ@linefeed}% CRLF
\else
\def\BCQ@nl{^^J}% LF only
\def\BCQ@nl{\BCQ@linefeed}% LF only
\fi
% vcard assembly (version 4.0 retained). CRLF improves iOS import robustness.
\newcommand\vcard{BEGIN:VCARD\BCQ@nl
@@ -474,95 +502,95 @@ END:VCARD\BCQ@nl}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% formatcountry - format country based on length and options
\newcommand\formatcountry{%
\ifcsdef{Xcountry}{%
\ifvisible{Xcountry}{%
\def\BCQ@shouldinline{false}%
\def\BCQ@haszipcity{false}%
\ifvisible{Xcity}{\def\BCQ@haszipcity{true}}{}%
\ifvisible{Xzip}{\def\BCQ@haszipcity{true}}{}%
% Check countryformat option
\ifdefstring{\BCQ@countryformat}{inline}{%
\def\BCQ@shouldinline{true}%
}{%
\ifdefstring{\BCQ@countryformat}{below}{%
\def\BCQ@shouldinline{false}%
}{%
% auto mode: check length
\StrLen{\Xcountry}[\BCQ@countrylen]%
\ifnum\BCQ@countrylen<4\relax%
% Short country code AND city/zip exists inline
\ifdefstring{\BCQ@haszipcity}{true}{%
\def\BCQ@shouldinline{true}%
}{}%
\fi%
}%
}%
% Output country
\ifdefstring{\BCQ@shouldinline}{true}{%
\Xcountry\ \textemdash\ \conddisplay{Xzip} \conddisplay{Xcity}%
}{%
\conddisplay{Xzip} \conddisplay{Xcity}
\ifcsdef{Xcountry}{%
\ifvisible{Xcountry}{%
\def\BCQ@shouldinline{false}%
\def\BCQ@haszipcity{false}%
\ifvisible{Xcity}{\def\BCQ@haszipcity{true}}{}%
\ifvisible{Xzip}{\def\BCQ@haszipcity{true}}{}%
% Check countryformat option
\ifdefstring{\BCQ@countryformat}{inline}{%
\def\BCQ@shouldinline{true}%
}{%
\ifdefstring{\BCQ@countryformat}{below}{%
\def\BCQ@shouldinline{false}%
}{%
% auto mode: check length
\StrLen{\Xcountry}[\BCQ@countrylen]%
\ifnum\BCQ@countrylen<4\relax%
% Short country code AND city/zip exists inline
\ifdefstring{\BCQ@haszipcity}{true}{%
\def\BCQ@shouldinline{true}%
}{}%
\fi%
}%
}%
% Output country
\ifdefstring{\BCQ@shouldinline}{true}{%
\Xcountry\ \textemdash\ \conddisplay{Xzip} \conddisplay{Xcity}%
}{%
\conddisplay{Xzip} \conddisplay{Xcity}
\Xcountry
}%
}{%
\conddisplay{Xzip} \conddisplay{Xcity}%
}%
}{
\conddisplay{Xzip} \conddisplay{Xcity}%
}%
\Xcountry
}%
}{%
\conddisplay{Xzip} \conddisplay{Xcity}%
}%
}{
\conddisplay{Xzip} \conddisplay{Xcity}%
}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% address - the address as shown in the textbox
\newcommand\address{
\conddisplay{Xpobox}
\conddisplay{Xpobox}
\conddisplay{Xextaddr}
\conddisplay{Xstreet}
\formatcountry
\conddisplay{Xregion}
\conddisplay{Xextaddr}
\conddisplay{Xstreet}
\formatcountry
\conddisplay{Xregion}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% inserttext - assemble the textbox
\newcommand\inserttext{
%\frame
{
\begin{minipage}[c][\heightscale][c]{\textpercents\textwidth}
\ifBCQ@rightalign\begin{flushright}\fi
\ifexists{printaddress}{
\ifBCQ@iconleft
\ifBCQ@icon\parbox[c]{1em}{\faMapMarker}\ \ifBCQ@fill\hfill\fi\fi
%\frame{
%\pbox[t]{\dimexpr\textwidth-2em\relax}{
\begin{varwidth}{\dimexpr\textwidth-2em\relax}
\ifBCQ@rightalign\enforceright\fi\address
\end{varwidth}
%}
%}
\else
%\pbox[t]{\dimexpr\textwidth-2em\relax}{
\begin{varwidth}{\dimexpr\textwidth-2em\relax}
\ifBCQ@rightalign\enforceright\fi\address
\end{varwidth}
%}
\ifBCQ@icon\ifBCQ@fill\hfill\fi\ \parbox[c]{1em}{\faMapMarker}\fi
\fi
\vspace{1em}
}
\insa[tel:]{Xphone}{faMobile}\insa[mailto:]{Xemail}{Email}\insa[xmpp]{Xjabber}{faCommentsO}\insa[matrix.org]{Xmatrixorg}{faCommentsO}\insa[nextcloud-id]{Xcloud}{faCloud}\insa[\protdisplay]{Xhomepage}{faHome}\insa[\protdisplay]{Xwordpress}{faWordpress}\insa[\protdisplay]{Xdrupal}{faDrupal}\insa[\protdisplay]{Xjoomla}{faJoomla}\insa[{\protprefix}\lang.wikipedia.org/wiki/]{Xwikipedia}{faWikipediaW}\insa[\protdisplay]{Xlink}{faLink}\insa[\protdisplay]{Xworld}{faGlobe}\insa[\protdisplay]{Xgit}{faGit}\insa[\protdisplay]{Xgitea}{faGithubAlt}\insa[{\protprefix}github.com/]{Xgithub}{faGithub}\insa[{\protprefix}facebook.com/]{Xfacebook}{faFacebook}\insa[{\protprefix}twitter.com/]{Xtwitter}{faTwitter}\insa[{\protprefix}youtube.com/user/]{Xyoutube}{faYoutube}\insa[{\protprefix}plus.google.com/+]{Xgoogle}{faGooglePlus}
%\frame
{
\begin{minipage}[c][\heightscale][c]{\textpercents\textwidth}
\ifBCQ@rightalign\begin{flushright}\fi
\ifexists{printaddress}{
\ifBCQ@iconleft
\ifBCQ@icon\parbox[c]{1em}{\faMapMarker}\ \ifBCQ@fill\hfill\fi\fi
%\frame{
%\pbox[t]{\dimexpr\textwidth-2em\relax}{
\begin{varwidth}{\dimexpr\textwidth-2em\relax}
\ifBCQ@rightalign\enforceright\fi\address
\end{varwidth}
%}
%}
\else
%\pbox[t]{\dimexpr\textwidth-2em\relax}{
\begin{varwidth}{\dimexpr\textwidth-2em\relax}
\ifBCQ@rightalign\enforceright\fi\address
\end{varwidth}
%}
\ifBCQ@icon\ifBCQ@fill\hfill\fi\ \parbox[c]{1em}{\faMapMarker}\fi
\fi
\vspace{1em}
}
\insa[tel:]{Xphone}{faMobile}\insa[mailto:]{Xemail}{Email}\insa[xmpp]{Xjabber}{faCommentsO}\insa[matrix.org]{Xmatrixorg}{faCommentsO}\insa[nextcloud-id]{Xcloud}{faCloud}\insa[\protdisplay]{Xhomepage}{faHome}\insa[\protdisplay]{Xwordpress}{faWordpress}\insa[\protdisplay]{Xdrupal}{faDrupal}\insa[\protdisplay]{Xjoomla}{faJoomla}\insa[{\protprefix}\lang.wikipedia.org/wiki/]{Xwikipedia}{faWikipediaW}\insa[\protdisplay]{Xlink}{faLink}\insa[\protdisplay]{Xworld}{faGlobe}\insa[\protdisplay]{Xgit}{faGit}\insa[\protdisplay]{Xgitea}{faGithubAlt}\insa[{\protprefix}github.com/]{Xgithub}{faGithub}\insa[{\protprefix}facebook.com/]{Xfacebook}{faFacebook}\insa[{\protprefix}twitter.com/]{Xtwitter}{faTwitter}\insa[{\protprefix}youtube.com/user/]{Xyoutube}{faYoutube}\insa[{\protprefix}plus.google.com/+]{Xgoogle}{faGooglePlus}
\ifBCQ@rightalign\end{flushright}\fi
\end{minipage}
\ifBCQ@rightalign\end{flushright}\fi
\end{minipage}
}
}
@@ -570,42 +598,42 @@ END:VCARD\BCQ@nl}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% insertqrcode - insert the qr-code with optional white background
\newcommand\insertqrcode{
% Use local overrides if specified, otherwise use global options
\ifcsdef{BCQ@qrbgopacity@local}{%
\edef\BCQ@qrbgopacity@used{\BCQ@qrbgopacity@local}%
}{%
\edef\BCQ@qrbgopacity@used{\BCQ@qrbgopacity}%
}%
\ifcsdef{BCQ@qrlogoscale@local}{%
\edef\BCQ@qrlogoscale@used{\BCQ@qrlogoscale@local}%
}{%
\edef\BCQ@qrlogoscale@used{\BCQ@qrlogoscale}%
}%
%\frame
{
\begin{minipage}[c][\heightscale][c]{\imagepercents\textwidth}
\begin{tikzpicture}
% White background behind QR code (for readability over background images)
\node[fill=white, opacity=\BCQ@qrbgopacity@used, inner sep=0pt, outer sep=2mm, minimum size=\textwidth] (bg) at (0,0) {};
% QR code on top
\node[inner sep=0pt, outer sep=0pt] (qr) at (0,0) {%
% QR code with optional qrlogo overlay in center
\ifcsdef{Xqrlogo}{%
\begin{tikzpicture}
\node[inner sep=0pt] (qr2) {\qrcode[level=\BCQ@qreclevel,version=0,height=\textwidth]{\vcard}};
% Logo with transparent background preserved (no fill), padding still applied
% qrlogoscale/scale is unitless fraction (0.25 = 25% of QR width)
\node[inner sep=\BCQ@qrlogoborder\textwidth] at (qr2.center) {%
\includegraphics[width=\BCQ@qrlogoscale@used\textwidth]{\Xqrlogo}%
};
\end{tikzpicture}%
}{%
% No qrlogo defined, just show QR code
\qrcode[level=\BCQ@qreclevel,version=0,height=\textwidth]{\vcard}%
}%
};
\end{tikzpicture}
\end{minipage}
% Use local overrides if specified, otherwise use global options
\ifcsdef{BCQ@qrbgopacity@local}{%
\edef\BCQ@qrbgopacity@used{\BCQ@qrbgopacity@local}%
}{%
\edef\BCQ@qrbgopacity@used{\BCQ@qrbgopacity}%
}%
\ifcsdef{BCQ@qrlogoscale@local}{%
\edef\BCQ@qrlogoscale@used{\BCQ@qrlogoscale@local}%
}{%
\edef\BCQ@qrlogoscale@used{\BCQ@qrlogoscale}%
}%
%\frame
{
\begin{minipage}[c][\heightscale][c]{\imagepercents\textwidth}
\begin{tikzpicture}
% White background behind QR code (for readability over background images)
\node[fill=white, opacity=\BCQ@qrbgopacity@used, inner sep=0pt, outer sep=2mm, minimum size=\textwidth] (bg) at (0,0) {};
% QR code on top
\node[inner sep=0pt, outer sep=0pt] (qr) at (0,0) {%
% QR code with optional qrlogo overlay in center
\ifcsdef{Xqrlogo}{%
\begin{tikzpicture}
\node[inner sep=0pt] (qr2) {\qrcode[level=\BCQ@qreclevel,version=0,height=\textwidth]{\vcard}};
% Logo with transparent background preserved (no fill), padding still applied
% qrlogoscale/scale is unitless fraction (0.25 = 25% of QR width)
\node[inner sep=\BCQ@qrlogoborder\textwidth] at (qr2.center) {%
\includegraphics[width=\BCQ@qrlogoscale@used\textwidth]{\Xqrlogo}%
};
\end{tikzpicture}%
}{%
% No qrlogo defined, just show QR code
\qrcode[level=\BCQ@qreclevel,version=0,height=\textwidth]{\vcard}%
}%
};
\end{tikzpicture}
\end{minipage}
}
}
@@ -613,120 +641,123 @@ END:VCARD\BCQ@nl}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% insertname - insert the name on the top
\newcommand\insertname{
% typeset name into box for measurement
\sbox{\BCQ@namebox}{\bfseries\cond{displayname}}%
% Set default logoheight if not specified: 4em with company, 2em without
\ifx\BCQ@logoheight\@empty
\ifcsdef{Xcompany}{\def\BCQ@logoheight{4em}}{\def\BCQ@logoheight{2em}}%
\fi
% Use local height override if specified, otherwise use global logoheight
\ifcsdef{BCQ@logoheight@local}{%
\edef\BCQ@logoheight@used{\BCQ@logoheight@local}%
}{%
\edef\BCQ@logoheight@used{\BCQ@logoheight}%
}%
% Store logo height as dimension for heightscale calculation
\ifcsdef{Xlogo}{%
\sbox{\BCQ@logobox}{\includegraphics[height=\BCQ@logoheight@used]{\Xlogo}}%
\setlength{\BCQ@logoheightdimen}{\BCQ@logoheight@used}%
}{%
\setlength{\BCQ@logoheightdimen}{0pt}%
}%
% Compute heightscale after logo height is known
\computeheightscale
\ifcsdef{Xlogo}{% logo defined
% Logo next to name: dynamic columns (logo natural width, name uses remaining space)
\setlength{\BCQ@logosepused}{\BCQ@logosep}%
\setlength{\BCQ@namewidth}{\dimexpr\textwidth-\wd\BCQ@logobox-\BCQ@logosepused\relax}%
\ifdim\BCQ@namewidth<0pt
\setlength{\BCQ@logosepused}{0pt}%
\setlength{\BCQ@namewidth}{\dimexpr\textwidth-\wd\BCQ@logobox\relax}%
\ifdim\BCQ@namewidth<0pt\setlength{\BCQ@namewidth}{0pt}\fi
\fi
\begin{minipage}{\textwidth}
\begin{minipage}[c]{\wd\BCQ@logobox}% logo column
\usebox{\BCQ@logobox}%
\end{minipage}
\hspace{\BCQ@logosepused}
\begin{minipage}[c]{\BCQ@namewidth}% name column
\ifBCQ@rightalign\raggedleft\fi% apply alignment
{\bfseries\cond{displayname}}%
\ifhaspersonalname{%
\ifhaspositionblock{\\\companybrandingline}{}%
}{}%
\end{minipage}
\end{minipage}
}{% no logo: just name
{\bfseries\cond{displayname}}%
\ifhaspersonalname{%
\ifhaspositionblock{\\\companybrandingline}{}%
}{}%
}
% typeset name into box for measurement
\sbox{\BCQ@namebox}{\bfseries\cond{displayname}}%
% Set default logoheight if not specified: 4em with company, 2em without
\ifx\BCQ@logoheight\@empty
\ifcsdef{Xcompany}{\def\BCQ@logoheight{4em}}{\def\BCQ@logoheight{2em}}%
\fi
% Use local height override if specified, otherwise use global logoheight
\ifcsdef{BCQ@logoheight@local}{%
\edef\BCQ@logoheight@used{\BCQ@logoheight@local}%
}{%
\edef\BCQ@logoheight@used{\BCQ@logoheight}%
}%
% Store logo height as dimension for heightscale calculation
\ifcsdef{Xlogo}{%
\sbox{\BCQ@logobox}{\includegraphics[height=\BCQ@logoheight@used]{\Xlogo}}%
\setlength{\BCQ@logoheightdimen}{\BCQ@logoheight@used}%
\setlength{\BCQ@namecolumnwidth}{\dimexpr\textwidth-\wd\BCQ@logobox-\BCQ@logosep\relax}%
}{%
\setlength{\BCQ@logoheightdimen}{0pt}%
\setlength{\BCQ@namecolumnwidth}{\textwidth}%
}%
% Compute heightscale after logo height is known
\computeheightscale
\ifcsdef{Xlogo}{% logo defined
% Logo next to name: dynamic columns (logo natural width, name uses remaining space)
\setlength{\BCQ@logosepused}{\BCQ@logosep}%
\setlength{\BCQ@namewidth}{\dimexpr\textwidth-\wd\BCQ@logobox-\BCQ@logosepused\relax}%
\ifdim\BCQ@namewidth<0pt
\setlength{\BCQ@logosepused}{0pt}%
\setlength{\BCQ@namewidth}{\dimexpr\textwidth-\wd\BCQ@logobox\relax}%
\ifdim\BCQ@namewidth<0pt\setlength{\BCQ@namewidth}{0pt}\fi
\fi
\setlength{\BCQ@namecolumnwidth}{\BCQ@namewidth}%
\begin{minipage}{\textwidth}
\begin{minipage}[c]{\wd\BCQ@logobox}% logo column
\usebox{\BCQ@logobox}%
\end{minipage}
\hspace{\BCQ@logosepused}
\begin{minipage}[c]{\BCQ@namewidth}% name column
\ifBCQ@rightalign\raggedleft\fi% apply alignment
{\bfseries\cond{displayname}}%
\ifhaspersonalname{%
\ifhaspositionblock{\\\companybrandingline}{}%
}{}%
\end{minipage}
\end{minipage}
}{% no logo: just name
{\bfseries\cond{displayname}}%
\ifhaspersonalname{%
\ifhaspositionblock{\\\companybrandingline}{}%
}{}%
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% drawcardcontent - assemble all blocks (name, text, qr, pgp)
\newcommand\drawcardcontent{
\BCQ@setnamecache
\ifBCQ@rightalign\begin{flushright}\fi
\insertname
\noindent\makebox[\linewidth]{\rule{\paperwidth}{0.4pt}} % horizontal line
\vfill
\ifBCQ@qrfirst
\insertqrcode
\hfill
\inserttext
\else
\inserttext
\hfill
\insertqrcode
\fi
\ifexists{Xpgpfingerprint}{
\vfill
\ifBCQ@iconleft
\faLock\ifBCQ@hint{\tiny\ pgp}\fi\hfill{\small\Xpgpfingerprint}
\else
{\small\Xpgpfingerprint}\hfill\ifBCQ@hint{\tiny{pgp\ }}\fi\faLock
\fi
}
\ifBCQ@rightalign\end{flushright}\fi
\BCQ@setnamecache
\ifBCQ@rightalign\begin{flushright}\fi
\insertname
\noindent\makebox[\linewidth]{\rule{\paperwidth}{0.4pt}} % horizontal line
\vfill
\ifBCQ@qrfirst
\insertqrcode
\hfill
\inserttext
\else
\inserttext
\hfill
\insertqrcode
\fi
\ifexists{Xpgpfingerprint}{
\vfill
\ifBCQ@iconleft
\faLock\ifBCQ@hint{\tiny\ pgp}\fi\hfill{\small\Xpgpfingerprint}
\else
{\small\Xpgpfingerprint}\hfill\ifBCQ@hint{\tiny{pgp\ }}\fi\faLock
\fi
}
\ifBCQ@rightalign\end{flushright}\fi
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% drawcard - main card with optional background
\newcommand\drawcard{
% Use local overrides if specified, otherwise use global options
\ifcsdef{BCQ@bgscale@local}{%
\edef\BCQ@bgscale@used{\BCQ@bgscale@local}%
}{%
\edef\BCQ@bgscale@used{\BCQ@bgscale}%
}%
\ifcsdef{BCQ@bgopacity@local}{%
\edef\BCQ@bgopacity@used{\BCQ@bgopacity@local}%
}{%
\edef\BCQ@bgopacity@used{\BCQ@bgopacity}%
}%
% Handle background
\ifcsdef{Xbackground}{%
\IfFileExists{\Xbackground}{%
% It's an image file: add to background using eso-pic (no layout impact)
\AddToShipoutPictureBG*{%
\AtPageCenter{%
\begin{tikzpicture}[overlay]
\node[inner sep=0pt, opacity=\BCQ@bgopacity@used] at (0,0) {%
\setlength{\BCQ@bgimagedimen}{\dimexpr\BCQ@bgscale@used\paperheight\relax}%
\includegraphics[height=\BCQ@bgimagedimen]{\Xbackground}%
};
\end{tikzpicture}%
}%
}%
}{%
% Not a file: treat as color
\pagecolor{\Xbackground}%
}%
}{}%
% Draw card content
\drawcardcontent
% Use local overrides if specified, otherwise use global options
\ifcsdef{BCQ@bgscale@local}{%
\edef\BCQ@bgscale@used{\BCQ@bgscale@local}%
}{%
\edef\BCQ@bgscale@used{\BCQ@bgscale}%
}%
\ifcsdef{BCQ@bgopacity@local}{%
\edef\BCQ@bgopacity@used{\BCQ@bgopacity@local}%
}{%
\edef\BCQ@bgopacity@used{\BCQ@bgopacity}%
}%
% Handle background
\ifcsdef{Xbackground}{%
\IfFileExists{\Xbackground}{%
% It's an image file: add to background using eso-pic (no layout impact)
\AddToShipoutPictureBG*{%
\AtPageCenter{%
\begin{tikzpicture}[overlay]
\node[inner sep=0pt, opacity=\BCQ@bgopacity@used] at (0,0) {%
\setlength{\BCQ@bgimagedimen}{\dimexpr\BCQ@bgscale@used\paperheight\relax}%
\includegraphics[height=\BCQ@bgimagedimen]{\Xbackground}%
};
\end{tikzpicture}%
}%
}%
}{%
% Not a file: treat as color
\pagecolor{\Xbackground}%
}%
}{}%
% Draw card content
\drawcardcontent
}
@@ -734,52 +765,52 @@ END:VCARD\BCQ@nl}
% cut / crop marks
\RequirePackage[\papersize,noinfo,center,pdftex]{crop}
\newcommand\tl{
\begin{picture}(0,0)
\thinlines\unitlength1mm
\put(-\border,0){\line(1,0){\cutlen}}
\put(0,\border){\line(0,-1){\cutlen}}
\end{picture}
\begin{picture}(0,0)
\thinlines\unitlength1mm
\put(-\border,0){\line(1,0){\cutlen}}
\put(0,\border){\line(0,-1){\cutlen}}
\end{picture}
}
\newcommand\tr{
\begin{picture}(0,0)
\thinlines\unitlength1mm
\put(\border,0){\line(-1,0){\cutlen}}
\put(0,\border){\line(0,-1){\cutlen}}
\end{picture}
\begin{picture}(0,0)
\thinlines\unitlength1mm
\put(\border,0){\line(-1,0){\cutlen}}
\put(0,\border){\line(0,-1){\cutlen}}
\end{picture}
}
\newcommand\bl{
\begin{picture}(0,0)
\thinlines\unitlength1mm
\put(-\border,0){\line(1,0){\cutlen}}
\put(0,-\border){\line(0,1){\cutlen}}
\end{picture}
\begin{picture}(0,0)
\thinlines\unitlength1mm
\put(-\border,0){\line(1,0){\cutlen}}
\put(0,-\border){\line(0,1){\cutlen}}
\end{picture}
}
\newcommand\br{
\begin{picture}(0,0)
\thinlines\unitlength1mm
\put(\border,0){\line(-1,0){\cutlen}}
\put(0,-\border){\line(0,1){\cutlen}}
\end{picture}
\begin{picture}(0,0)
\thinlines\unitlength1mm
\put(\border,0){\line(-1,0){\cutlen}}
\put(0,-\border){\line(0,1){\cutlen}}
\end{picture}
}
\cropdef[]\tl\tr\bl\br{cut}
\crop[cut]
\newcommand\companylogocontent{%
\begingroup
\edef\BCQ@companylogoscan{\expandafter\detokenize\expandafter{\Xcompanylogo}}%
\IfSubStr{\BCQ@companylogoscan}{\string\\}{%
\endgroup
\Xcompanylogo
}{%
\xdef\BCQ@companylogopath{\BCQ@companylogoscan}%
\endgroup
\IfFileExists{\BCQ@companylogopath}{%
\edef\BCQ@companylogoheightused{1.5em}%
\ifcsdef{Xcompanylogoheight}{%
\edef\BCQ@companylogoheightused{\Xcompanylogoheight}%
}{}%
\includegraphics[height=\BCQ@companylogoheightused]{\BCQ@companylogopath}%
}{%
\Xcompanylogo
}%
}%
\begingroup
\edef\BCQ@companylogoscan{\expandafter\detokenize\expandafter{\Xcompanylogo}}%
\IfSubStr{\BCQ@companylogoscan}{\string\\}{%
\endgroup
\Xcompanylogo
}{%
\xdef\BCQ@companylogopath{\BCQ@companylogoscan}%
\endgroup
\IfFileExists{\BCQ@companylogopath}{%
\edef\BCQ@companylogoheightused{1.5em}%
\ifcsdef{Xcompanylogoheight}{%
\edef\BCQ@companylogoheightused{\Xcompanylogoheight}%
}{}%
\includegraphics[height=\BCQ@companylogoheightused]{\BCQ@companylogopath}%
}{%
\Xcompanylogo
}%
}%
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 653 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-2
View File
@@ -1,2 +0,0 @@
%PDF-1.7
%הנםר
Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 779 KiB

After

Width:  |  Height:  |  Size: 778 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB