Was hqf-pdf erzeugt

Vollständige Dokumente — Rechnungen, Lieferscheine, Gehaltsabrechnungen, Verträge — und ein kleines Beispiel für jede Funktion, aus der sie gebaut sind, jedes erzeugt ein echtes PDF.

Jedes Beispiel kommt mit seinem Code, zweimal geschrieben: dasselbe Dokument einmal in Rust und einmal in Python. Die meisten haben außerdem eine dritte Schaltfläche: dasselbe Dokument in JSON, die Form, die an den Dienst gesendet wird.

Wofür jede Familie da ist Die von hqf-pdf erzeugten PDF ansehen Sehen, warum die Dateien meist halb so schwer sind, oft noch viel leichter und bis zu zwölfmal leichter

Vollständige Geschäftsdokumente

Die Dokumente, die ein Unternehmen jeden Tag versendet, erzeugt von der Software, die die Zahlen bereits hat. Wofür das da ist

Eine Gehaltsabrechnung

Eine Gehaltsabrechnung: achtzehn Beitragszeilen mit Arbeitnehmer- und Arbeitgeberanteil und für jede der Monatsbetrag und dann die Summe seit Januar. Jede Zahl ist mit der Zeile und der Spalte verknüpft, unter der sie steht, für eine Software, die die Seite vorliest.

Den Quellcode lesen in: Rust Python JSON

Das technische Detail

Die Beispiele oben sind ganze Dokumente. Die folgenden sind nach Thema geordnet: Jede Familie zeigt eine einzelne Sache, die eine Seite enthalten kann — eine Tabelle, einen Barcode, eine Signatur —, mit dem Programm, das sie erzeugt, sodass der Entwickler, der diese Bibliothek nutzt, genau sieht, wie es gemacht wird.

Seiten, Text und Schriften

Die Seite selbst, die Wörter darauf und die Schrift — in der Datei enthalten, damit die Seite überall gleich aussieht. Wofür das da ist

Eine Seite ohne Schrift

Vier Schriften, die jede Anzeigesoftware selbst zeichnet, auf einer Seite gesetzt, die gar keine Schrift enthält — und das Beispiel wiegt dieselben Zeilen auf beide Arten, um zu zeigen, was das spart. Dann noch einmal die vierzehn, in freien Schriften derselben Breiten, in der Datei enthalten.

Den Quellcode lesen in: Rust Python JSON

Absätze, Spalten und Typografie

Sie liefern den Text; die Bibliothek ermittelt, wo jede Zeile endet, wo jede Spalte aufhört und wo jede Seite umbricht. Wofür das da ist

Absatzeinzüge und -abstände

Dieselben zwei Absätze auf sechs Arten: wie sie kommen, eine eingerückte erste Zeile, eine herausgerückte erste Zeile, der Raum darüber und darunter, ein Blocksatzblock, dessen letzte Zeile zentriert ist, und wo die erste und die letzte Zeile in ihrem Rechteck sitzen. Eine zweite Seite setzt sie auf vier weitere Arten: zwei andere Regeln für die erste und letzte Zeile, nur umrandete Buchstaben und durch eine Linie darum verstärkte Buchstaben.

Den Quellcode lesen in: Rust Python JSON

Tabulatoren und Tabstopps

Dieselben tabulierten Zeilen unter jeder der drei Methoden, dann ein Inhaltsblock, dessen Punkte bis zu einem Stopp rechts laufen. Ein Tabulator kann von dort weitergehen, wo der Text aufhörte, auf dem regelmäßigen Raster einer Schreibmaschine landen oder auf einen eigenen Stopp zielen, an dem der folgende Text beginnt, sich zentriert oder an seinem Dezimalzeichen ausrichtet.

Den Quellcode lesen in: Rust Python JSON

Tabellen

Tabellen, die ihre Spalten an den Inhalt anpassen, über Seiten geteilt werden und die Kopfzeile auf jeder neuen Seite wiederholen. Wofür das da ist

Eine Tabelle, die sich selbst umbricht

Eine lange, als Ganzes übergebene Tabelle, die selbst entscheidet, wo die Seiten umbrechen: ihre Überschrift oben auf jeder Seite, ihre Fußnote unter jeder Seite, die Zelle eines Quartals über ihre Zeilen gespannt und oben auf der nächsten Seite erneut geschrieben, wenn eine Seite sie teilt, und eine Notiz, die Sie unter jede Seite genau an die Stelle zeichnen, die die Tabelle meldet.

Den Quellcode lesen in: Rust Python JSON

Bilder in Tabellenzellen

Ein Katalog, dessen erste Spalte ein Bild statt Text ist: vier Bilder sehr unterschiedlicher Größe und Proportion, jedes vollständig und unverzerrt in die Zelle eingepasst, die die Tabelle ihm gibt, und an eine andere Ecke davon gerückt, ohne Breite von seiner Spalte oder Höhe von seiner Zeile zu beanspruchen.

Den Quellcode lesen in: Rust Python JSON

Eine Seite und ein Stempel in Tabellenzellen

Eine Prüfseite für ein Paket, das jemand anderes geschickt hat: Jede Zeile zeigt eine seiner Seiten, vollständig aus der Datei genommen, in der sie ankam, neben einem Stempel, der einmal gezeichnet und in jede Zeile gesetzt wird, die ihn erhielt. Beide werden in die Zelle eingepasst, die die Tabelle ihnen lässt, ohne Breite von ihrer Spalte oder Höhe von ihrer Zeile zu beanspruchen.

Den Quellcode lesen in: Rust Python JSON

Ein Fahrplan, der über sein eigenes Layout berichtet

Ein Busfahrplan, bei dem jede Zelle umrandet ist und eine Notiz an jeder sagt, warum sie so groß ist, wie sie ist, mit erklärten Spaltenbreiten und Zeilenhöhen; dann eine trotz ihrer Fehler gesetzte Tabelle, eine über zwei Kästen geteilte Zeile, freier Raum unter Zeilen verteilt, eine für ihren Kasten zu breite Tabelle, die als Ganzes hineingeschrumpft wird, und ein Hinweis, der von Zelle zu Zelle eine Spalte hinunterläuft und dann durch die zwei Zellen einer Zeile.

Den Quellcode lesen in: Rust Python

Farbe, Druckfarben und Druck

Die Farbe, die Sie einstellen, ist die Farbe, die in die Druckmaschine geht, und die Druckerei nimmt die Datei so, wie sie ist. Wofür das da ist

Grau, Bildschirm- und Druckfarben

Farbfelder in jeder der drei Arten, eine Farbe anzugeben — ein Grau als eine Zahl, eine Bildschirmfarbe als drei, eine Druckfarbe als vier Druckfarben —, jedes mit der tatsächlich in die Datei geschriebenen Anweisung beschriftet, und ein mittleres Grau auf vier Arten angegeben, die letzte als der Hexadezimalcode, den ein Bildschirmgestalter übergibt.

Den Quellcode lesen in: Rust Python JSON

Ein Bogen, wie er in die Druckmaschine geht

Eine Zeichnung auf vier Seiten: ein Druckbogen, der angibt, wohin die Farbe läuft, wo das Messer fällt und was erhaltenswert ist, mit Schnittmarken; derselbe Bogen auf die fertige Seite beschnitten; eine Querformatseite, die auf einem aufrechten Blatt eine Vierteldrehung im Uhrzeigersinn angibt; und wieder der erste Bogen als rechte Hälfte eines zwei Seiten breiten Druckbogens.

Den Quellcode lesen in: Rust Python JSON

Ein für die Druckerei vorbereiteter Bogen

Ein Bogen, größer als die fertige Seite: Die Farbe läuft drei Millimeter über das Messer hinaus, die Schnittmarken stehen außerhalb davon in einer Farbe, die jede Platte trägt, jede Farbe ist in den vier Druckfarben angegeben, und die Seite nennt das Papier, den Rand der Farbe und den Schnitt. Übergeben Sie ihm das Profil einer Druckmaschine, und er beansprucht PDF/X-4, und der Bogen druckt auf sich selbst, auf welchem Profil er steht.

Den Quellcode lesen in: Rust Python JSON

Dieselben Zahlen, so gesagt, dass sie etwas bedeuten

Sechs Farben und ein Grauverlauf, dreimal mit genau denselben Zahlen gemalt: zuerst dem Gerät überlassen, dann auf zwei Arten angegeben, die das Weiß nennen, an dem sie gemessen werden, die Kurve, die auf sie angewendet wird, und wie weit die Grundfarben reichen. Eine zweite Seite malt bloße Zahlen, die nichts über ihre Bedeutung sagen, und lässt die Seite selbst es für sie sagen. All das reist in einer Handvoll Zahlen, ohne Profil zum Mitnehmen.

Den Quellcode lesen in: Rust Python JSON

Eine Regel statt hundert Farben

Vier Arten, die Regel aufzuschreiben, der eine Farbe folgt, statt der Farben selbst: aus einer Tabelle abgelesene gemessene Farben, ein in flache Bänder geteilter Bereich, eine am Bildschirm gezeigte Druckfarbe und zwei aneinandergefügte Regeln. Zwei weitere Seiten geben jeder Operation, die eine solche Regel verwenden kann, einen eigenen Graustreifen und speichern dann eine Tabelle in jeder Genauigkeit, von nur Schwarz und Weiß bis zur feinsten.

Den Quellcode lesen in: Rust Python JSON

Zeichnen, Muster und Transparenz

Linien, Formen, Verläufe und Transparenz, als Anweisungen in der Datei gezeichnet, nicht als Pixel — scharf in jeder Größe und fast ohne Gewicht. Wofür das da ist

Ein Plan, der zeigt, was sich lesen lässt

Ein Lageplan, dessen Ebenen selbst entscheiden, wann sie erscheinen. Ein breiter Name steht über dem Flurstück, solange der Plan als Ganzes betrachtet wird, die feinen Mauermaße kommen hinzu, sobald er auf das Doppelte vergrößert ist, und der Satz unter dem Plan steht in zwei Sprachen da, von denen die Anzeigesoftware die zeigt, auf die sie eingestellt ist.

Den Quellcode lesen in: Rust Python JSON

Eine Zeichnung, vielfach platziert

Ein als Zeichnung gebautes Namensschild, achtmal platziert, dazu einmal in halber Größe: Die Datei trägt die Zeichnung einmal, wie oft sie auch platziert wird. Eine zweite Seite zeigt ein Schild, das sich um ein Viertel dreht, wo immer es platziert wird, sagt, was es ist, und eine eigene Datei enthält: die Gästeliste.

Den Quellcode lesen in: Rust Python JSON

Bilder

Fotos in der Größe und an der Position Ihrer Wahl platziert, aus den Bilddateien, die eine Kamera oder ein Scanner bereits erzeugt. Wofür das da ist

Ein in ein Rechteck eingepasstes Bild

Ein Bild, auf acht Arten in ein Rechteck einer Größe eingepasst: drei Arten, es zu bemessen, dasselbe in die linke obere Ecke gestellt mit einem Einzug von 12 Punkt, eine Vierteldrehung nach links, eine Vierteldrehung nach rechts, eine Drehung um 20 Grad und eine Spiegelung von links nach rechts — jedes Feld zeichnet das Bild an der Stelle und in der Größe, die die Bibliothek berechnet hat. Eine zweite Seite fügt acht weitere hinzu: das Bild in seiner eigenen Größe, dann doppelt so groß und dort abgeschnitten, wo es übersteht; nur verkleinert, wenn es zu groß ist; an neun Positionen zugleich gesetzt; ein Viertel nach innen und nach unten platziert; um eine halbe Drehung gedreht; und von oben nach unten gespiegelt.

Den Quellcode lesen in: Rust Python JSON

Barcodes und 2D-Codes

Die Codes, die eine Kasse, ein Lagerscanner, ein Flugsteig oder ein Telefon liest, direkt auf das Dokument gedruckt. Wofür das da ist

Formulare, Stempel und Überlagerungen

Felder, die der Empfänger des Formulars am Bildschirm ausfüllt, und Ihr Text, über eine Vorlage gelegt: eine PDF-Datei, die jemand anderes bereits erzeugt hat. Wofür das da ist

Archivierung, Barrierefreiheit und Metadaten

Dokumente, die sich in Jahrzehnten noch öffnen lassen, die ein Screenreader vorliest und die eine Buchhaltung ohne Abtippen bucht. Wofür das da ist

Eine Datei, die ihre eigenen Einträge erklärt

Das Aktenzeichen einer Registratur, die Abteilung, aus der es stammt, das Datum, bis zu dem das Dokument aufzubewahren ist, und seine Einstufung, in einer Datei, die ein Archiv noch annimmt. Keine Archivregel weiß, was ein Aufbewahrungsdatum ist; jeder Eintrag trägt daher eine Beschreibung seiner selbst, und diese Beschreibung lässt eine Prüfsoftware eine Angabe akzeptieren, die Sie allein erfunden haben. Eine zweite Seite fügt einen Ausleihvermerk hinzu, dessen Einträge ein Ja oder Nein, ein Dateityp, ein Personenname, eine Messung und zwei Webadressen sind, und gibt dieser Seite einen eigenen verborgenen Vermerk.

Den Quellcode lesen in: Rust Python JSON