diff --git a/businesscard-qrcode.cls b/businesscard-qrcode.cls index 0b4ca17..43a0e07 100644 --- a/businesscard-qrcode.cls +++ b/businesscard-qrcode.cls @@ -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 + }% + }% } diff --git a/examples/background-color-example.pdf b/examples/background-color-example.pdf new file mode 100644 index 0000000..a79846e Binary files /dev/null and b/examples/background-color-example.pdf differ diff --git a/examples/background-image-example.pdf b/examples/background-image-example.pdf new file mode 100644 index 0000000..d971161 Binary files /dev/null and b/examples/background-image-example.pdf differ diff --git a/examples/example.pdf b/examples/example.pdf index c1c6bfc..efe6a11 100644 Binary files a/examples/example.pdf and b/examples/example.pdf differ diff --git a/examples/john-doe-hongkong.pdf b/examples/john-doe-hongkong.pdf index 2200699..3478de0 100644 Binary files a/examples/john-doe-hongkong.pdf and b/examples/john-doe-hongkong.pdf differ diff --git a/examples/logo.png b/examples/logo.png index 2955e1f..162361d 100644 Binary files a/examples/logo.png and b/examples/logo.png differ diff --git a/examples/peter-muster-example-company-zuerich.pdf b/examples/peter-muster-example-company-zuerich.pdf index 8ecbab1..11c72c8 100644 Binary files a/examples/peter-muster-example-company-zuerich.pdf and b/examples/peter-muster-example-company-zuerich.pdf differ diff --git a/examples/photo-example.pdf b/examples/photo-example.pdf index 7c7c35b..bae5df9 100644 Binary files a/examples/photo-example.pdf and b/examples/photo-example.pdf differ diff --git a/examples/photo-in-qr-example.pdf b/examples/photo-in-qr-example.pdf index fb608d8..ea5b088 100644 Binary files a/examples/photo-in-qr-example.pdf and b/examples/photo-in-qr-example.pdf differ diff --git a/examples/photo-large-example.pdf b/examples/photo-large-example.pdf new file mode 100644 index 0000000..cd7a092 Binary files /dev/null and b/examples/photo-large-example.pdf differ diff --git a/examples/special-papersize.pdf b/examples/special-papersize.pdf index fdb9cda..272af91 100644 Binary files a/examples/special-papersize.pdf and b/examples/special-papersize.pdf differ diff --git a/examples/test-country-short.pdf b/examples/test-country-short.pdf new file mode 100644 index 0000000..f58d178 Binary files /dev/null and b/examples/test-country-short.pdf differ diff --git a/examples/texstudio_d30266.pdf b/examples/texstudio_d30266.pdf new file mode 100644 index 0000000..2e81dc5 Binary files /dev/null and b/examples/texstudio_d30266.pdf differ diff --git a/photo-in-qr-example.pdf b/photo-in-qr-example.pdf new file mode 100644 index 0000000..12582e4 Binary files /dev/null and b/photo-in-qr-example.pdf differ diff --git a/photo-large-example.pdf b/photo-large-example.pdf deleted file mode 100644 index 2a8364b..0000000 --- a/photo-large-example.pdf +++ /dev/null @@ -1,2 +0,0 @@ -%PDF-1.7 -%äðíø diff --git a/screenshots/example.png b/screenshots/example.png index 5f87699..2f217f2 100644 Binary files a/screenshots/example.png and b/screenshots/example.png differ diff --git a/screenshots/john-doe-hongkong.png b/screenshots/john-doe-hongkong.png index 9918644..b4215a1 100644 Binary files a/screenshots/john-doe-hongkong.png and b/screenshots/john-doe-hongkong.png differ diff --git a/screenshots/peter-muster-example-company-zuerich.png b/screenshots/peter-muster-example-company-zuerich.png index 90e2618..65792fd 100644 Binary files a/screenshots/peter-muster-example-company-zuerich.png and b/screenshots/peter-muster-example-company-zuerich.png differ diff --git a/screenshots/photo-example.png b/screenshots/photo-example.png index afea13f..696048f 100644 Binary files a/screenshots/photo-example.png and b/screenshots/photo-example.png differ diff --git a/screenshots/photo-in-qr-example.png b/screenshots/photo-in-qr-example.png index 6b1c604..f27a673 100644 Binary files a/screenshots/photo-in-qr-example.png and b/screenshots/photo-in-qr-example.png differ diff --git a/screenshots/special-papersize.png b/screenshots/special-papersize.png index 692f9c3..594e288 100644 Binary files a/screenshots/special-papersize.png and b/screenshots/special-papersize.png differ diff --git a/screenshots/texstudio_d30266.png b/screenshots/texstudio_d30266.png index 2e2c847..e3ddc08 100644 Binary files a/screenshots/texstudio_d30266.png and b/screenshots/texstudio_d30266.png differ