Version 2.7.7: Schriftgroesse der Vorschau wird gerechnet
This commit is contained in:
1 parent
5dcb87d6ec
commit
2db7e03154
6 files changed
+35
-11
No files matched your search
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm"
|
name = "tesm"
|
||||||
version = "2.7.6"
|
version = "2.7.7"
|
||||||
description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen"
|
description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm-core"
|
name = "tesm-core"
|
||||||
version = "2.7.6"
|
version = "2.7.7"
|
||||||
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
|
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ def create_base_app(
|
|||||||
#: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide
|
#: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide
|
||||||
#: Anwendungen.
|
#: Anwendungen.
|
||||||
auth_tagline: str = "",
|
auth_tagline: str = "",
|
||||||
app_version: str = "2.7.6",
|
app_version: str = "2.7.7",
|
||||||
built_in_trusted_keys: tuple[str, ...] = (),
|
built_in_trusted_keys: tuple[str, ...] = (),
|
||||||
enable_license: bool = True,
|
enable_license: bool = True,
|
||||||
template_folder: str | None = None,
|
template_folder: str | None = None,
|
||||||
|
|||||||
@@ -1461,7 +1461,6 @@
|
|||||||
z-index: 3;
|
z-index: 3;
|
||||||
cursor: grab;
|
cursor: grab;
|
||||||
touch-action: none;
|
touch-action: none;
|
||||||
container-type: inline-size;
|
|
||||||
border: 1px dashed transparent;
|
border: 1px dashed transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1487,7 +1486,10 @@
|
|||||||
Mit der Hausschrift sah die Vorschau anders aus als das Ergebnis. Die
|
Mit der Hausschrift sah die Vorschau anders aus als das Ergebnis. Die
|
||||||
Groesse setzt das Skript je Unterschrift -- hier steht nur ein Rueckfall. */
|
Groesse setzt das Skript je Unterschrift -- hier steht nur ein Rueckfall. */
|
||||||
font-family: Helvetica, Arial, sans-serif;
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
font-size: 5.6cqw;
|
/* Die tatsaechliche Groesse setzt das Skript in Pixeln (Punkte mal
|
||||||
|
Pixel-je-Punkt der Seite). Dieser Wert gilt nur, solange sie noch nicht
|
||||||
|
gerechnet wurde -- geerbt wuerde sonst die Schriftgroesse der Seite. */
|
||||||
|
font-size: 8px;
|
||||||
line-height: 1.15;
|
line-height: 1.15;
|
||||||
color: #111;
|
color: #111;
|
||||||
border-top: 1px solid rgba(0, 0, 0, 0.85);
|
border-top: 1px solid rgba(0, 0, 0, 0.85);
|
||||||
|
|||||||
@@ -346,8 +346,8 @@ async function nachbearbeiten(
|
|||||||
*
|
*
|
||||||
* Ein Achtzehntel: bei den 150 Punkt der vollen Breite sind das gut acht
|
* Ein Achtzehntel: bei den 150 Punkt der vollen Breite sind das gut acht
|
||||||
* Punkt -- die uebliche Groesse einer Unterschriftszeile auf Papier. Dieselbe
|
* Punkt -- die uebliche Groesse einer Unterschriftszeile auf Papier. Dieselbe
|
||||||
* Rechnung benutzt die Vorschau (als ``cqw``), damit auf dem Schirm steht,
|
* Rechnung benutzt die Vorschau -- in Pixeln umgerechnet --, damit auf dem
|
||||||
* was spaeter im PDF steht.
|
* Schirm steht, was spaeter im PDF steht.
|
||||||
*/
|
*/
|
||||||
function schriftgroesse(breite) {
|
function schriftgroesse(breite) {
|
||||||
return Math.max(5, Math.min(10, breite / 18));
|
return Math.max(5, Math.min(10, breite / 18));
|
||||||
@@ -637,6 +637,8 @@ async function pdfBetrachter(behaelter, seiten, url, basis, { formulare = true }
|
|||||||
const MAX_BREITE = 150;
|
const MAX_BREITE = 150;
|
||||||
const MAX_HOEHE = 50;
|
const MAX_HOEHE = 50;
|
||||||
const unterschriften = [];
|
const unterschriften = [];
|
||||||
|
//: Je gesetzte Unterschrift eine Funktion, die ihre Marke neu vermisst.
|
||||||
|
const neuzeichnen = new Set();
|
||||||
let wartendeUnterschrift = null;
|
let wartendeUnterschrift = null;
|
||||||
let zeugenzeile = () => "";
|
let zeugenzeile = () => "";
|
||||||
|
|
||||||
@@ -717,16 +719,24 @@ async function pdfBetrachter(behaelter, seiten, url, basis, { formulare = true }
|
|||||||
marke.style.left = `${(eintrag.x / blick.width) * 100}%`;
|
marke.style.left = `${(eintrag.x / blick.width) * 100}%`;
|
||||||
marke.style.bottom = `${(eintrag.y / blick.height) * 100}%`;
|
marke.style.bottom = `${(eintrag.y / blick.height) * 100}%`;
|
||||||
marke.style.width = `${(eintrag.breite / blick.width) * 100}%`;
|
marke.style.width = `${(eintrag.breite / blick.width) * 100}%`;
|
||||||
// Dieselbe Rechnung wie beim Stempeln, samt ihrer Ober- und Untergrenze
|
// Die Schriftgroesse wird gerechnet, nicht vom Stylesheet abgeleitet:
|
||||||
// -- in "cqw" (Prozent der Blockbreite), damit sie beim Zoomen mitgeht.
|
// Punkte mal Pixel-je-Punkt der gerade dargestellten Seite. Ueber
|
||||||
text.style.fontSize = `${(schriftgroesse(eintrag.breite) / eintrag.breite) * 100}cqw`;
|
// Container-Einheiten ("cqw") ging das auch -- aber nur dort, wo der
|
||||||
|
// Browser sie kennt; wo nicht, erbte der Block die Schriftgroesse der
|
||||||
|
// Seite, und der Text war um die Haelfte zu breit. Genau das war der
|
||||||
|
// Unterschied zwischen Vorschau und Datei.
|
||||||
|
const proPunkt = seitenEl.getBoundingClientRect().width / blick.width;
|
||||||
|
text.style.fontSize = `${schriftgroesse(eintrag.breite) * proPunkt}px`;
|
||||||
};
|
};
|
||||||
|
// Beim Zoomen aendert sich Pixel-je-Punkt -- dann neu rechnen.
|
||||||
|
neuzeichnen.add(zeichnen);
|
||||||
zeichnen();
|
zeichnen();
|
||||||
|
|
||||||
weg.addEventListener("click", (event) => {
|
weg.addEventListener("click", (event) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
const stelle = unterschriften.indexOf(eintrag);
|
const stelle = unterschriften.indexOf(eintrag);
|
||||||
if (stelle >= 0) unterschriften.splice(stelle, 1);
|
if (stelle >= 0) unterschriften.splice(stelle, 1);
|
||||||
|
neuzeichnen.delete(zeichnen);
|
||||||
marke.remove();
|
marke.remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -778,6 +788,18 @@ async function pdfBetrachter(behaelter, seiten, url, basis, { formulare = true }
|
|||||||
platzieren(event).catch((fehler) => console.error("Unterschrift", fehler));
|
platzieren(event).catch((fehler) => console.error("Unterschrift", fehler));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Nach dem Zoomen stehen die Marken anteilig richtig, aber die Schrift
|
||||||
|
// haengt an der Pixelgroesse der Seite -- die ist jetzt eine andere.
|
||||||
|
eventBus.on("scalechanging", () => {
|
||||||
|
for (const zeichnen of neuzeichnen) {
|
||||||
|
try {
|
||||||
|
zeichnen();
|
||||||
|
} catch (fehler) {
|
||||||
|
console.error("Unterschrift neu vermessen", fehler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
hinein: () => {
|
hinein: () => {
|
||||||
viewer.currentScale = Math.min(MAX_ZOOM, viewer.currentScale * 1.2);
|
viewer.currentScale = Math.min(MAX_ZOOM, viewer.currentScale * 1.2);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm-licensing"
|
name = "tesm-licensing"
|
||||||
version = "2.7.6"
|
version = "2.7.7"
|
||||||
description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver"
|
description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = ["cryptography>=42"]
|
dependencies = ["cryptography>=42"]
|
||||||
|
|||||||
Reference in new issue
Block a user