S
Steini
Gast
Guten Tag,
ich versuche ein Programm zu erstellen, mit dem ein Angebot erstellt werden kann. Die Daten dazu werden aus Excel Tabellen herrausgelesen. Anschließend sollen die Daten zusammengeführt werden und als PDF abgespeichert werden. Das abspeichern des PDF habe ich mit itext versucht aber nicht hinbekommen.
Deswegen schreibe ich jetzt hier.
Das PDF soll das Layout eines Geschäftsbriefes nach Form B besitzen.
Kann mit irgendjemand helfen, ein PDF mit Java zu erstellen das dieses Layout hat?
Es muss auch nicht itext sein, ich freue mich auch über eine Alternative.
Der bisherige Quelltext zum Schreiben des PDF sieht so aus.
Ich weiß das noch keine Kommentare vorhanden sind und auch das der Programmierstil nicht alzu schön ist. Ich würde mich trotzdem über jede Anmerkung freuen
ich versuche ein Programm zu erstellen, mit dem ein Angebot erstellt werden kann. Die Daten dazu werden aus Excel Tabellen herrausgelesen. Anschließend sollen die Daten zusammengeführt werden und als PDF abgespeichert werden. Das abspeichern des PDF habe ich mit itext versucht aber nicht hinbekommen.
Deswegen schreibe ich jetzt hier.
Das PDF soll das Layout eines Geschäftsbriefes nach Form B besitzen.
Kann mit irgendjemand helfen, ein PDF mit Java zu erstellen das dieses Layout hat?
Es muss auch nicht itext sein, ich freue mich auch über eine Alternative.
Der bisherige Quelltext zum Schreiben des PDF sieht so aus.
Java:
import java.io.FileOutputStream;
import java.net.URL;
import java.io.IOException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.*;
import com.itextpdf.text.ExceptionConverter;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.GrayColor;
import com.itextpdf.text.pdf.PdfAnnotation;
import com.itextpdf.text.pdf.PdfBorderDictionary;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfFormField;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPCellEvent;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.TextField;
public class PDFerstellen
{
public static Document document = new Document(PageSize.A4);
public static PdfWriter writer;
public static void pdf(String[][] mitarbeiter, int indexmitarbeiter, String produkt, String[] anschrift)
{
//Document document = new Document();
try
{
writer = PdfWriter.getInstance(document, new FileOutputStream("pdf/angebot"+produkt+".pdf"));
document.open();
Rectangle border = new Rectangle(0f,0f);
//border.setBorderWidthLeft(6f);
//border.setBorderWidthRight(5f);
Image image = Image.getInstance("bilder/nouvellecom.png");
image.scaleAbsolute(244.6f,42.3f);
image.setAbsolutePosition(20f, 770f);
document.add(image);
image = Image.getInstance("bilder/qsc.png");
image.scaleAbsolute(120f,50.8f);
image.setAbsolutePosition(425f, 760f);
document.add(image);
image = Image.getInstance("bilder/roter_strich.png");
image.setAbsolutePosition(0f, 730f);
document.add(image);
String eintext;
//Adresse Absender
eintext="Nouvelle Com GmbH & Co. KG, Börsenstraße 42, 26382 Wilhelmshaven";
text(eintext,30,680,6,0);
// Daten Absender
eintext="Nouvelle Com GmbH & Co. KG";
text(eintext,400,680,8, 0);
eintext="Börsenstraße 42";
text(eintext,400,670,8, 0);
eintext="26382 Wilhelmshaven";
text(eintext,400,660,8, 0);
eintext="Geschäftskundenvertrieb";
text(eintext,400,650,8, 0);
eintext=mitarbeiter[0][(indexmitarbeiter+1)]+" "+mitarbeiter[1][(indexmitarbeiter+1)];
text(eintext,400,640,8, 0);
eintext="Tel";
text(eintext,365,630,8, 0);
eintext=mitarbeiter[6][(indexmitarbeiter+1)]+" "+mitarbeiter[7][(indexmitarbeiter+1)]+" "+mitarbeiter[8][(indexmitarbeiter+1)];
text(eintext,400,630,8, 0);
eintext="Fax";
text(eintext,365,620,8, 0);
eintext=mitarbeiter[6][(indexmitarbeiter+1)]+" "+mitarbeiter[7][(indexmitarbeiter+1)]+" "+mitarbeiter[9][(indexmitarbeiter+1)];
text(eintext,400,620,8, 0);
eintext="E-Mail";
text(eintext,365,610,8, 0);
eintext=mitarbeiter[10][(indexmitarbeiter+1)];
text(eintext,400,610,8, 0);
eintext="Web";
text(eintext,365,600,8, 0);
eintext=mitarbeiter[11][(indexmitarbeiter+1)];
text(eintext,400,600,8, 0);
eintext="Datum";
text(eintext,365,590,8, 0);
eintext="17.12.2012";
text(eintext,400,590,8, 0);
//Anschrift Firma
eintext=anschrift[0];
text(eintext,30,620,10, 0);
eintext=anschrift[1];
text(eintext,30,610,10, 0);
eintext=anschrift[2];
text(eintext,30,600,10, 0);
eintext=anschrift[3];
text(eintext,30,590,10, 0);
//Betreff
eintext="Angebot für einen QSC Breitband-Internetzugang";
text(eintext,30,500,10, 1);
//Ansprache
eintext="Sehr geehrter "+anschrift[1];
text(eintext,30,470,10, 1);
//Einleitungstext
eintext="vielen Dank für das freundliche Gespräch und Ihr Interesse an unseren Dienstleistungen.";
text(eintext,30,450,10, 0);
//Text1
eintext="Wie vereinbart, erhalten Sie das gewünschte freibleibende Angebot. Ihren Anforderungen entsprechend haben wir ";
text(eintext,30,430,10, 0);
eintext="ein qualitativ hochwertiges und wirtschaftlich interessantes Leistungspaket für sie geschnürt.";
text(eintext,30,420,10, 0);
eintext="Mit der QSC AG setzen Sie auf einen leistungsstarken und erfahrenen Partner mit eigenem Sprach- und Datennetz. ";
text(eintext,30,400,10, 0);
eintext="Viele namhafte Unternehmen in Deutschland vertrauen seit Jahren auf die Qualität, die Sicherheit";
text(eintext,30,390,10, 0);
eintext="und den anerkannt guten Service der QSC AG.";
text(eintext,30,380,10, 0);
document.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
private static void text(String text, int x, int y, int sg, int bold)
{
Document document = new Document();
try
{
PdfContentByte cb = writer.getDirectContent();
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
BaseFont bfbold = BaseFont.createFont(BaseFont.HELVETICA_BOLD , BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.saveState();
cb.beginText();
cb.moveText(x, y);
cb.setFontAndSize(bf, sg);
if(bold==1)
{
cb.setFontAndSize(bfbold, sg);
}
cb.newlineShowText(text);
cb.endText();
cb.restoreState();
}
catch (DocumentException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
Ich weiß das noch keine Kommentare vorhanden sind und auch das der Programmierstil nicht alzu schön ist. Ich würde mich trotzdem über jede Anmerkung freuen