documented and finished in a first version

master
Marc Wäckerlin 6 years ago
parent f124158ce5
commit 17fbd5eb8f
  1. 168
      businesscard-qrcode/README.md
  2. 149
      businesscard-qrcode/businesscard-qrcode.cls
  3. BIN
      businesscard-qrcode/examples/example.pdf
  4. 35
      businesscard-qrcode/examples/example.tex
  5. BIN
      businesscard-qrcode/examples/john-doe-hongkong.pdf
  6. 15
      businesscard-qrcode/examples/john-doe-hongkong.tex
  7. BIN
      businesscard-qrcode/examples/peter-muster-example-company-zuerich.pdf
  8. 19
      businesscard-qrcode/examples/peter-muster-example-company-zuerich.tex
  9. BIN
      businesscard-qrcode/examples/texstudio_d30266.pdf
  10. 15
      businesscard-qrcode/examples/texstudio_d30266.tex
  11. 6
      businesscard-qrcode/screenshots.sh
  12. BIN
      businesscard-qrcode/screenshots/example.jpg
  13. BIN
      businesscard-qrcode/screenshots/john-doe-hongkong.jpg
  14. BIN
      businesscard-qrcode/screenshots/peter-muster-example-company-zuerich.jpg
  15. BIN
      businesscard-qrcode/screenshots/texstudio_d30266.jpg

@ -1,4 +1,168 @@
Businescards with QR-Code
Businesscard with QR-Code
=========================
Businescard with full VCARD as QR-Code, ready to send to online printers.
What happens, if you give someone a visiting card? Either he manually types the text into the mobilefone, or it will end up in a box and be forgotten. Here is the solution: A visiting card with QR-Code, so that it can be scanned with an [app] on the mobilefone and therefore automatically imported into the electronic contacts. This also works well, when yoiu are offline and bluetooth transfer fails. So here os the highly configurable businescard or visitingcards with full VCARD as QR-Code, ready to send to online printers.
Other available visitingcard templates, such as [mschlenker] distribute the cards on a A4 paper. But if you want a profesional printer, such as [onlineprinters], then you need to be able to generate a PDF with exactly one card, an exactly defined border and crop marks. That's why I wrote this template.
[![Example: John Doe from Hongkong](screenshots/john-doe-hongkong.jpg)](examples/john-doe-hongkong.tex)
[![Example: Businesscard of Peter Muster from Zürich](screenshots/peter-muster-example-company-zuerich.jpg)](examples/peter-muster-example-company-zuerich.tex)
[![Example: Nearly Real Examle Of My Card](screenshots/example.jpg)](examples/example.tex)
Features
--------
- all information is in the QR-Code
- full privacy: input is optional, specify only what you need, you decide what information to share
- optional icons, optional small hint texts
- several alignents
- freely size of paper and content
- supports honoric titles, full names, address woth post office box and extended information
- supports telefone, email, [jabber] and [matrix] chat
- supports several urls for your hompages
- supports [gitea], [github], [git]
- supports [facebook], [twitter], [google+], [youtube], [wikipedia]
- supports [pgp] key url and fingerprint
- supports [nextcloud federation id]
Usage Example
-------------
*Important*: You must use `xelatex` for compilation, because `xelatex` properly supports UTF-8 (e.g. needed for german umlauts or chinese characters). The package `inputenc` messes up with package `qrcode`.
Include the documentclass, define your date and add the document part:
```latex
\documentclass{businesscard-qrcode}
\def\type{home}
\def\printaddress{}
\def\givennames{An}
\def\familynames{Example}
\def\street{Einbahnstrasse 84}
\def\city{Irgendwo}
\def\zip{1001}
\def\country{Switzerland}
\def\homepage{example.com}
\def\email{name@example.com}
\begin{document}
\drawcard
\end{document}
```
Save it as file [texstudio_d30266.tex] and compile it to get [texstudio_d30266.pdf]:
xelatex -synctex=1 -interaction=nonstopmode texstudio_d30266.tex
The result:\\
![the resulting visiting card](screenshots/texstudio_d30266.jpg)
See [examples] for more examples.
Documentclass Options
---------------------
Layout options are set as options to the `\documentclass`, e.g.:
\documentclass[textwidth=0.7,qrwidth=0.25,www,nofill,iconright,rightalign,hint,icon,textfirst]{businesscard-qrcode}
Available options:
- `paperwidth`: width of the physical paper where the card is printed on (incl. border), default: `89mm`
- `paperheight`: height of the physical paper where the card is printed on (incl. border), default: `59mm`
- `contentwidth`: width of the card's content without the border that is cut, default: `85mm`
- `contentheight`: height of the card's content without the border that is cut, default: `55mm`
- `fontsize`: any fontsize allowed in `extarticle`, that are `8pt`, `9pt`, `10pt`, `11pt`, `12pt`, `14pt`, `17pt` and `20pt`, default: `8pt`
- `padding`: padding within the card's content, default: `2mm`
- `cutdist`: distance in `mm` where the cut marks are set, default: `2`
- `cutlen`: length of the cut marks in `mm`, default: `1`
- `textwidth`: relative width of the text block `1` means full width, so `qrwidth` plus `textwidth` should be smaller than `1` the remainig space is left empty between the text and QR-Code, default: `0.55` (that's 55% of the available space)
- `qrwidth`: relative width of the QR-Code `1` means full width, so `qrwidth` plus `textwidth` should be smaller than `1` the remainig space is left empty between the text and QR-Code, default: `0.40` (that's 40% of the available space)
- `lang`: language of the wikipedia page, will be prepended before `wikipedia.org`, e.g. `de.wikipedia.org`, default: `de`
- `address`or `noaddress`: disable rendering of the address in text and QR-Code, default: address
- `hint` or `nohint`: show the little text hints, default: `hint`
- `icon` or `noicon`: show the icons, default: `icon`
- `rightalign` or `leftalign`: align text left or right, default: `rightalign`
- `iconleft` or `iconright`: show icon left or right of the text, default: `iconleft`
- `fill` or `nofill`: fill empty space between icon and text, default: `fill`
- `qrfirst` or `textfirst`: switch position of QR-Code and text block, default: `qrfirst`
- `https` or `www`: should links in the hints be prefixed with `https://` or `www.`, default: `https`
Your data is entered as definitions in the document, e.g.:
\def\email{name@example.com}
Please note, that spaces must be escaped, otherwise they do not appear in the QR-Code. You may not escape the spaces in your phone number, if you want them in the text, but not in the QR-Code, e.g.:
\def\givennames{Juan\ Pablo}
\def\familynames{Martínez\ Escudero}
\def\phone{+41 52 123 45 67}
Recognized definitions:
- `type`: either `home` or `work` for personal or business cards
- `givennames`: your first name and eventual middle names
- `familynames`: your family names
- `honoricprefix`: honorix name prefixes, e.g. academic titles
- `honoricsuffix`: honoric name suffixes
- `additionalnames`: additionl names — I use it for the company name in business cards
- `pobox`: post office box
- `extaddr`: address extension, e.g. name of a building or floor number
- `street`: street and number of the address
- `city`: name of the address location
- `region`: region of the address
- `zip`: zip code of the address
- `country`: full name of country of the address in the language of the card
- `phone`: your phone number, the phone is marked as mobile, so to be used for voice and text (SMS)
- `email`: your email address
- `jabber`: your [jabber] or xmpp chat address
- `matrixorg`: your [matrix] chat addres, hint: use [riot] messenger for [matrix]
- `cloud`: your [nextcloud federation id] — the url is prepended automatically
- `homepage`: url to a web site with «home» icon — without `https://` not `www` (unless it is required), this is prepended automatically
- `world`: url to a web site with «world» icon — without `https://` not `www` (unless it is required), this is prepended automatically
- `link`: url to a web site with «link» icon — without `https://` not `www` (unless it is required), this is prepended automatically
- `wordpress`: url to a web site with «wordpress» icon — without `https://` not `www` (unless it is required), this is prepended automatically
- `drupal`: url to a web site with «» icon — without `https://` not `www` (unless it is required), this is prepended automatically
- `joomla`: url to a web site with «joomla» icon — without `https://` not `www` (unless it is required), this is prepended automatically
- `wikipedia`: if you or your company have a [wikipedia] entry, specify documentclass option `lang` for the language of you entry and use this definition for the name of your page — the url is prepended automatically
- `git`: the url of your [git] repository — without `https://` not `www` (unless it is required), this is prepended automatically
- `gitea`: the url of your [gitea] project page, you can use this tag also for other project management sites, such as [gogs] — without `https://` not `www` (unless it is required), this is prepended automatically
- `github`: your account name on [github] — only the name of the account, the url is prepended automatically
- `facebook`: your account name on [facebook] or the name of your page — only the name of the account or page, the url is prepended automatically
- `twitter`: your account name on [twitter] — only the name of the account, the url is prepended automatically
- `youtube`: your account name on [youtube] — only the name of the account, the url is prepended automatically
- `google`: your account name on [google+] — only the name of the account, the url is prepended automatically
- `pgpurl`: the full url to your pgp public key (only added to the QR-Code, not shown in the text)
- `pgpfingerprint`: the fingerprint of your pgp public key
Need More
---------
If you are missing a feature or a configuration option, just open a [ticket] and I will care about it.
[ticket]: https://mrw.sh/templates/latex/issues "open issues and tickets for my LaTeX-templates project"
[example]: examples "more examples"
[app]: https://f-droid.org/de/packages/com.google.zxing.client.android/ "Barcode Scanner"
[onlineprinters]: https://de.onlineprinters.ch/k/standardvisitenkarten "onlineprinters.ch"
[mschlenker]: https://gist.github.com/mschlenker/f60e0f15ff1edfc4881c "visitenkarten-qr.tex"
[texstudio_d30266.tex]: examples/texstudio_d30266.tex "simple example source file"
[texstudio_d30266.pdf]: examples/texstudio_d30266.pdf "simple example resulting pdf"
[example.tex]: examples/example.tex "larger example source file"
[example.pdf]: examples/example.pdf "larger example resulting pdf"
[jabber]: https://en.wikipedia.org/wiki/Jabber.org "the Jabber / XMPP instant messaging standard"
[matrix]: https://matrix.org "the matrix instant messaging standard"
[riot]: https://riot.im "matrix compatible instant messaging tool for all platforms"
[gitea]: https://gitea.io "github-like project repository, a gogs clone"
[gogs]: https://gitea.io "github-like project repository"
[github]: https://github.com "a project repository"
[git]: https://git-scm.com "a distributed version control system"
[facebook]: https://facebook.com "a social website"
[twitter]: https://twitter.com "a social website"
[google+]: https://plus.google.com "a social website"
[youtube]: https://youtube.com "a video website"
[wikipedia]: https://wikipedia.org "the online encyclopedia"
[pgp]: https://en.wikipedia.org/wiki/Pretty_Good_Privacy "pretty good privacy — encryption standard"
[nextcloud federation id]: https://nextcloud.com/federation "share your cloud across others"

@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{businesscard-qrcode}[2018/08/10 businesscard or visitingcard with full vcard-file in qr-code]
\ProvidesClass{businesscard-qrcode}[2018/08/12 documented and finished in a first version]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
@ -14,16 +14,30 @@
\DeclareStringOption[2mm]{padding}
\DeclareStringOption[2]{cutdist}
\DeclareStringOption[1]{cutlen}
\DeclareStringOption[0.55]{textwidth}
\DeclareStringOption[0.50]{textwidth}
\DeclareStringOption[0.40]{qrwidth}
\DeclareStringOption[de]{lang}
\DeclareBoolOption[true]{address}
\DeclareComplementaryOption{noaddress}{address}
\DeclareBoolOption[true]{hint}
\DeclareComplementaryOption{nohint}{hint}
\DeclareBoolOption[true]{icon}
\DeclareComplementaryOption{noicon}{icon}
\DeclareBoolOption[true]{rightalign}
\DeclareComplementaryOption{leftalign}{rightalign}
\DeclareBoolOption[true]{iconleft}
\DeclareComplementaryOption{iconright}{iconleft}
\DeclareBoolOption[true]{fill}
\DeclareComplementaryOption{nofill}{fill}
\DeclareBoolOption[true]{qrfirst}
\DeclareComplementaryOption{textfirst}{qrfirst}
\DeclareBoolOption[true]{https}
\DeclareComplementaryOption{www}{https}
\DeclareDefaultOption{\@unknownoptionerror}
\ProcessKeyvalOptions*
\ProcessOptions\relax
%\ProcessOptions\relax
\LoadClass[\BCQ@fontsize]{extarticle}
@ -35,18 +49,31 @@
\def\textpercents{\BCQ@textwidth} % size of text part 0..1
\def\imagepercents{\BCQ@qrwidth} % size of qrcode image part 0..1
\def\lang{\BCQ@lang}
\def\protdisplay{\ifBCQ@https https://\else www.\fi}
\def\protprefix{\ifBCQ@https https://\fi}
\ifBCQ@address\def\printaddress{}\fi
\newcommand\exec[1]{\csname #1\endcsname}
\newcommand\insa[3][]{\ifcsdef{#2}{\ \\\exec{#3}\ifBCQ@hint{\tiny#1}\fi\hfill\exec{#2}}{}}
\newcommand\insa[3][]{\ifcsdef{#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
}{}}
\newcommand\ifexists[2]{\ifcsdef{#1}{#2}{}}
\newcommand\ifboth[3]{\ifcsdef{#1}{\ifcsdef{#2}{#3}{}}{}}
\newcommand\ifany[3]{\ifcsdef{#1}{#3}{\ifcsdef{#2}{#3}{}}}
\newcommand\cond[1]{\ifcsdef{#1}{\exec{#1}}{}}
\newcommand\name{\ifexists{tit}{\tit\ }\firstname\ \lastname}
\newcommand\name{\ifexists{honoricprefix}{\honoricprefix\ }\ifexists{givennames}{\givennames\ }\ifexists{familynames}{\familynames}\ifexists{honoricsuffix}{\ \honoricsuffix}}
\newcommand\vcard{BEGIN:VCARD^^J
VERSION:4.0^^J
N:\lastname;\firstname;;\ifexists{tit}{\tit};^^J
FN:\name^^J
\ifexists{printaddress}{ADR\ifexists{type}{;TYPE=\type}:;;\street;\city;;\zip;\country^^J}
N:\cond{familynames};\cond{givennames};\cond{additionalnames};\cond{honoricprefix};\cond{honoricsuffix}^^J
FN:\name\ifexists{additionalnames}{\ifcsempty{name}{}{\ }\additionalnames}^^J
\ifexists{printaddress}{ADR\ifexists{type}{;TYPE=\type}:\cond{pobox};\cond{extaddr};\cond{street};\cond{city};\cond{region};\cond{zip};\cond{country}^^J}
\ifexists{phone}{TEL;VALUE=uri;TYPE=\ifexists{type}{\type,}voice,text:tel:\phone^^J}
\ifexists{email}{EMAIL\ifexists{type}{;TYPE=\type}:\email^^J}
\ifexists{jabber}{IMPP;TYPE=XMPP:\jabber^^J}
@ -62,9 +89,9 @@ FN:\name^^J
\ifexists{git}{URL:https://\git^^J}
\ifexists{gitea}{URL:https://\gitea^^J}
\ifexists{github}{URL:https://github.com/\github^^J}
\ifexists{facebook}{URL:https://www.facebook.com/\facebook^^J}
\ifexists{facebook}{URL:https://facebook.com/\facebook^^J}
\ifexists{twitter}{URL:https://twitter.com/\twitter^^J}
\ifexists{youtube}{URL:https://www.youtube.com/user/\youtube^^J}
\ifexists{youtube}{URL:https://youtube.com/user/\youtube^^J}
\ifexists{google}{URL:https://plus.google.com/+\google^^J}
\ifexists{pgpurl}{KEY;MEDIATYPE=application/pgp-keys:\pgpurl^^J}
\ifexists{pgpfingerprint}{KEY:data:application/x-pgp-fingerprint,\pgpfingerprint^^J}
@ -74,13 +101,36 @@ END:VCARD^^J}
\RequirePackage{fontawesome}
\newcommand\address{
\cond{pobox}
\cond{extaddr}
\cond{street}
\cond{zip} \cond{city}
\cond{region} \cond{country}
}
\RequirePackage{pbox}
\RequirePackage{calc}
\newcommand\enforceright{\leftskip0pt plus 1fill\rightskip0pt}
\newcommand\data{
\ifexists{printaddress}{
\ \\
\faMapMarker\hfill\street \\
\zip\ \city \\
\country \\
\ifBCQ@iconleft
\ifBCQ@icon\parbox[c]{1em}{\faMapMarker}\ \ifBCQ@fill\hfill\fi\fi
\pbox[t]{\dimexpr\textwidth-2em\relax}{\ifBCQ@rightalign\enforceright\fi\address}
\else
\pbox[t]{\dimexpr\textwidth-2em\relax}{\ifBCQ@rightalign\enforceright\fi\address}
\ifBCQ@icon\ifBCQ@fill\hfill\fi\ \parbox[c]{1em}{\faMapMarker}\fi
\fi
\vspace{1em}
}
\insa[tel:]{phone}{faMobile}\insa[mailto:]{email}{Email}\insa[xmpp]{jabber}{faCommentsO}\insa[matrix.org]{matrixorg}{faCommentsO}\insa[nextcloud-id]{cloud}{faCloud}\insa[https://]{homepage}{faHome}\insa[https://]{wordpress}{faWordpress}\insa[https://]{drupal}{faDrupal}\insa[https://]{joomla}{faJoomla}\insa[https://\lang.wikipedia.org/wiki/]{wikipedia}{faWikipediaW}\insa[https://]{link}{faLink}\insa[https://]{world}{faGlobe}\insa[https://]{git}{faGit}\insa[https://]{gitea}{faGithubAlt}\insa[https://github.com/]{github}{faGithub}\insa[https://facebook.com/]{facebook}{faFacebook}\insa[https://twitter.com/]{twitter}{faTwitter}\insa[https://youtube.com/user/]{youtube}{faYoutube}\insa[https://plus.google.com/+]{google}{faGooglePlus}
\insa[tel:]{phone}{faMobile}\insa[mailto:]{email}{Email}\insa[xmpp]{jabber}{faCommentsO}\insa[matrix.org]{matrixorg}{faCommentsO}\insa[nextcloud-id]{cloud}{faCloud}\insa[\protdisplay]{homepage}{faHome}\insa[\protdisplay]{wordpress}{faWordpress}\insa[\protdisplay]{drupal}{faDrupal}\insa[\protdisplay]{joomla}{faJoomla}\insa[{\protprefix}\lang.wikipedia.org/wiki/]{wikipedia}{faWikipediaW}\insa[\protdisplay]{link}{faLink}\insa[\protdisplay]{world}{faGlobe}\insa[\protdisplay]{git}{faGit}\insa[\protdisplay]{gitea}{faGithubAlt}\insa[{\protprefix}github.com/]{github}{faGithub}\insa[{\protprefix}facebook.com/]{facebook}{faFacebook}\insa[{\protprefix}twitter.com/]{twitter}{faTwitter}\insa[{\protprefix}youtube.com/user/]{youtube}{faYoutube}\insa[{\protprefix}plus.google.com/+]{google}{faGooglePlus}
}
\pagestyle{empty}
@ -97,12 +147,60 @@ END:VCARD^^J}
\RequirePackage[\content,top=\padding,left=\padding,right=\padding,bottom=\padding]{geometry}
\newcommand\insertqrcode{
\qrcode[level=Q,version=0,height=\textwidth]{\vcard}
}
\newcommand\inserttext{
\data
}
\newcommand\drawcard{
\ifBCQ@rightalign\raggedleft\fi
\newcommand\heightscale{\dimexpr\textheight-\ifcsempty{name}{0em}{2em}-\ifcsdef{pgpfingerprint}{2em}{0em}-\ifcsdef{additionalnames}{2em}{0em}\relax}
{\bfseries
\cond{name}
\cond{additionalnames}
}
\noindent\makebox[\linewidth]{\rule{\paperwidth}{0.4pt}}
\vfill
\ifBCQ@qrfirst
\begin{minipage}[c][\heightscale][c]{\imagepercents\textwidth}
\insertqrcode
\end{minipage}
\hfill
\begin{minipage}[c][\heightscale][c]{\textpercents\textwidth}
\inserttext
\end{minipage}
\else
\begin{minipage}[c][\heightscale][c]{\textpercents\textwidth}
\inserttext
\end{minipage}
\hfill
\begin{minipage}[c][\heightscale][c]{\imagepercents\textwidth}
\insertqrcode
\end{minipage}
\fi
\ifexists{pgpfingerprint}{
\vfill
\ifBCQ@iconleft
\faLock\ifBCQ@hint{\tiny\ pgp}\fi\hfill{\small\pgpfingerprint}
\else
{\small\pgpfingerprint}\hfill\ifBCQ@hint{\tiny{pgp\ }}\fi\faLock
\fi
}
}
% 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}}
\thinlines\unitlength1mm
\put(-\border,0){\line(1,0){\cutlen}}
\put(0,\border){\line(0,-1){\cutlen}}
\end{picture}
}
\newcommand\tr{
@ -128,18 +226,3 @@ END:VCARD^^J}
}
\cropdef[]\tl\tr\bl\br{cut}
\crop[cut]
\newcommand\drawcard{
\begin{minipage}[c][0.9\textheight][c]{\imagepercents\textwidth}
\qrcode[level=Q,version=0,height=\textwidth]{\vcard}
\end{minipage}
\hfill
\begin{minipage}[c][0.9\textheight][c]{\textpercents\textwidth}
\raggedleft
{\bfseries\name} \\
\address
\end{minipage}
\ifexists{pgpfingerprint}{
\faLock\ifBCQ@hint{\tiny pgp}\fi\hfill{\small\pgpfingerprint}}
}

@ -0,0 +1,35 @@
\documentclass[noaddress,textwidth=0.58,qrwidth=0.35,https,fill,iconright,leftalign,hint,icon,textfirst]{businesscard-qrcode}
\def\phone{+12 34 567 89 00}
\def\type{home}
\def\honoricprefix{MSc ETH}
\def\givennames{Marc}
\def\familynames{Wäckerlin}
\def\homepage{marc.wäckerlin.ch}
%\def\link{marc.wäckerlin.ch}
%\def\git{mrw.sh}
\def\gitea{mrw.sh}
\def\github{mwaeckerlin}
\def\cloud{name@nextcloud.org}
\def\world{mrw.world}
%\def\wordpress{marc.wäckerlin.ch}
%\def\wikipedia{Marc\_Wäckerlin}
%\def\drupal{religionsfrei.info}
%\def\joomla{postsuisseid.ch}
%\def\youtube{WintiPirat}
\def\facebook{marc.waeckerlin}
%\def\google{MarcWäckerlin}
\def\twitter{GGR\_Winti}
\def\email{name@example.com}
\def\matrixorg{@name:matrix.org}
\def\street{Irgendwiestrasse\ 84}
\def\city{Irgendwo}
\def\zip{1001}
\def\country{Switzerland}
\def\pgpfingerprint{4C8B 41AF FEC4 ED9D 3AF9 8500 F623 15D0 4D4C 0C62}
\def\pgpurl{https://pgp.mit.edu/pks/lookup?op=get\&search=0xF62315D04D4C0C62}
%\def\jabber{\email}
\begin{document}
\drawcard
\end{document}

@ -0,0 +1,15 @@
\documentclass[nohint,fontsize=9pt]{businesscard-qrcode}
\def\givennames{John}
\def\familynames{Doe}
\def\extaddr{20/F.,\ One\ Kowloon}
\def\city{Kowloon Bay}
\def\street{1\ Wang\ Yuen\ Street}
\def\country{Hongkong}
\def\phone{(852)\ 1234-5678}
\def\homepage{example.com}
\def\email{name@example.com}
\begin{document}
\drawcard
\end{document}

@ -0,0 +1,19 @@
\documentclass[nohint,textwidth=0.55,leftalign,nofill]{businesscard-qrcode}
\def\type{work}
\def\givennames{Peter}
\def\familynames{Muster}
\def\additionalnames{Example Company Ltd.}
\def\street{Im Stutz 123}
\def\pobox{Postfach 4567}
\def\zip{8000}
\def\city{Zürich}
\def\country{Switzerland}
\def\phone{+41 44 123 45 67}
\def\email{peter.muster@example.com}
\def\pgpfingerprint{4C8B 41AF FEC4 ED9D 3AF9 8500 F623 15D0 4D4C 0C62}
\def\pgpurl{https://pgp.mit.edu/pks/lookup?op=get\&search=0xF62315D04D4C0C62}
\begin{document}
\drawcard
\end{document}

@ -0,0 +1,15 @@
\documentclass{businesscard-qrcode}
\def\type{home}
\def\givennames{An}
\def\familynames{Example}
\def\street{Einbahnstrasse 84}
\def\city{Irgendwo}
\def\zip{1001}
\def\country{Switzerland}
\def\homepage{example.com}
\def\email{name@example.com}
\begin{document}
\drawcard
\end{document}

@ -0,0 +1,6 @@
#!/bin/bash
for f in examples/*.pdf; do
s=${f##*/};
convert -density 300 $f screenshots/${s%pdf}jpg;
done

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Loading…
Cancel
Save