Itext-Paragraph Position ändern

JanaEscobar

Mitglied
Guten Tag zusammen,

ich schreibe mir Itext eine Rechnung.

Nun möchte ich gerne dass die Adresse von den Kunden auf der linke Seite steht und die Adresse von Entsorger auf der rechte Seite, nur klappt es bei mir nicht.
Wenn die Anschrift von den Entsorger höher stellen will, wird die Anschrift auf die linke Seite geschoben.


Auch möchte ich gerne auch die Anschrift von der Privatperson mehr nach oben schieben.

Ich hoffe ich kann von euch lernen!



Java:
 Paragraph PrivatPersonDaten = new Paragraph("Name " + name + "\n" +
                "Anschrift: " + anschrift + "\n" +
                "Pers.-Ausweis Nr.: " + steuernummer+ "\n",SchriftgrößeHeader);

        PrivatPersonDaten.setAlignment(Chunk.ALIGN_TOP);


Java:
Paragraph AnschriftEntsorger = new Paragraph("xyz Weg 121b \n" +
                "1234 Musterstadt \n" +
                "Tel: 5678/67854 \n" +
                "Mobil:12345756\n" +
                "UST-NR. 66/6666/6666");
        AnschriftEntsorger.setAlignment(Chunk.ALIGN.TOP|Chunk.ALIGN_RIGHT);




Gruß,

Jana
 

Anhänge

  • forum.jpg
    forum.jpg
    46,3 KB · Aufrufe: 15
Versuch mal
Java:
AnschriftEntsorger.setAlignment(Chunk.ALIGN.TOP && Chunk.ALIGN_RIGHT);

BTW. Variablennamen fangen mit kleinen Buchstaben an 🙂
 
Hallo kirby_Sike,

leider funktioniert es nicht!
Es funktioniert nur wenn man es so macht:
Java:
AnschriftEntsorger.setAlignment(Chunk.ALIGN_RIGHT|Chunk.ALIGN_TOP);
nur komme ich so auch nicht ins Ziel.


Gruß,

Jana
 
Also das liegt daran, dass du nur eine Position festlegen kannst xD Die Methode .setAlignment hat nur einen Parameter 😉


Du müsstest es wie folgt machen:

Java:
AnschriftEntsorger.setAlignment(Chunk.ALIGN_LEFT);
Du alignst diesen Paragraph Links und dann musst bei der Reihenfolge aufpassen 🙂 Schick mal deinen restlichen Code wie du die PDF erstellst
 
Hallo kirby_Sike,
Hier ist der Code:

Java:
  private static void CreateHeader() throws DocumentException {


        Font SchriftgrößeHeader = FontFactory.getFont(FontFactory.TIMES_ROMAN, 12,Font.BOLD);
        Font SchriftgrößeTitel = FontFactory.getFont(FontFactory.TIMES_ROMAN, 16,Font.BOLD);


        Chunk underline = new Chunk("Abrechnung",SchriftgrößeTitel);
        underline.setUnderline(0.1f, -2f);
        document.add(underline);


        Paragraph UnternehmerCheckBox = new Paragraph("Unternehmer",SchriftgrößeHeader);
        Paragraph Unternehdaten = new Paragraph("Name " + name + "\n" +
                "Anschrift: " + anschrift + "\n" +
                "Steuernummer: " + steuernummer + "\n",SchriftgrößeHeader);

        Unternehdaten.setAlignment(Element.ALIGN_TOP);

        Paragraph newlineUnternehmNachricht = new Paragraph(Chunk.NEWLINE);
        Paragraph UnternehmNachricht = new Paragraph("Der Rechnungsbetrag enthält keine \n  Umsatzsteuer! Die Steuer wird \n gemäß § 12b Abs2. Nr7. UStG vom \n Leitungsempfänger geschuldet!",SchriftgrößeHeader);



        Paragraph newlineKundenDaten = new Paragraph(Chunk.NEWLINE);
        Paragraph PrivatPersonCheckBox = new Paragraph("Privatperson",SchriftgrößeHeader);

        Paragraph PrivatPersondaten = new Paragraph("Name " + name + "\n" +
                "Anschrift: " + anschrift + "\n" +
                "Pers.-Ausweis Nr.: " + steuernummer+ "\n",SchriftgrößeHeader);

        PrivatPersondaten.setAlignment(Chunk.ALIGN_TOP);




        Paragraph Datum = new Paragraph("Datum: " + datum);
        Datum.setAlignment(Chunk.ALIGN_RIGHT);


        Paragraph AnschriftEntsorger = new Paragraph("xyz Weg 121b \n" +

                "1234 Musterstadt \n" +
                "Tel: 5678/67854 \n" +
                "Mobil:12345756\n" +
                "UST-NR. 66/6666/6666");
        AnschriftEntsorger.setAlignment(Chunk.ALIGN_RIGHT);




       document.add(UnternehmerCheckBox);
        document.add(Unternehdaten);
        document.add(newlineUnternehmNachricht);
        document.add(UnternehmNachricht);
        document.add(AnschriftEntsorger);
        document.add(newlineKundenDaten);
        document.add(PrivatPersonCheckBox);
        document.add(PrivatPersondaten);
        document.add(Datum);

    }



Was ich nur nicht verstehe, wieso lässt dann die Methode .setAlignment zwei Parameter zu, wenn er nur eine verarbeitet werden kann?



Gruß,
Jana
 
Zuletzt bearbeitet:
Ich verstehe nicht, was du meinst mit document.add() meinst.
Man muss doch document.add() angeben, um es in der PDF-Datei zusehen.
Nein. PDF selbst kennt, soweit ich mich entsinne, keine Absätze. Vielmehr wird jeder String an einer gegebenen Position ausgegeben. Das ist natürlich sehr unpraktisch für normalen Textsatz. Ein wesentliches Problem dabei ist, über die y-Koordinate Buch zu führen, nicht zuletzt, um Seitenumbrüche automatisch zu erhalten. Gerade dabei erleichtert iText einem das Leben.

Die absolute Positionierung erfolgt dagegen nicht über die Convenience-Klassen und Document, sondern "direkt". Anleitung siehe http://what-when-how.com/itext-5/adding-text-at-absolute-positions-itext-5/ und http://what-when-how.com/itext-5/working-with-the-columntext-object-itext-5/

Je nachdem, wie genau es sein muss, kannst Du den Spaß aber auch einfach mit einer Tabelle darstellen, die keine Begrenzungslinien besitzt - wie in guten alten HTML-Zeiten 🙂
 

Zurück
Oben