von Investment » Di 30. Jun 2020, 06:01
Guten Morgen zusammen,
nach abermals unzähligen Versuchen, einen bestimmten Font in einem Textfeld nutzen zu können, bin ich vermutlich endlich auf die Lösung gestossen.
Folgende Abfolge von Schritten war/ist nötig, um das gewünschte Ergebnis zu erzielen.
- beliebiges PDF mit einem vorhandenen Textfield in einem PDF-Editor öffnen und im Textfield den Font auswählen, welcher euch zusagt
- PDF speichern und "pdffonts Datei.pdf" starten in einer Kommandozeile
- der gesuchte Font wird lediglich hier korrekt aufgelistet, auch wenn er noch nicht eingebunden oder setzt wurde [im Acrobat Reader wird er lediglich ersetzt und ist deswegen unter Ctrl-D / Schriften unauffindbar]
- In Latex im Textfield via Option (siehe Minimalbeispiel) den gerade herausgefundenen Fontsnamen einsetzen (ohne Leerzeichen)
\TextField
[
name = testTextfield,
format =
{
var f = this.getField('testTextfield');
f.textFont = 'Wonderbar2.0';
% ladet euch dazu testweise diesen Font von https://www.1001freefonts.com/d/27045/wonderbar-2.0.zip herunter
}
]{Labeltext}
Wenn der Font hier korrekt eingetragen wird, so wird er automatisch vollständig im PDF eingebunden und dies sogar ohne eine vorherige Verwendung von \usepackage{fontname} [Anmerkung: natürlich muss der Font irgendwo bei euch installiert sein und es kann auch die wohl meist genutzte pdf-chain genutzt werden ]
Dies bedeutet im Umkehrschluss - die weitere Vorgehensweise dient lediglich zur vollständigen Implementierung der außerhalb dieses Textfeldes genutzten Fonts "Feuer frei"
- Erstellung einer .ps-Datei (z.B. via TeXStudio mittel txs:///ps-chain oder txs:///dvi-ps-pdf-chain [Optionen/TeXStudio konfigurieren/Erzeugen/Erstellen & Anzeigen] mittels F5 oder F6 im Editor)
allerdings führt in TeXStudio
ps2pdf -dEmbedAllFonts=true -dPDFSETTINGS=/printer -dCompatibilityLevel=1.4 %.ps
unter [Optionen/TeXStudio konfigurieren/Befehle/Ps2Pdf] eingetragen zum Abbruch, weil angeblich das zuvor sauber erzeugte PS-File nicht gefunden werden kann. Deswegen muss der nächste Schritt derzeit noch manuell ausgeführt werden.
- Batch-Datei mit folgendem Code starten
"Pfad1\gswin64c.exe" -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dEmbedAllFonts=true -dSubsetFonts=false -sOutputFile="Pfad2\Datei.pdf" -f "Pfad3\Datei.ps"
wobei ihr bitte für Pfad1..3 die Pfade eintragt, wo die jeweiligen Dateien zu finden sind
- lediglich der Acrobat Reader hatte bisher den gewünschten und vollständig eingebetteten Font korrekt im Textfield dargestellt.
- freuen, dass es endlich möglich ist
Lasst mich gern wissen, ob ihr damit Erfolge erzielen konntet.
Und hier nun das Minimalbeispiel:
\documentclass{article}
\usepackage[pdfstartview=FitH]{hyperref}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage{tikz}
\usepackage{eforms}
% Ausrichtung des Textes im Textfield an die Basisline des außerhalb des Objektes befindlichen Textes
\def\LayoutTextField#1#2{% label, field
#1 \tikz[baseline={([yshift=2.25pt]baseline.base)}]{\node[] (baseline) {#2};}%
}
\begin{document}
\selectfont
\begin{Form}
\TextField
[
name = lintest,
value = Text in Linux Libertine G,
format =
{
var f = this.getField('lintest');
f.textFont = 'LinuxLibertineG';
},
]{Label in Libertine}
\end{Form}
\end{document}
Guten Morgen zusammen,
nach abermals unzähligen Versuchen, einen bestimmten Font in einem Textfeld nutzen zu können, bin ich vermutlich endlich auf die Lösung gestossen.
Folgende Abfolge von Schritten war/ist nötig, um das gewünschte Ergebnis zu erzielen.
0. beliebiges PDF mit einem vorhandenen Textfield in einem PDF-Editor öffnen und im Textfield den Font auswählen, welcher euch zusagt
1. PDF speichern und "pdffonts Datei.pdf" starten in einer Kommandozeile
3. der gesuchte Font wird lediglich hier korrekt aufgelistet, auch wenn er noch nicht eingebunden oder setzt wurde [im Acrobat Reader wird er lediglich ersetzt und ist deswegen unter Ctrl-D / Schriften unauffindbar]
4. In Latex im Textfield via Option (siehe Minimalbeispiel) den gerade herausgefundenen Fontsnamen einsetzen (ohne Leerzeichen)
[code]
\TextField
[
name = testTextfield,
format =
{
var f = this.getField('testTextfield');
f.textFont = 'Wonderbar2.0';
% ladet euch dazu testweise diesen Font von https://www.1001freefonts.com/d/27045/wonderbar-2.0.zip herunter
}
]{Labeltext}
[/code]
Wenn der Font hier korrekt eingetragen wird, so wird er automatisch vollständig im PDF eingebunden und dies sogar ohne eine vorherige Verwendung von \usepackage{fontname} :D [Anmerkung: natürlich muss der Font irgendwo bei euch installiert sein und es kann auch die wohl meist genutzte pdf-chain genutzt werden :D]
Dies bedeutet im Umkehrschluss - die weitere Vorgehensweise dient lediglich zur vollständigen Implementierung der außerhalb dieses Textfeldes genutzten Fonts :arrow: "Feuer frei" ;)
5. Erstellung einer .ps-Datei (z.B. via TeXStudio mittel txs:///ps-chain oder txs:///dvi-ps-pdf-chain [Optionen/TeXStudio konfigurieren/Erzeugen/Erstellen & Anzeigen] mittels F5 oder F6 im Editor)
allerdings führt in TeXStudio
[code]
ps2pdf -dEmbedAllFonts=true -dPDFSETTINGS=/printer -dCompatibilityLevel=1.4 %.ps
[/code]
unter [Optionen/TeXStudio konfigurieren/Befehle/Ps2Pdf] eingetragen zum Abbruch, weil angeblich das zuvor sauber erzeugte PS-File nicht gefunden werden kann. Deswegen muss der nächste Schritt derzeit noch manuell ausgeführt werden.
6. Batch-Datei mit folgendem Code starten
[code]
"Pfad1\gswin64c.exe" -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dEmbedAllFonts=true -dSubsetFonts=false -sOutputFile="Pfad2\Datei.pdf" -f "Pfad3\Datei.ps"
[/code]
wobei ihr bitte für Pfad1..3 die Pfade eintragt, wo die jeweiligen Dateien zu finden sind
7. lediglich der Acrobat Reader hatte bisher den gewünschten und vollständig eingebetteten Font korrekt im Textfield dargestellt.
8. freuen, dass es endlich möglich ist
Lasst mich gern wissen, ob ihr damit Erfolge erzielen konntet.
Und hier nun das Minimalbeispiel:
[code]
\documentclass{article}
\usepackage[pdfstartview=FitH]{hyperref}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage{tikz}
\usepackage{eforms}
% Ausrichtung des Textes im Textfield an die Basisline des außerhalb des Objektes befindlichen Textes
\def\LayoutTextField#1#2{% label, field
#1 \tikz[baseline={([yshift=2.25pt]baseline.base)}]{\node[] (baseline) {#2};}%
}
\begin{document}
\selectfont
\begin{Form}
\TextField
[
name = lintest,
value = Text in Linux Libertine G,
format =
{
var f = this.getField('lintest');
f.textFont = 'LinuxLibertineG';
},
]{Label in Libertine}
\end{Form}
\end{document}
[/code]