vboehm
04-04-2014, 19:11
Hallo,
ich versuche gerade einen Vertrag, der in XeLaTeX geschrieben ist, in ein ausfüllbares Formular zu verwandeln.
Dazu habe ich mir erstmal eines der netten Formular-Beispiele gegriffen und versuche, es für meine Zwecke anzupassen:
\documentclass[a4paper]{scrartcl}
\usepackage{xltxtra}
\usepackage[ngerman]{babel}
\usepackage[xetex]{hyperref}
\usepackage[xetex]{insdljs}
\begin{insDLJS}[exaaae]{exaaae}{JavaScript auf Document Level}
done = 0;
function initfont(){
this.getField("Name").textFont = 'Courier';
this.getField("Staat").textFont = 'FreeMono';
}
function los(){
if (!done){
done = 1;
initfont();
}
}
\end{insDLJS}
\OpenAction{/S /JavaScript /JS (los();)}
\begin{document}
\selectfont
\begin{Form}
\TextField[
name=Name,
width=5cm,
bordercolor=.4 .4 1,
backgroundcolor=.9 .9 1,
bordersep=1,
charsize=8pt]
{Name:}
\ChoiceMenu[radio,
radiosymbol=\ding{54},
bordercolor=.4 .4 1,
backgroundcolor=.9 .9 1]
{Geschlecht:}{männlich,weiblich}
\ChoiceMenu[combo,
name=Staat,
bordercolor=.4 .4 1,
backgroundcolor=.9 .9 1]
{Staat:}{Deutschland,Frankreich,Niederlande,Schwei z}
\end{Form}
\end{document}
Es sieht auch alles schon sehr schön aus; nur ein Problem habe ich noch:
Ich möchte, dass die Schrift in den Feldern eine Schreibmaschinenschrift (Courier o.Ä.) ist. Wenn ich dafür
feld.textFont = 'FreeMono'; verwende, sieht es bei mir (unter Linux) auf dem Bildschirm und im Druck wie gewollt aus.
Aber wenn jemand auf einem Windows-Rechner oder Mac dieses Dokument aufruft, wird der wohl kaum wissen, was 'FreeMono' für eine Schrift ist. Wenn ich stattdessen
feld.textFont = 'Courier'; oder
feld.textFont = font.HelvB;oder Ähnliches (wie heißt eigentlich Courier in dem JavaScript-Modell) verwende, bleibt bei mir auf dem Schirm und im Druck die standardmäßige Schrift (ich glaube das ist eine 'Helvetica') erhalten.
Ich müsste also entweder - wie in CSS - eine Kette von Schriften angeben können, die der Reihe nach versucht wird, oder es müsste - wie bei CSS 'monospace' - einen universellen Platzhalter für 'nimm eine Schreibmaschinenschrift' geben.
Gibt es dafür in (Xe)LaTex eine Lösung?
mfg Volker
ich versuche gerade einen Vertrag, der in XeLaTeX geschrieben ist, in ein ausfüllbares Formular zu verwandeln.
Dazu habe ich mir erstmal eines der netten Formular-Beispiele gegriffen und versuche, es für meine Zwecke anzupassen:
\documentclass[a4paper]{scrartcl}
\usepackage{xltxtra}
\usepackage[ngerman]{babel}
\usepackage[xetex]{hyperref}
\usepackage[xetex]{insdljs}
\begin{insDLJS}[exaaae]{exaaae}{JavaScript auf Document Level}
done = 0;
function initfont(){
this.getField("Name").textFont = 'Courier';
this.getField("Staat").textFont = 'FreeMono';
}
function los(){
if (!done){
done = 1;
initfont();
}
}
\end{insDLJS}
\OpenAction{/S /JavaScript /JS (los();)}
\begin{document}
\selectfont
\begin{Form}
\TextField[
name=Name,
width=5cm,
bordercolor=.4 .4 1,
backgroundcolor=.9 .9 1,
bordersep=1,
charsize=8pt]
{Name:}
\ChoiceMenu[radio,
radiosymbol=\ding{54},
bordercolor=.4 .4 1,
backgroundcolor=.9 .9 1]
{Geschlecht:}{männlich,weiblich}
\ChoiceMenu[combo,
name=Staat,
bordercolor=.4 .4 1,
backgroundcolor=.9 .9 1]
{Staat:}{Deutschland,Frankreich,Niederlande,Schwei z}
\end{Form}
\end{document}
Es sieht auch alles schon sehr schön aus; nur ein Problem habe ich noch:
Ich möchte, dass die Schrift in den Feldern eine Schreibmaschinenschrift (Courier o.Ä.) ist. Wenn ich dafür
feld.textFont = 'FreeMono'; verwende, sieht es bei mir (unter Linux) auf dem Bildschirm und im Druck wie gewollt aus.
Aber wenn jemand auf einem Windows-Rechner oder Mac dieses Dokument aufruft, wird der wohl kaum wissen, was 'FreeMono' für eine Schrift ist. Wenn ich stattdessen
feld.textFont = 'Courier'; oder
feld.textFont = font.HelvB;oder Ähnliches (wie heißt eigentlich Courier in dem JavaScript-Modell) verwende, bleibt bei mir auf dem Schirm und im Druck die standardmäßige Schrift (ich glaube das ist eine 'Helvetica') erhalten.
Ich müsste also entweder - wie in CSS - eine Kette von Schriften angeben können, die der Reihe nach versucht wird, oder es müsste - wie bei CSS 'monospace' - einen universellen Platzhalter für 'nimm eine Schreibmaschinenschrift' geben.
Gibt es dafür in (Xe)LaTex eine Lösung?
mfg Volker