Neue Icons hinzugefügt, Anleitung weiter geschrieben
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
|
||||
135
doc/manual-de.md
135
doc/manual-de.md
@@ -7,7 +7,7 @@ Diese Anwendung soll helfen
|
||||
* sich wiederholende Scan-Vorgänge zu erleichtern
|
||||
* mehrseitige PDFs mit aus gescannten Einzelseiten zu erstellen
|
||||
|
||||
### Beispiel 1
|
||||
### Beispiel 1: wiederkehrendes Dokument mit wechselndem Datum
|
||||
|
||||
#### Aufgabenstellung
|
||||
Die die regelmäig per Brief kommende Lohnsteuerbescheinigung soll als PDF eingescannt
|
||||
@@ -59,13 +59,134 @@ Sofort wird das Speicher-_Schema_ sowie die weiteren Einstellungen geladen. Man
|
||||
|
||||
## Platzhalter
|
||||
|
||||
Wie schon erwähnt dienen Profile dazu, gleichartige oder ähnliche Dokumente an einem _gleich aufgebauten_ Pfad abzulegen.
|
||||
_Gleich aufgebaut_ meint dabei, dass zum Beispiel der Pfad zum Ablageodner immer gleich ist, und sich die Dateinamen nur im Datum, dem Betreff oder einer sonstigen Eigenschaft unterscheiden.
|
||||
|
||||
Damit aber nicht jedes mal, wenn ein Dokument erfasst werden soll, der Pfad angepasst werden muss gibt es Platzhalter:
|
||||
|
||||
Wird in einem Pfad ein Dollarzeichen, gefolgt von einem Wort eingegeben, so wird ein entsprechender Platzhalter mit einem separaten Eingabefeld erzeugt.
|
||||
|
||||
### Beispiel 2: Belege mit benutzerdefinierten Platzhaltern
|
||||
|
||||
Quittungen von wichtigen Einkäufen sollen archiviert werden.
|
||||
Die Ablage soll im Ordner „Belege“, nach Jahr und Monat gruppiert abgelegt werden.
|
||||
Innerhalb des Monats-Ordners sollen die Belege dem folgenden Namen-Schema folgen:
|
||||
<Tag>-<Monat>-<Jahr> - <Produkt> von <Händler>.
|
||||
|
||||
Wenn also am 1.2.2023 ein Gummihuhn im Obi gekaut wurde, soll der Pfad zum Dokument am Ende sein:
|
||||
|
||||
`<Benutzerordner>/Belege/2023/02/01.02.2023 - Gummihuhn von Obi.pdf`
|
||||
|
||||
Und der Beleg zum Kontinummtransfunktiniator, den man zu Weihnachten von Oma bekommt, soll unter
|
||||
|
||||
`<Benutzerordner>/Belege/1987/12/24.12.1987 - Kontinuumtransfunktionator von Oma.pdf` abgelegt werden.
|
||||
|
||||
Um das zu erreichen kann man ein neues Profil _Belege_ anlegen und dazu folgenden Pfad eingeben:
|
||||
|
||||
`$HOME/$PROFIL/$JAHR/$MONAT/$TAG.$MONAT.$JAHR - $Produkt von $Händler`
|
||||
|
||||
Dieser Pfad ist voll mit Platzhaltern:
|
||||
|
||||
* das schon bekannte `$HOME` steht für den Benutzerordner
|
||||
* `$PROFIL` wird durch den Profil-Namen, in diesem Fall _Belege_ ersetzt.
|
||||
* `$JAHR`, `$MONAT` sind schon von oben bekannt, `$TAG` wird entsprechend durch den Tag des Monats, der im Kalender gewählt ist, ersetzt.
|
||||
* `$Produkt` und `$Händler` sind sogenannte nutzerdefinierte Platzhalter.
|
||||
|
||||
Dadurch muss beim nächsten mal, wenn ein Beleg gescannt wird nur das entsprechende Datum und Profil ausgewählt werden und Produkt und Händler eingetragen werden.
|
||||
|
||||
### nutzerdefinierte Platzhalter
|
||||
|
||||
Immer wenn im Pfad ein Dollarzeichen ($), gefolgt von einem Wort, verwendet wird, handelt es sich dabei um einen Platzhalter.
|
||||
Steht das wort nicht für einen → _vordefinierten Platzhalter_, wird automatisch ein _nutzerdefinierter Platzhalter_ erzeugt.
|
||||
|
||||
D.h. für das Wort wird ein neues Eingabefeld erzeugt und der Platzhalter wird letztlich durch den Wert des Eingabefeldes ersetzt.
|
||||
|
||||
Im letzten Beispiel würden also zwei Eingabefelder erzeugt: eines für _Produkt_ und eines für _Händler_.
|
||||
|
||||
Die Platzhalter im Pfad werden dann durch die Werte der Eingabefelder ersetzt.
|
||||
|
||||
### vordefinierte Platzhalter
|
||||
|
||||
Neben der Möglichkeit neue Platzhalter zu erzeugen können auch folgende vordefinierte Platzhalter benutzt werden:
|
||||
|
||||
| Platzhalter | wir ersetzt durch | Beispiel |
|
||||
|-------------|-----------------------------------------------------------|--------------------------|
|
||||
| $HOME | Heimatverzeichnis des Benutzers | `/home/christiane_meise` |
|
||||
| $PROFIL | Name des Profils | `Rechnungen` |
|
||||
| $SEITE | aktuelle Seitennummer im Projekt | `5` |
|
||||
| $JAHR | Jahr des im Kalender gewählten Datums | `2023` |
|
||||
| $MONTH | Monat des im Kalender gewählten Datums (2-stellig) | `08` |
|
||||
| $Month | Name des im Kalender gewählten Monats | `August` |
|
||||
| $month | Name des im Kalender gewählten Monats (kleingeschrieben) | `august` |
|
||||
| $Mon | Kürzel des im Kalender gewählten Monats | `Aug` |
|
||||
| $mon | Kürzel des im Kalender gewählten Monats (kleingeschrieben) | `aug` |
|
||||
| $DAY | Tag des im Kalender gewählten Monats (2-stellig) | `27` |
|
||||
|
||||
|
||||
## mehrseitige Dokumente
|
||||
|
||||
Alle bisherigen Beispiele gingen davon aus, dass ein Projekt nur aus einer einzelnen Seite besteht.
|
||||
Oft ist es aber notwendig, mehrere Einzel-Seiten als Bilder abzulegen oder gar ein PDF daraus zu binden.
|
||||
|
||||
### Beispiel 3: mehrere Einzel-Seiten
|
||||
|
||||
Ein Freund auf Reisen schickt regelmäßig Postkarten, deren Vorder- und Rückseite digitalisiert werden sollen.
|
||||
|
||||
Für jede Postkarte soll im Ordner `Post` ein Unterordner für den Monat (ausgeschrieben) und darin für das Datum erzeugt werden.
|
||||
Darin sollen die Vorder- und Rückseite als `Seite 1.jpg` bzw. `Seite 2.jpg` abgelegt werden.
|
||||
|
||||
Hierzu empfiehlt sich folgendes Schema:
|
||||
|
||||
`$HOME/Post/$Monat/$TAG.$MONAT/Seite $SEITE`
|
||||
|
||||
Wird dann der 18.9. im Kalender und `jpeg` als Format gewählt, so würde die erste gescannte Seite als
|
||||
|
||||
`<Benutzerordner>/Post/September/18.9./Seite 1.jpg` und die zweite als `<Benutzerordner>/Post/September/18.9./Seite 2.jpg` gespeichert.
|
||||
|
||||
### Beispiel 4: mehrseitiges PDF
|
||||
|
||||
Eine Bank schickt monatlich Kontoauszüge, die mehrere Seiten lang sein können.
|
||||
|
||||
Diese sollen unter `Kontoauszüge/<Jahr>/<Jahr>-<Monat> Kontoauszug.pdf` abgelegt werden.
|
||||
|
||||
Hier empfielt es sich, ein Profil `Kontoauszug` anzulegen und folgenden _Pfad_ zu setzen:
|
||||
|
||||
`$HOME/Kontoauszuüge/$JAHR/$JAHR-$MONAT - $PROFIL $SEITE`.
|
||||
|
||||
Das `$PROFIL` im Pfad wird durch den Profil-Namen `Kontoauszug` ersetzt werden.
|
||||
Der Platzhalter `$SEITE` ist notwendig, da das Einscannen Seite für Seite erfolgt und die einzelnen Seiten erstmal unter verschiedenen Namen abgelegt werden – diese Seitennummer kann beim nachfolgenden Binden des PDFs entfernt werden, dazu gleich mehr.
|
||||
|
||||
Um den mehrseitigen Kontoauszug für März 2023 zu scannen muss man also einen Tag im März 2023 im Kalender und
|
||||
das Profil `Kontoauszug` und als Typ `pdf` oder `pdf+ocr` auswählen.
|
||||
|
||||
Beim ersten Klick auf _Scannen_ wird dann im oberen Bereich der Anwendung
|
||||
ein Projekt `<Benutzerordner>/Kontoauszuüge/2023/2023-03 - Kontoauszug [Seite]` angelegt
|
||||
und nach dem Scannen eine Datei `2023-03 - Kontoauszug 1.pdf` erzeugt.
|
||||
Beim nächsten Klick dann die Datei `2023-03 - Kontoauszug 2.pdf` und so weiter.
|
||||
|
||||
<img src="../src/main/resources/img/join.png" style="height: 50px; float: right;" />
|
||||
Nachdem alle Seiten des Projektes gescannt wurden, kann in der Projektzeile am oberen Rand der Anwendung der Button _PDFs binden_ derükt werden.
|
||||
|
||||
|
||||
Dies wird alle PDF-Dateien des Projekts (nicht aber die _jpg_-Dateien) zu einem mehrseitigen PDF vereinen.
|
||||
Wenn der Kontoauszug vorher fünf seiten hatte, die alle gescannt wurden, so wird das gebundene PDF wie folgt benannt:
|
||||
`2023-03 - Kontoauszug 1…5.pdf`.
|
||||
|
||||
Falls die Seitenangabe `1…5` nicht erwünscht ist, kann vor dem Binden die Option `[Seite] beim Zusammenfügen entfernen` gewählt werden.
|
||||
Dann wäre der Seitenname des gebundenen PDFs `2023-03 - Kontoauszug.pdf`.
|
||||
|
||||
### Löschen von einzelnen Seiten beim Scannen
|
||||
|
||||
Manchmal passiert es, das man versehentlich eine Seite doppelt scannt oder die aktuelle gescannte Seite nicht richtig ausgerichtet war.
|
||||
Da jede gescannte Seite im Vorschaufenster angezeigt wird, sollte dies schnell auffallen.
|
||||
|
||||
<img src="../src/main/resources/img/trash.png" style="height: 50px; float: right" />
|
||||
In so einem Fall kann man die letzte Seite des aktuellen Projekts einfach löschen, indem man auf den entsprechenden Button klickt:
|
||||
|
||||
## TODOs
|
||||
|
||||
* Zusatzfelder zum aktuellen Profile mit speichern
|
||||
* diese Anleitung vervollständigen
|
||||
* vordefinierte Platzhalter
|
||||
* nutzerdefinierte Platzhalter
|
||||
* Löschen von Profilen
|
||||
* Beispiele für Profile
|
||||
* Funktion der Projekt-Knöpfe
|
||||
* diese Anleitung vervollständigen
|
||||
* Löschen von Profilen
|
||||
* Funktion der Projekt-Knöpfe
|
||||
* Buttons deaktivieren, die von der Logik keinen Sinn ergeben
|
||||
@@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.border.MatteBorder;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionListener;
|
||||
@@ -21,6 +22,11 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static de.srsoftware.belegscanner.Application.t;
|
||||
import static java.awt.Color.black;
|
||||
import static javax.swing.BorderFactory.createCompoundBorder;
|
||||
import static javax.swing.BorderFactory.createEmptyBorder;
|
||||
import static javax.swing.BorderFactory.createLineBorder;
|
||||
import static javax.swing.BorderFactory.createMatteBorder;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -29,13 +35,15 @@ import static de.srsoftware.belegscanner.Application.t;
|
||||
*
|
||||
*/
|
||||
public class DocTable extends JPanel{
|
||||
|
||||
private static final Border BOTTOM_LINE = createMatteBorder(0, 0, 1, 0, black);
|
||||
private static final Border IMAGE_BUTTON = createCompoundBorder(createLineBorder(black),createEmptyBorder(5,5,5,5));
|
||||
private static final Logger LOG = LoggerFactory.getLogger(DocTable.class);
|
||||
private static final int IMAGE_HEIGHT = 32;
|
||||
private static FilenameFilter PAGES = (dir,name) -> name.toLowerCase().endsWith("pdf") && name.toLowerCase().contains("page");
|
||||
private static int rowCounter = 0;
|
||||
private static Font btnFont = new Font("Arial", Font.PLAIN, 28);
|
||||
private final Worker worker;
|
||||
private Image openDir, joinFiles,preview;
|
||||
private Image openDir, joinFiles,preview,finish,trash;
|
||||
|
||||
private List<Project> projects = new ArrayList<>();
|
||||
|
||||
@@ -69,8 +77,8 @@ public class DocTable extends JPanel{
|
||||
buttons.add(button(openDir,t("open folder"),ev -> project.openDir()));
|
||||
buttons.add(joinButton = button(joinFiles,t("join PDFs"),ev -> worker.join(project)));
|
||||
buttons.add(button(preview,t("display preview"),ev -> worker.preview(project.lastPage())));
|
||||
buttons.add(button("✓",t("done"),ev -> drop(this)));
|
||||
buttons.add(button("❌",t("drop last page"),ev -> worker.preview(project.dropLastPage().lastPage())));
|
||||
buttons.add(button(trash,t("drop last page"),ev -> worker.preview(project.dropLastPage().lastPage())));
|
||||
buttons.add(button(finish,t("done"),ev -> drop(this)));
|
||||
|
||||
constraints.gridx = 2;
|
||||
add(buttons,constraints);
|
||||
@@ -122,51 +130,36 @@ public class DocTable extends JPanel{
|
||||
constraints.insets = new Insets(3, 10, 3, 10);
|
||||
constraints.gridy = 0;
|
||||
constraints.gridx = 0;
|
||||
MatteBorder border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.black);
|
||||
JLabel ordner = new JLabel(t("Directory"),SwingConstants.CENTER);
|
||||
ordner.setBorder(border);
|
||||
ordner.setBorder(BOTTOM_LINE);
|
||||
add(ordner,constraints);
|
||||
constraints.gridx = 1;
|
||||
JLabel status = new JLabel(t("State"),SwingConstants.CENTER);
|
||||
status.setBorder(border);
|
||||
status.setBorder(BOTTOM_LINE);
|
||||
add(status,constraints);
|
||||
constraints.gridx = 2;
|
||||
JLabel actions = new JLabel(t("Actions"),SwingConstants.CENTER);
|
||||
actions.setBorder(border);
|
||||
actions.setBorder(BOTTOM_LINE);
|
||||
add(actions,constraints);
|
||||
|
||||
|
||||
try {
|
||||
openDir = ImageIO.read(getClass().getResource("/img/open-dir.png")).getScaledInstance(41,32,Image.SCALE_SMOOTH);
|
||||
} catch (IOException e) {
|
||||
openDir = null;
|
||||
}
|
||||
try {
|
||||
joinFiles = ImageIO.read(getClass().getResource("/img/join.png")).getScaledInstance(32,32,Image.SCALE_SMOOTH);
|
||||
} catch (IOException e) {
|
||||
joinFiles = null;
|
||||
}
|
||||
try {
|
||||
preview = ImageIO.read(getClass().getResource("/img/preview.png")).getScaledInstance(32,32,Image.SCALE_SMOOTH);
|
||||
} catch (IOException e) {
|
||||
preview = null;
|
||||
}
|
||||
openDir = load("open-dir.png").orElse(null);
|
||||
joinFiles = load("join.png").orElse(null);
|
||||
preview = load("preview.png").orElse(null);
|
||||
finish = load("finish.png").orElse(null);
|
||||
trash = load("trash.png").orElse(null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* helper method to create a button with given label, tooltip and action listener
|
||||
* @param label
|
||||
* @param tooltip
|
||||
* @param listener
|
||||
* @return
|
||||
*/
|
||||
private static JButton button(String label, String tooltip, ActionListener listener) {
|
||||
JButton btn = new JButton(label);
|
||||
btn.setFont(btnFont);
|
||||
btn.setToolTipText(tooltip);
|
||||
btn.addActionListener(listener);
|
||||
return btn;
|
||||
private static Optional<Image> load(String name){
|
||||
try {
|
||||
var path = String.join("/","","img",name);
|
||||
BufferedImage large = ImageIO.read(DocTable.class.getResource(path));
|
||||
double height = large.getHeight();
|
||||
var width = large.getWidth();
|
||||
double factor = IMAGE_HEIGHT / height;
|
||||
return Optional.of(large.getScaledInstance((int)(width*factor),IMAGE_HEIGHT,Image.SCALE_SMOOTH));
|
||||
} catch (IOException e) {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
private static JButton button(Image image, String tooltip, ActionListener listener) {
|
||||
@@ -174,6 +167,7 @@ public class DocTable extends JPanel{
|
||||
if (image != null) btn.setIcon(new ImageIcon(image));
|
||||
btn.setToolTipText(tooltip);
|
||||
btn.addActionListener(listener);
|
||||
btn.setBorder(IMAGE_BUTTON);
|
||||
return btn;
|
||||
}
|
||||
|
||||
|
||||
374
src/main/resources/img/trash.dia
Normal file
374
src/main/resources/img/trash.dia
Normal file
@@ -0,0 +1,374 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
|
||||
<dia:diagramdata>
|
||||
<dia:attribute name="background">
|
||||
<dia:color val="#ffffffff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pagebreak">
|
||||
<dia:color val="#000099ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="paper">
|
||||
<dia:composite type="paper">
|
||||
<dia:attribute name="name">
|
||||
<dia:string>#A4#</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="tmargin">
|
||||
<dia:real val="2.8222000598907471"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="bmargin">
|
||||
<dia:real val="2.8222000598907471"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="lmargin">
|
||||
<dia:real val="2.8222000598907471"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="rmargin">
|
||||
<dia:real val="2.8222000598907471"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="is_portrait">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="scaling">
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="fitto">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="grid">
|
||||
<dia:composite type="grid">
|
||||
<dia:attribute name="dynamic">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="width_x">
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="width_y">
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="visible_x">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="visible_y">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:composite type="color"/>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#d8e5e5ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="guides">
|
||||
<dia:composite type="guides">
|
||||
<dia:attribute name="hguides"/>
|
||||
<dia:attribute name="vguides"/>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="display">
|
||||
<dia:composite type="display">
|
||||
<dia:attribute name="antialiased">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="snap-to-grid">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="snap-to-object">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show-grid">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show-connection-points">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
</dia:diagramdata>
|
||||
<dia:layer name="Hintergrund" visible="true" connectable="true" active="true">
|
||||
<dia:object type="Flowchart - Ellipse" version="0" id="O0">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="15,26"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="14.9,25.9;25.1,30.1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="15,26"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="9.9999999999999982"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="4"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_width">
|
||||
<dia:real val="0.20000000298023224"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="inner_color">
|
||||
<dia:color val="#e5e5e5ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="padding">
|
||||
<dia:real val="0.35355339059327379"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>##</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="20,28.1941"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#ff0000ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="1"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Flowchart - Box" version="0" id="O1">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="15,23"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="14.9,22.9;25.1,28.1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="15,23"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="10"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_width">
|
||||
<dia:real val="0.20000000298023224"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_color">
|
||||
<dia:color val="#e5e5e5ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="inner_color">
|
||||
<dia:color val="#e5e5e5ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="padding">
|
||||
<dia:real val="0.5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>##</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="20,25.6941"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#000000ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="1"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Flowchart - Ellipse" version="0" id="O2">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="15,21"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="14.9,20.9;25.1,25.1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="15,21"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="9.9999999999999982"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="4"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_width">
|
||||
<dia:real val="0.20000000298023224"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="inner_color">
|
||||
<dia:color val="#cbd0deff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="padding">
|
||||
<dia:real val="0.35355339059327379"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>##</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="20,23.1941"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#ff0000ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="1"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Flowchart - Parallelogram" version="0" id="O3">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="17,19"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="16.9,18.9;23.1,24.1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="17,19"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="6"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_width">
|
||||
<dia:real val="0.20000000298023224"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="inner_color">
|
||||
<dia:color val="#800080ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="shear_angle">
|
||||
<dia:real val="70"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="padding">
|
||||
<dia:real val="0.5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>##</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="20,21.6941"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#000000ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="1"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Line" version="0" id="O4">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="15,23"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="14.9,22.9;15.1,28.1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="conn_endpoints">
|
||||
<dia:point val="15,23"/>
|
||||
<dia:point val="15,28"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="numcp">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_width">
|
||||
<dia:real val="0.20000000298023224"/>
|
||||
</dia:attribute>
|
||||
<dia:connections>
|
||||
<dia:connection handle="0" to="O1" connection="0"/>
|
||||
<dia:connection handle="1" to="O0" connection="8"/>
|
||||
</dia:connections>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Line" version="0" id="O5">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="25,23"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="24.9,22.9;25.1,28.1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="conn_endpoints">
|
||||
<dia:point val="25,23"/>
|
||||
<dia:point val="25,28"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="numcp">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_width">
|
||||
<dia:real val="0.20000000298023224"/>
|
||||
</dia:attribute>
|
||||
<dia:connections>
|
||||
<dia:connection handle="0" to="O1" connection="4"/>
|
||||
<dia:connection handle="1" to="O0" connection="0"/>
|
||||
</dia:connections>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Polygon" version="0" id="O6">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="19,25.495"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="17.9293,25.4243;22.0707,29.5657"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="poly_points">
|
||||
<dia:point val="19,25.495"/>
|
||||
<dia:point val="20,26.495"/>
|
||||
<dia:point val="21,25.495"/>
|
||||
<dia:point val="22,26.495"/>
|
||||
<dia:point val="21,27.495"/>
|
||||
<dia:point val="22,28.495"/>
|
||||
<dia:point val="21,29.495"/>
|
||||
<dia:point val="20,28.495"/>
|
||||
<dia:point val="19,29.495"/>
|
||||
<dia:point val="18,28.495"/>
|
||||
<dia:point val="19,27.495"/>
|
||||
<dia:point val="18,26.495"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_color">
|
||||
<dia:color val="#ff0000ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="inner_color">
|
||||
<dia:color val="#ff0000ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
</dia:layer>
|
||||
</dia:diagram>
|
||||
BIN
src/main/resources/img/trash.png
Normal file
BIN
src/main/resources/img/trash.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
@@ -15,6 +15,7 @@ Directory : Ordner
|
||||
display preview : Vorschau anzeigen
|
||||
drop file : Datei löschen
|
||||
done : fertig
|
||||
drop last page : letzte Seite verwerfen
|
||||
Error code\: {} for {} : Fehlercode: {} für {}
|
||||
February : Februar
|
||||
File "{}" does already exist and would be overwritten. Continue? : Die Datei „{}“ existiert bereits. Soll sie überschrieben werden?
|
||||
@@ -25,7 +26,7 @@ help : Hilfe
|
||||
Improve brightness : Helligkeit verbessern
|
||||
January : Januar
|
||||
Joining PDFs… : Verbinde PDFs…
|
||||
join PDFs : PDFs zusammenführen
|
||||
join PDFs : PDFs binden
|
||||
July : Juli
|
||||
Language support : Sprach-Unterstützung
|
||||
May : Mai
|
||||
|
||||
Reference in New Issue
Block a user