Wednesday, May 14, 2014

Die Geheime Tipps von Split AC

Split -Klimaanlagen sind in zwei oder mehr Einheiten aufgeteilt. In der Standardkonfiguration ist eine Komponente im Inneren des Gebäudes , und die andere ist außerhalb . Egal, ob Sie eine Spaltung AC oder ein Fenster AC zu kaufen, ist die wichtigste Sache zu prüfen, ob es effektiv unter schwierigen Bedingungen durchzuführen. Da Klimaanlagen während der Sommer überstrapaziert werden , müssen Sie bereit für die Pflege , falls sie unter das gewünschte Niveau durchführen zu können. Einige der Geheimtipps der Split-Klimaanlagen sind unten erwähnt .Tips

    
Schließen Sie alle Fenster und Türen , um heiße Luft in Ihr Haus verhindern. Dies wird heiße Luft aus dem Inneren kommt und heizt Ihr Haus von innen zu stoppen.
    
Schalten Sie den Split AC früh in den Tag , um das Haus schnell mit dem geringsten Energieverbrauch zu kühlen. Sie dürfen nicht brauchen , um es auf zu halten für eine längere Zeit, wenn Sie diese folgen zusammen mit dem obigen Tipp.
    
Stellen Sie immer die Temperatur um 24 º oder 25 º , ohne immer eine große Stromrechnung wohl fühlen.
    
Bestimmen Sie, welche Teil Ihres Hauses Kühlung nicht erforderlich ist , und schließen Sie die Türen zu diesem Abschnitt. Das hilft weiter , die Lufttemperatur kontrollieren und reduzieren Ihre Stromrechnung .
    
Immer lieber mit einem Inverter Split-Klimaanlage -System. Es hilft, die Raumtemperaturen einfach und effizient zu kontrollieren.
    
Schließlich halten eine Uhr auf dem Wetter zu entscheiden, ob es kühl genug , schalten Sie die Klimaanlage und öffnen Sie die Türen und Fenster ist .Tipps zur Wartung

    
Klimaanlage Filter ist ein wichtiger Bestandteil eines AC . Es muss jeden Monat oder zwei , je nach Nutzung regelmäßig gewechselt werden. Wenn sie nicht geändert wird, wird die Luft verschmutzt und voller Toxine. Die schmutzigen Klimaanlage Filter können auch die Reparatur-und Wartungskosten der Klimaanlage.
    
Ein weiterer wichtigste Teil der Klimaanlage ist der Kompressor . Stellen Sie sicher, dass Sie den Kompressor regelmäßig zu reinigen , um kühle und erfrischende Luft zu bekommen. Verwenden Sie das Öl, das speziell angefertigt für die ACs es haltbarer zu machen.
    
Wenn Luft durch die Klimaanlage geht , nimmt der Verdampfer die überschüssige Wärme , um kühle Luft durch das ganze Haus zu liefern. Ersetzen Sie den alten Verdampfer , wenn erforderlich, um die Luftzirkulation und Luftstrom im Inneren des Hauses zu verbessern.
    
Pflegen Sie die Klimaanlage umfasst auch die Reinigung von Luftkanälen . Luftkanäle sind alle durch das Haus halten den Abschnitt kühl und angenehm zu verbreiten. Daher ist es wichtig, die Leitungen regelmäßig zu reinigen, um frische Luft zu bekommen .
    
Alle Klimaanlagen Kältemittel verwenden , um die überschüssige Wärme zu absorbieren und liefern kühle Luft im Inneren des Hauses . Überprüfen Sie das Kältemittel regelmäßig auf Undichtigkeiten und zu reparieren , wenn erforderlich.
    
In einigen Fällen kann das Rohr Eis trotz der sauberen Filter verhindern, dass die kühle Luft aus der Klimaanlage Filter blockieren. In einem solchen Fall , überprüfen Sie die Kältemittel und entsprechend anzupassen oder zu ersetzen.Panasonic Klimaanlage arbeitet intelligent zu Ihrem Lebensstil anpassen und sorgt für maximale Energieeinsparungen. Panasonic bietet Ihnen die beste Split- AC zu erschwinglichen Preisen.

Monday, May 12, 2014

Hocheffiziente Elektrische Control Panels verwendet, um elektrische Geräte überwachen

Haupt LT -Panel sind in der Regel elektrisch betriebenen Verteiler von denen finden im gesamten elektrischen Verteilung mit Strom zu einer Vielzahl von Elektronik in Verbindung gebracht werden . Die Zellen erhalten elektrische Energie aus Generator / Transformator und die Verteilung der Anlage , notwendige Region. Vor allem diese Art von Haupt LT Platten finden umfangreiche Programme in Branchen wie Gießereien , Textil-, Element -, Drogen- und vielen anderen Branchen . Geeignet sowohl gleichermaßen zentral und auch Außenprogramme, werden diese Anwendung konstruiert besten Wert Kupfermineral , Perspektive, CR Leinen sowie weitere Produkte für bestimmte ihre risikofrei und auch längere Lebensdauer Routine zu machen . Sie sind eine einfache Aufgabe zu montieren und auch Funktion , geschaffen, um reduzierte Nutzung von Strom für die zusätzliche neigt dazu, alle von ihnen Macht wirksam zu machen und damit kostengünstiger zu nutzen.

Verteilertafeln lehnen, um zu entdecken breite Anwendungen in Industrie, speziell , Elektrotechnik , Drogen zusammen mit KMU . Sie sind zusammen mit gemeint, die Macht auf mehrere Knoten aus einer Hand bieten konzipiert. Diese Art von Signal Brecher Abschnitte enthalten , von denen stellen Sie sicher, sauberes Arbeiten mit Schutz Funktionieren . Verteilertafeln ganz richtig zusammen mit Auge behalten gewichtige elektromechanische Produkte zusammen mit Geräten zu verwalten. Es gibt alternative mit allen Kunden , um Abschnitte maßgeschneiderte ähnlich wie die spezifischen Bedürfnisse zu erwerben. Die Hersteller nutzen die violetten Designs zusammen mit einzigartigen Panel Diagramm von diesem Kunden angeboten fabrizieren diese Einreichung Tafel entsprechend.

Diese Boards werden in Übereinstimmung mit hohen internationalen Standards produziert und sind so konzipiert , verdrahtet, geprüft und mit verschiedenen elektrischen Geräten montiert. Schwerpunkt ist die Sicherheit , optimale Raumnutzung und Energieeffizienz gelegt .

Kondensator Panels haben Energiefrage Controller, richtig Computermonitore werden reaktive Energie den ganzen Energietechnik , die im Gegenzug hilft gesamten Energiesparen . Diese Art von Systemen sind die Überprüfung der gesamten Strom Ausgabe von diversen elektrischen Systemen hilfreich . Um sie sehr haltbar zu machen , diese Art von Kondensator -Panels sind in der Regel hergestellt unter Verwendung von hochwertigen Haupt , was machen sie Ungeziefer geschützt und staubdicht . Wenn Sie diese Arten von Systemen zu verwenden, kann Dienstprogramm Aufwendungen zu einer Größe in der Lage Grad verringert werden. Es nimmt auch auf ganz entscheidender Teil der Verbesserung Teil Fähigkeit der elektrischen Technik . Nicht korrigierte Energiefrage kann in der Energie Kürzungen im gesamten Energie -Syndication- Technik führen. Spannung senkt kommen sehr sichtbar , welche oft endgültigen Ergebnisse in den erhöhten Energieabbauzu sein .

Diese Platten sind am besten geeignet für PF Feeder und finden breite Anwendung in Branchen wie Rolling Mills, Sugar Mills und OEMs . Sie sind ebenso nützlich für kommerzielle Gebäude , Einkaufszentren und Immobilien -Service-Industrie , Hotels, Krankenhäuser und Bildungszentrum

Addresszentralbatterie Notbeleuchtung

Alle Unternehmens Häuser, Gebäude , Einkaufszentren erfordern ordnungsgemäße Beleuchtungssysteme , die 24 Stunden zu bleiben. In diesen Tagen Notbeleuchtung wie Leuchten , Ausfahrt eingeben Lichttafeln , LED-Sicherheitsleuchtensind so konzipiert, automatisch zu kommen und können Generator oder Batterie. Heute Batterien und Generatoren sind jedoch nicht genug, um zu vermeiden, die Verschwendung der Lebenszeit der Beleuchtungssysteme. ZentralbatteriesystemNotbeleuchtung sind ideal für größere Projekte und sind nützlich für die Speicherung der Beleuchtungssysteme , die in den Gebäuden installiert werden,
Generell Zentralbatterie Notbeleuchtung einen Gleichrichter , Batterieladegerät, Inverter , Schutzeinrichtungen , Überspannungen , Batterieschalter , externer Bypass-Schalter und Zubehör. Diese werden in den alten und modernen Gebäuden vorgestellt , wie es geworden Notwendigkeit für alle Räumlichkeiten . Es bietet Lösungen, bei denen alle Stromladeschaltungenund Batterien sind zentral gelegen und alle Lichter über geschützte Verkabelung Drähte verbunden. Jeder einzelnen Leuchten sind mit Akkus, die Akkulaufzeit von rund 4 Jahren ausgestattet. Am Ende der Lebensdauer der Batterie , muss jeder Batterie ersetzt , die als zeitaufwändig und lästig Prozess, der oft die Hauptstückezerlegt , um Zugang zu Batterie zu gewinnen erfordert betrachtet wird werden.
Meistens Zentralbatterie -Sicherheitsbeleuchtungsanlagen sind an einem sicheren Ort , wie Pflanzen Zimmers. Die Batterie im Zentralbatterie Notbeleuchtung installiert ist seit einem Jahrzehnt Lebensdauer ausgelegt und als Ersatzbedarfist es einfach durchgeführt werden kann und schnell ersetzt. Der Hauptvorteil des Systems ist, bietet es massive Einsparungen bei den Wartungskosten und die Störung . Die adressierbare Zentralbatterie Notbeleuchtung Systemeinheiten bieten effektive Lösungen für die Versorgung einer großen Menge von Lichtern. Diese sind für kleine und große Räume in Abhängigkeit von der Art des Zentralbatterieeinheitgeeignet. Maximal 12-32 adressierbaren Leuchten können an einen Schaltkreis abhängig von der Art des Zentralbatterie -Einheit angeschlossen werden.
Im Vergleich zu den normalen Funktionen Notbeleuchtung , ZentralbatterieaddressNotbeleuchtung Steuereinheitenin Serie machen es möglich, automatisch den Zustand der Zentraleinheit und die Leuchten sind mit ihm verbunden zu testen. Die zentrale Notlichtsystems aufrechterhalten werden und kann mit geeigneten Options wie automatische Selbsttest oder einer Selbsttestadressierbaren System verbunden sind . Es wird von den Herstellern, die diese Systeme sollte unabhängig von der Hauptstromquelle gehalten werden empfohlen. Jede Leuchte durch seine eigene Adressnummer identifiziert ,
Zentralbatterie Notbeleuchtung hat sich die Notwendigkeit, in allen Wohn-und Gewerbe Orten. Diese nutzt eine intelligente Technologie, die adressierbare Kontrolle und Prüfung von einzelnen Leuchten ermöglicht . Es ist auch einfacher zu installieren und reduziert Installations-und Wartungskosten sowie es umweltfreundlich ist  Diese Systeme sind bei der Rettung der Akkulaufzeit installiert und werden auch in der Notfall Zeit wie Katastrophe oder Feuer verwendet

In Mesh-Network, findet Quebec Lösung für eingeschränkte Konnektivität

Da die Popularität von Mesh-Netzwerken zu erhöhen, ist es durchaus denkbar, dass eine Menge Leute haben dieses wachsende Phänomen genutzt , ohne es zu merken. Eigentlich haben die meisten Menschen nicht wissen, was ein Mesh-Netzwerk geht!

Um zu beginnen, ist ein Maschennetzwerk ein drahtloses Netzwerk aus Funkstellen(auch als Knoten bezeichnet) und eine Architektur oder Organisation Lager Ähnlichkeit mit einer Maschen . Die " Masche " Vergleich ist offenbar ein Hinweis auf die Art, wie die verschiedenen Knoten verteilt sind und die Tatsache, dass jeder dient als Relaisstation . Die Komponenten eines Mesh-Netzwerk -Clients sind in der Regel ( Regel Laptops, Telefone sowie verschiedene drahtlose Geräte) , Router und Gateways. jeder Knoten erfasst Daten von anderen Knoten und dient als Relais für diese Daten zu anderen Knoten innerhalb des Netzwerks. Mit anderen Worten, jeder Knoten in einem Netzwerk ist ein Relais oder Broadcast Punkt , wodurch es eine aktive Mitarbeiter nicht nur ein Empfänger der Daten .

Die Macht der Wireless-Mesh- Netzwerke liegt in ihrer Fähigkeit, eine nahtlos angeschlossen Umwelt fast überall zu schaffen. Diese Netzwerke sind nicht -Hub -abhängig und auch nicht über das Vorhandensein von Routern bezeichnet , die sich auf den Knoten , um diesen Zweck zu dienen. Auf einem sehr großen Maßstab bedeutet dies, Mesh-Netzwerk gründet Quebec wird die ganze Stadt per Kabel , ohne von dem traditionellen System schaffen, Wireless-Hotspots , die nur Nutzern dienen kann sofort innerhalb eines begrenzten Versorgungsgebiet haben .
Das schiere Ausmaß , zu dem dieses Netzwerk erhöht werden könnte auch Raum für Zweifel zu erstellen, wie seine Fähigkeit , um die Kapazität zu erhalten. Eine Frage, die von Mesh-Netzwerken gefragt worden ist, ist : "Was passiert, wenn ein einzelner Knoten ausfällt? " . In einem Mesh-Netzwerk auf einem stadtweiten Maßstab eingesetzt , könnte dieses Szenario bei der Übertragung führen zu brechen, aber dann wird das Mesh-Netzwerk -Konzept ist eine, die als " Selbstheilung " beschrieben werden kann . Zum Beispiel, wenn in einem Mesh-Netzwerk Quebec setzt , ein Knoten ausfällt, wird er sofort durch einen anderen ersetzt somit die Kontinuität . Angesichts der Allgegenwart der Mobiltelefone und drahtlose Geräte , ist die Fähigkeit von einem Mesh-Netzwerk , um seine Übertragung propagieren und weiter Verbreitung sehr hoch und erhöht damit ihre Zuverlässigkeit.

Angesichts der steigenden Zahl von Städten rund um die Welt beginnt, in Mesh-Netzwerk zu investieren , sind Quebec Einwohner beginnen bereits einige der Vorteile zu genießen. Da die Annahme dieses einfache und kostengünstige, aber effiziente Technologie erhöht, werden die Vorteile deutlicher geworden . Einige dieser Vorteile sind:
i . Verbesserung der Sicherheitssysteme : Angesichts der Tatsache, dass Mesh-Netzwerke sind aus verschiedenen Knoten gemacht , wird eine kleine Investition in Sensorknoten die Reichweite für ein Sicherheitssystem zu erhöhen und ermöglichen es jedem Ein-und Ausstieg an eine Anlage angemessen überwacht werden.
ii . Überwachung auf Umweltgefahren : Sensoren für die Überwachung der Umweltbedingungenwie Verschmutzung , Temperatur und Feuchtigkeit können unter anderem in einem Mesh-Netzwerk kooptiert und verwendet werden, um große Flächen effektiv zu überwachen.

Iii. Öffentliche Sicherheit und Service-Kommunikation : Diese kritische Öffentlichkeit Service -Kommunikationsgerät wird erheblich erweitert und durch den Einsatz von Netzwerktechnologie verbessert werden

Genießen Sie eine gute Beleuchtung und Low-Energy-Bills mit LED-Beleuchtung

Wenn Sie müde von der Ersetzung der Glühbirnen sind , erwägen den Kauf LED-Leuchten. Diese Leuchten bieten eine fantastische Beleuchtung und Sie werden staunen, wie wenig Energie sie verbrauchen, werden überrascht sein. LED-Leuchten sind in so vielen verschiedenen Stilen und Varianten erhältlich , so dass Sie sicher etwas, das für Ihre Bedürfnisse zu finden sein kann. Wenn Sie eine Halogenlampe zu verwenden waren wird es nur geben, 2000 Stunden Beleuchtung. Vergleichen Sie diese mit den 50.000 Stunden , die Sie von einem LED- Licht zu bekommen ... Sie sicherlich nicht die alten Halogenlampen mehr wollen

Der beste Teil über die Verwendung von LED-Leuchten ist , dass sie keine schädlichen Emissionen nicht produzieren und sind umweltfreundlich . In jeder Aktion , die wir nehmen müssen wir sicherstellen, dass wir zu einer besseren Umwelt bei. Mit LED-Leuchten ist eine Möglichkeit, die zurück zur Natur. Sie können sie für fast alles verwenden ; Lesen, Fernsehen , leuchten deine Oma Raum, auf dem Dachboden , Küche Lagerung und vieles mehr. Auch wenn das ganze Haus schaltet um auf LED-Beleuchtung wird die Menge Strom verbraucht Weise niedriger sein. Ihre Energiekosten niedriger sein wird , mit Einsparungen , auch wenn es Situationen gibt, in denen man ständig benutzen Beleuchtung. Setzen Sie sie in verschiedenen Räumen ist nicht zu viel Zeit oder Material zu nehmen.

LED geben, sehr gute Beleuchtung. Wenn Sie einen LED-Streifen zu kaufen waren, können Sie sicher, dass Sie gonna die Beleuchtung benötigen Sie befinden sein . So etwas wie eine RGB- LED-Streifen ist perfekt für die Festveranstaltung Beleuchtung. Wenn Sie zusammen viel Licht setzen , gibt es eine Chance von Überbeleuchtung , aber nicht mit LEDs , weil sie gemacht sind geben genau die richtige Menge an Licht benötigt, um einen bestimmten Ort zu beleuchten. Die geringe Größe der LED-Licht macht es einfach zu handhaben. Auch wenn Sie eine große LED- Streifen zu installieren , ist der Aufwand nicht zu schwer auf Sie sein.

Wenn Sie ein LED-Licht, glühende berühren wird , ist es überraschend zu erkennen, dass es nicht heiß. Berühren Sie eine Halogenlampe , die gerade ausgeschaltet worden, und Sie können immer noch die Hitze spüren . Um diese Wärme abzuführen , müssen Sie auf die Klimaanlage einzuschalten. LED-Leuchten stellen keine solchen Anforderungen . Eine weitere gute Qualität an ihnen ist , dass sie sofort einschalten . Keine Notwendigkeit, für eine Weile für die Lampe zum Leuchten zu warten. Sie können schöne LED-Leuchten oder Streifen von der renommierten Led Montreal -Shop kaufen. Sie haben eine breite Palette von LED-Leuchten zu den günstigsten Preisen in ihren Online-Shop , in dem Sie können wählen , was Sie wollen und leuchten Ihre gesamte Haus.

Arten von Wartungsfrei und lange Lebensdauer Blei-Säure-Batterie!

Die erste in der Kategorie ist VRLA Batterie oder Ventil regulierte Blei -Säure -Batterie und ist wiederaufladbar , wie jede andere Blei-Säure- Batterie. Die Funktion, die es einzigartig macht, ist , dass Bleibatterien benötigen keine Wasser hinzugefügt werden. Glasvlies -Technologie mit Kalzium Gittern macht es , dies zu erreichen . Diese Akkus bieten hohe Leistung bewertet und eine längere Lebensdauer im Vergleich zu anderen Produkten

Wenn Sie nach einer idealen Ladespannungsgrenze suchen, werden Sie es entscheidend, zu finden. Es ist ein Ungleichgewicht zwischen der hohen Spannung und längere Lebensdauer. Die Hochspannungs- Batterie, die über 2.40V/Zelle ist gibt gute Leistung , hat aber kürzere Lebensdauer , weil der Netz Korrosion. Auf der anderen Seite, wird eine niedrige Spannung sulfaction auf der negativen Platte . Wenn wir über Bleibatterien zu sprechen, müssen wir uns jetzt, dass aufgrund der niedrigen Innenwiderstand , akzeptieren sie Ladung wirklich gut. Die Risiken sind , dass auf Überladung , Akku beschädigt wird . Ihre Kapazität verringert und die Lebensdauer wird reduziert .

Überladung ist aufgrund ihrer versiegelten Konstruktion enorm schädlich für jede VRLA Batterie. Überladen führt zur Entladung von Sauerstoff und Wasserstoff aus der es durch die Überdruckventile und trocknet die Batterie. Und falls Sie zufällig ständig under es , ein NetzraubSchicht von Sulfat wird an der positiven Platte bilden , die Schaffung der Behinderung oder Barriere in die Batterie aufzuladen . Beide Überladung und Unterladung führt zu reduzierten Kapazität, Leistung und Lebensdauer. Eine der Nachwirkungen der Unterladung ist Platte Abwurf. Daher ist es wichtig , dass das Ladegerät zu verwenden , um Spannungs begrenzen. Viele Ladegeräte sind in den Märkten, die Temperatur für die Prävention von unter ausgeglichen sind und Überladung durch Überwachung der Temperaturänderungen zur Verfügung.

Abgesehen von VRLA-Batterie , Blei- Säure-Batterie ist auch gekommen, die beiden anderen Arten . Man ist auf der Basis Gel und AGM zweite ist .

Gel -Batterie

Ein Gel Batterie Blei elektrische Speicherbatterie , die permanent mit Druckventile abgedichtet ist und nicht geöffnet werden kann. Diese sind vollständig wartungsfrei und Thixotropes gelierte Elektrolyt als Speichermechanismus verwendet . Es nutzt eine Rekombination verhindert das Entweichen der Gase Wasserstoff und Sauerstoff , die sonst in einer Blei- Säure-Batterie verloren gehen (vor allem , wenn für Zyklenanwendung verwendet wird).

Durch seine geschlossene Bauweise , ist es auslauf und ist durchaus tragbar. Die einzige Warnung ist, dass Upside-Down- Installation wird nicht empfohlen. Um das Leben zu verlängern und zu erhalten , muss man die Verbindungen nachziehen und die Box sollte regelmäßig von der Hardware-Geschäft gereinigt werden.

AGM-Batterie

Eine AGM-Batterie ist auch eine Blei-Säure- elektrische Speicherbatterie , die unter Verwendung von speziellen Druckventile abgedichtet ist und nicht geöffnet werden kann. Es ist wartungsfrei. Sie werden als geschlossene Einheit mit in Separatoren absorbiert Elektrolyte, die schwammartige Masse aus verfilzten Glasfasern enthält , hergestellt . Wie das Gel Einheit , verwendet es die Rekombinationsreaktion , um ein Entladen der Wasserstoff-und Sauerstoffgase zu verhindern. Es ist auslauf und tragbar. Die Empfehlung ist , dass es nicht verkehrt herum eingebaut werden.

Diese drei Batterien sind verbesserte Versionen von Blei-Säure- Batterie. Im Gegensatz zu den Blei-Säure- Einheiten , diese werden versiegelt , tragbar und geben hohe Leistung und längere Lebensdauer. Sie sind auch umweltfreundlicher als ihre Vorgänger

Wie PDF in Java erstellen

Invoice.java
1 / / Obwohl DynamicPDF für Java unterstützt J2SE 1.4.x- Funktionen für die meisten ist dieses Beispiel nur mit J2SE 5.0 und höher kompatibel.
2 Einfuhr com.cete.dynamicpdf * .
3 Import com.cete.dynamicpdf.pageelements * .
4 Import com.cete.dynamicpdf.pageelements.barcoding.Interleaved25 ;
5 Import java.io.FileNotFoundException ;
6 Import java.io.IOException ;
7 Import java.math.BigDecimal ;
8 Import java.sql * .
9 Import java.text.DecimalFormat ;
10 Import java.text.SimpleDateFormat ;
11 Import java.util.Enumeration ;
12 Import java.util.Locale ;
13 Import java.util.Vector ;
14 Import javax.servlet.ServletConfig ;
15 Import javax.servlet.ServletException ;
16 Import javax.servlet.ServletOutputStream ;
17 Import javax.servlet.http.HttpServlet ;
18 Import javax.servlet.http.HttpServletRequest ;
19 Import javax.servlet.http.HttpServletResponse ;
20
21 öffentliche Klasse Rechnung erstreckt HttpServlet {
22
23 ServletOutputStream sOut ;
24 Anschluss -Anschluss;
25
26 public void init ( ServletConfig ServletConfig ) wirft ServletException {
27 super.init ( ServletConfig );
28}
29 public void doGet ( HttpServletRequest req , HttpServletResponse res)
30 throws IOException , ServletException {
. 31. CeTeConnection CETE = ( CeTeConnection ) getServletContext () getAttribute ( " cetecon ");
32 = Verbindung ceTe.getConnection ();
33 sOut res.getOutputStream = ();
34 / / Erstellen Sie ein Dokument , und legen Sie seine Eigenschaften
35 Document ObjDocument = new Document ();
36 objDocument.setCreator ( " Invoice.html ");
37 objDocument.setAuthor ( " CETE Software") ;
38 objDocument.setTitle ( "Rechnung" );
39
40
41
42 String [] = RechnungNr req.getParameterValues ​​( " RechnungNr ");
43 if ( RechnungNr ! = Null) {
44 / / In den Rechnungen des Dokuments
45 for (int i = 0; i < invoiceNo.length ; i + +) {
46 MyInvoice objInvoice = new MyInvoice ();
47 / / Fügen Sie die Vorlage in das Dokument
48 objDocument.setTemplate ( objInvoice.getTemplate ());
49 objInvoice.draw (Anschluss, ObjDocument ,
50 Integer.parseInt ( RechnungNr [i]) );
51 }
52 }
53
54
55 / / Gibt die Rechnungen auf der aktuellen Webseite
56 objDocument.drawToWeb ( req , res, sOut " Invoice.pdf ");
57 ceTe.close ();
58 sOut.close ();
59
60}
61
62 private Klasse MyInvoice {
63
64 Privat BigDecimal Zwischensumme = new BigDecimal (0.0 );
65 Privat BigDecimal Fracht = new BigDecimal (0.0 );
66 Privat Schwimmer yOffset = 0;
67 Enumeration e1 = null;
68 Privat Vorlage Vorlage = new Template ();
69 private boolean pageTemplateImagesSet = false;
70 Privat RGBColor objBGColor = new WebColor ("# E0E0FF ");
71 Privat WebColor objTotalBGColor = new WebColor ("# FFC0C0 ");
72 Privat WebColor objThankYouText = new WebColor ("# 000080 ");
73 Privat CeteDAO ceteDAO = null;
74
75 öffentliche MyInvoice () {
76 / / Top Teil der Rechnung
77 template.getElements (). Hinzufügen ( neue Bezeichnung ( " Nordwind \ N1234 " +
78 " International Drive \ nAnywhere , Erde ABC123 " , 56 , 0, 200 , 44,
79 Font.getHelvetica ()) );
80 template.getElements (). Hinzufügen ( neue Bezeichnung ( "Rechnung" , 0, 0 , 540 , 18,
81 Font.getHelveticaBold () , 18, TextAlign.RIGHT ));
82
83 template.getElements (). Hinzufügen ( neue PageNumberingLabel ( "Seite %% % % der SP %% %% ST " ,
84 450 , 253, 90 , 20, Font.getHelveticaBold () , 12, TextAlign.CENTER ));
85
86 / / Add Rechnungsdetails Vorlage
. Template.getElements 87 () hinzufügen ( getDetailsGroup ());
88
89 / / Add BillTo Vorlage
. Template.getElements 90 () hinzufügen ( getBillToGroup ());
91
92 / / Add ShipTo Vorlage
. Template.getElements 93 () hinzufügen ( getShipToGroup ());
94
95 / / Add Line Elementvorlage
. Template.getElements 96 () hinzufügen ( getLineItemGroup ());
97
98 / / Das Bild wird auf der Seite Vorlage

99 setPageTemplateImage ();
100}
101
102
103 öffentliche Vorlage getTemplate () {
104 Rück Vorlage;
105 }
106
107 Privat Gruppe getDetailsGroup () {
108 / / Gibt eine Gruppe, welche die Detailvorlage
109 Gruppe objGroup = new Group ( );
110
111 objGroup.add ( new Rectangle (340 , 24, 200 , 72, Grayscale.getBlack ()
112 objBGColor , 0,5 f ));
113 objGroup.add ( neue Bezeichnung ( "Order -ID: " , 343 , 25, 85 , 12,
114 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
115 objGroup.add ( neue Bezeichnung ( "Order Date: " , 343 , 39, 85 , 12,
116 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
117 objGroup.add ( neue Bezeichnung ( " Kunden-ID " , 343 , 53, 85 , 12,
118 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
119 objGroup.add ( neue Bezeichnung ( " Versanddatum " , 343 , 67, 85 , 12,
120 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
121 objGroup.add ( neue Bezeichnung ( "Order -ID: " , 343 , 25, 85 , 12,
122 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
123 objGroup.add ( neue Bezeichnung ( " geliefert Via: " , 343, 81, 85 , 12,
124 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
125
126 Rück objGroup ;
127 }
128
129 Privat Gruppe getBillToGroup () {
130 / / Gibt eine Gruppe mit dem Gesetzentwurf zur Vorlage
131 Gruppe objGroup = new Group ( );
132
133 objGroup.add ( new Rectangle (25 , 120, 200 , 90, 0,5 f ));
134 objGroup.add (new Line ( 25 , 136, 225 , 136, 0,5 f ));
135 objGroup.add ( neue Bezeichnung ( " Bill To:" , 28 , 121, 200 , 12,
136 Font.getHelveticaBold () 12) );
137
138 Rück objGroup ;
139 }
140
141 Privat Gruppe getShipToGroup () {
142 / / Gibt eine Gruppe das Schiff enthält, Vorlage
143 Gruppe objGroup = new Group ( );
144
145 objGroup.add ( new Rectangle (315 , 120, 200 , 90, 0,5 f ));
146 objGroup.add ( neue Linie ( 315 , 136, 515 , 136, 0,5 f ));
147 objGroup.add ( neue Bezeichnung ( "Ship To:" , 318 , 121, 200 , 12,

148 Font.getHelveticaBold () 12) );
149
150 Rück objGroup ;
151 }
152
153 Privat Gruppe getLineItemGroup () {
154
155 / / Gibt eine Gruppe, welche die Positionen Vorlage
156 Gruppe objGroup = new Group ( );
157
158 for (int i = 0; i < 10; i + +) {
159 objGroup.add ( new Rectangle (0 , 306 + i * 36 , 540 , 18, objBGColor ,
160 objBGColor ));
161 }
162 objGroup.add ( new Rectangle (450 , 250, 90 , 20, 0,5 f ));
163 objGroup.add ( new Rectangle (450 , 702, 90 , 18, objTotalBGColor ,
164 objTotalBGColor ));
165 objGroup.add ( new Rectangle (0 , 270, 540 , 450, 0,5 f ));
166 objGroup.add (new Line ( 0 , 288, 540 , 288, 0,5 f ));
167 objGroup.add (new Line ( 0 , 666, 540 , 666, 0,5 f ));
168 objGroup.add (new Line ( 60 , 270, 60 , 666, 0,5 f ));
169 objGroup.add ( neue Linie ( 360 , 270, 360 , 720, 0,5 f ));
170 objGroup.add ( neue Linie ( 450 , 270, 450 , 720, 0,5 f ));
171 objGroup.add ( neue Linie ( 450 , 702, 540 , 702, 0,5 f ));
172 objGroup.add ( neue Bezeichnung ( "Menge ", 0 , 272, 60 , 12,
173 Font.getHelveticaBold () , 12, TextAlign.CENTER ));
174 objGroup.add ( neue Bezeichnung ( " Beschreibung" , 60 , 272, 300 , 12,
175 Font.getHelveticaBold () , 12, TextAlign.CENTER ));
176 objGroup.add ( neue Bezeichnung ( " Einheitspreis " , 360 , 272, 90 , 12,
177 Font.getHelveticaBold () , 12, TextAlign.CENTER ));
178 objGroup.add ( neue Bezeichnung ( " Preis " , 450, 272 , 90 , 12,
179 Font.getHelveticaBold () , 12, TextAlign.CENTER ));
180
181 objGroup.add ( neue Bezeichnung ( "Vielen Dank für Ihren Einkauf. \ NWir " +
182 " schätzen Ihr Geschäft. " , 5, 672, 350 , 54,
183 Font.getHelveticaBold () , 18, objThankYouText ));
184 objGroup.add ( neue Bezeichnung ( " Zwischensumme " , 364, 668 , 82 , 12,
185 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
186 objGroup.add ( neue Bezeichnung ( " Fracht" , 364, 686 , 82 , 12,
187 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
188 objGroup.add ( neue Bezeichnung ( "Total" , 364, 704 , 82 , 12,
189 Font.getHelveticaBold () , 12, TextAlign.RIGHT ));
190 Rück objGroup ;
191 }
192
193 private void setPageTemplateImage () {
194 / / Fügt das Bild, um Seitenvorlage , wenn es nicht bereits hinzugefügt
195 if (! PageTemplateImagesSet ) {
196 try {

197 template.getElements (). Hinzufügen ( neues Bild ( getServletContext ()
198 . GetRealPath ( "images / DPDFLogo.png ")
199 0 , 0, 0.16f ));
200 } catch ( FileNotFoundException ex) {
201 ex.printStackTrace ( System.err );
202 }
203 pageTemplateImagesSet = true;
204 }
205 }
206
207 public void draw ( Anschlussverbindung, Dokument -Dokument
208 InvoiceNumber int ) {
209 / / Jede Rechnung sollte einen neuen Abschnitt beginnen
210 document.getSections () begin () .
211 / / Ruft die Rechnungsdaten
212 Vektor v1 = getInvoiceData (Anschluss, InvoiceNumber );
213 e1 = v1.elements ();
214
215 / / Fügt die Rechnung, wenn es Daten gibt,
216 if ( e1 ! = Null) {
217 / / Zeichnet die Rechnungsdaten , gibt eine Seite, Objekt, wenn es
218 / / die letzte Seite
219 Seite objLastPage = drawInvoiceData (Dokument) ;
220 / / Zeichnet aditional Seiten ggf.
221 while ( objLastPage == null) {
222 objLastPage = drawInvoiceData (Dokument) ;
223 }
224 / / Zeichnet die Summen auf den Grund der letzten Seite der
225 / / Rechnung
226 drawTotals ( ceteDAO , objLastPage );
227 }
228
229 }
230
231 privaten Seite drawInvoiceData (Document document) {
232 / / Spuren , wenn die Rechnung fertig
233 invoiceFinished boolean = true;
234 / / Spuren die y-Position auf der Seite
235
236 if ( e1.hasMoreElements ()) {
237 ceteDAO = ( CeteDAO ) e1.nextElement ();
238 / / Setzt die Frachtmenge
239 Fracht ceteDAO.getFreight = ();
240 }
241
242 yOffset = 288 ;
243 / / eine Seite für die Rechnung erstellen
244 Seite objPage = new -Seite ( PageSize.LETTER ,
245 PageOrientation.PORTRAIT , 36.0f );

246 / / Add Details zu der Rechnung
247 drawInvoiceDetails ( ceteDAO , objPage );
248 / / In den Gesetzentwurf Adresse
249 drawBillTo ( ceteDAO , objPage );
250 / / In den Schiff -Adresse
251 drawShipTo ( ceteDAO , objPage );
252
253 / / In Einzelposten auf der Rechnung
254 drawLineItem ( ceteDAO , objPage );
255
256 while ( e1.hasMoreElements ()) {
257 / / brechen, wenn an der Unterseite der Seite
258 if ( yOffset > = 666 ) {
259 invoiceFinished = false;
260 break;
261 }
262 ceteDAO = ( CeteDAO ) e1.nextElement ();
263 / / In Einzelposten auf der Rechnung
264 drawLineItem ( ceteDAO , objPage );
265 }
266
267 / / Seite hinzufügen zu dem Dokument
268 document.getPages () hinzufügen ( objPage ) .
269
270 / / Wenn Die Rechnung wird zurück die Seite sonst null zurück , so beendet
271 / / wird eine weitere Seite hinzugefügt werden
272 if ( invoiceFinished ) {
273 Rück objPage ;
274 } else {
275 objPage.getElements (). Hinzufügen ( neue Bezeichnung ( "Fortsetzung ...", 454 , 704 , 82,
276 12, Font.getHelvetica () , 12, TextAlign.RIGHT ));
277 return null ;
278 }
279 }
280
281 private void drawInvoiceDetails ( CeteDAO ceteDAO , Seite Seite ) {
282
283 / / Fügt Rechnungsdetails auf die Seite
284 page.getElements (). Hinzufügen ( neue Bezeichnung ( String.valueOf ( ceteDAO
285 . GetOrderID ()) , 437, 25, 100 , 12, Font.getHelvetica ()
286 12) );
287 Simpledateformat= new Simple ( "d MMM yyyy ");
288 page.getElements (). Hinzufügen ( neue Bezeichnung ( dateFormat.format ( ceteDAO
289 . GetOrderDate ()) , 437 , 39, 100 , 12,
290 Font.getHelvetica () 12) );
291 page.getElements (). Hinzufügen ( neue Bezeichnung ( String.valueOf ( ceteDAO
292 . GetCustomerID ()) , 437 , 53, 100 , 12,
293 Font.getHelvetica () 12) );
294 Datum date = ceteDAO.getShippedDate ();

295 if ( date! = Null) {
296 page.getElements (). Hinzufügen ( neue Bezeichnung ( dateFormat.format (Datum) ,
297 437 , 67, 100 , 12, Font.getHelvetica () 12) );
298 }
299 page.getElements (). Hinzufügen ( neue Bezeichnung ( ceteDAO.getShipperName ()
300 437 , 81, 100 , 12, Font.getHelvetica () 12) );
301 page.getElements (). Hinzufügen ( neue Interleaved25 ( String.valueOf ( ceteDAO
. 302 getOrderID ()) , 380, 4, 18, false) );
303
304 }
305
306 private void drawBillTo ( CeteDAO ceteDAO , Seite Seite ) {
307
308 / / Fügt Rechnung zu adressieren
309 String billToAddress = ceteDAO.getBillName () + "\ n " +
310 ceteDAO.getBillAddress () + "\ n " +
311 ceteDAO.getBillCity () + "," +
312 ceteDAO.getBillPostalCode () + "\ n " +
313 ceteDAO.getBillCountry ();
314 page.getElements (). Hinzufügen ( neue Textarea ( billToAddress , 28 , 139,
315 194 , 49, Font.getHelvetica () , 12) );
316
317 }
318
319 private void drawShipTo ( CeteDAO ceteDAO , Seite Seite ) {
320
321 / / Fügt Schiff, um Adresse
322 String shipToAddress = ceteDAO.getShipName () + "\ n " +
323 ceteDAO.getShipAddress () + "\ n " +
324 ceteDAO.getShipCity () + "," +
325 ceteDAO.getShipPostalCode () + "\ n " +
326 ceteDAO.getShipCountry ();
327 page.getElements (). Hinzufügen ( neue Textarea ( shipToAddress , 318 , 139,
328 194 , 49, Font.getHelvetica () , 12) );
329
330 }
331
332 private void drawLineItem ( CeteDAO ceteDAO , Seite Seite ) {
333 / / Fügt einen Posten auf der Rechnung
334 BigDecimal Menge = new BigDecimal (0.0 );
335 BigDecimal unitprice = new BigDecimal (0.0 );
336 Menge = new BigDecimal ( ceteDAO.getQuantity ());
337 unitprice = ceteDAO.getUnitPrice ();
338
339 BigDecimal Linetotal = unitPrice.multiply (Menge );
340 Zwischensumme = subTotal.add ( Linetotal );
341
342 page.getElements (). Hinzufügen ( neue Bezeichnung ( quantity.toString () , 4,
343 3 + yOffset , 52 , 12, Font.getHelvetica () , 12,

344 TextAlign.RIGHT ));
345
346 page.getElements (). Hinzufügen ( neue Bezeichnung ( ceteDAO.getProductName ()
347 64 , 3 ​​+ yOffset , 292 , 12, Font.getHelvetica () , 12) );
348
349 unitprice = unitPrice.setScale (2, BigDecimal.ROUND_HALF_EVEN );
Linetotal 350 = lineTotal.setScale (2, BigDecimal.ROUND_HALF_EVEN );
351 DecimalFormat df = new DecimalFormat ("# , # # 0.00 ");
352 page.getElements (). Hinzufügen ( neue Bezeichnung ( df.format ( unitprice
353 . Double ()) , 364, 3 + yOffset , 82 , 12,
354 Font.getHelvetica () , 12, TextAlign.RIGHT ));
355 page.getElements (). Hinzufügen ( neue Bezeichnung ( df.format ( Linetotal
356 . Double ()) , 454, 3 + yOffset , 82 , 12,
357 Font.getHelvetica () , 12, TextAlign.RIGHT ));
358
359 yOffset + = 18;
360 }
361
362 private void drawTotals ( CeteDAO ceteDAO , Seite Seite ) {
363 / / In den Summen der Unterseite der Rechnung
364 BigDecimal Grandtotal = subTotal.add (Fracht );
365 Zwischensumme = subTotal.setScale (2, BigDecimal.ROUND_HALF_EVEN );
366 Fracht = freight.setScale (2, BigDecimal.ROUND_HALF_EVEN );
Grandtotal 367 = grandTotal.setScale (2, BigDecimal.ROUND_HALF_EVEN );
368 DecimalFormat df = new DecimalFormat ("# , # # 0.00 ");
369 page.getElements (). Hinzufügen ( neue Bezeichnung ( df.format (Zwischensumme
370 . Double ()) , 454, 667 , 82 , 12, Font.getHelvetica () , 12,
371 TextAlign.RIGHT ));
372 page.getElements (). Hinzufügen ( neue Bezeichnung ( df.format (Fracht
373 . Double ()) , 454, 685 , 82 , 12, Font.getHelvetica () , 12,
374 TextAlign.RIGHT ));
375 page.getElements (). Hinzufügen ( neue Bezeichnung ( df.format ( Grandtotal
376 . Double ()) , 454, 703 , 82 , 12, Font.getHelvetica () , 12,
377 TextAlign.RIGHT ));
378 }
379
380 Privat Vektor getInvoiceData (Anschluss -Anschluss,
381 InvoiceNumber int ) {
382 Vektor v1 = null;
383 / / Erstellt ein ResultSet für die invioce
384 try {
385 PreparedStatement ps = Connection.prepareStatement (
386 "SELECT o.OrderID , o.CustomerID , o.OrderDate , o.ShippedDate , Fracht, " +
387 " o.ShipName , o.ShipAddress , o.ShipCity , o.ShipPostalCode , o.ShipCountry , " +
388 " c.CompanyName als BillName , c.Address als BillAddress , " +
389 " c.City als BillCity , c.PostalCode als BillPostalCode , " +
390 " c.Country als BillCountry , s.CompanyName als ShipperName , " +
391 " p.ProductName , od.UnitPrice , od.Quantity " +
392 " FROM Bestellungen o " +

393 "JOIN Kunden c ON" +
394 " o.CustomerID c.CustomerID = " +
395 "JOIN Shippers s ON" +
396 " o.ShipVia s.ShipperID = " +
397 "JOIN [Order Details] od ON" +
398 " o.OrderID od.OrderID = " +
399 "JOIN Produkte p ON" +
400 " od.ProductID p.ProductID = " +
401 "Wo o.OrderID = ");
402
403 ps.setInt (1, InvoiceNumber );
404 ResultSet rs = ps.executeQuery ();
405 v1 = new Vector ( 1,1) ;
406 while ( rs.next ()) {
407 CeteDAO ceteDAO = new CeteDAO ( rs.getInt (1) , rs.getString (2) ,
408 rs.getDate (3) , rs.getDate (4) ,
409 rs.getBigDecimal (5) , rs.getString (6) ,
410 rs.getString (7) , rs.getString (8) ,
411 rs.getString (9) , rs.getString (10) ,
412 rs.getString (11) , rs.getString (12) ,
413 rs.getString (13) , rs.getString (14) ,
414 rs.getString (15) , rs.getString (16)
415 rs.getString (17) , rs.getBigDecimal (18)
416 rs.getShort (19 ));
417 v1.add ( ceteDAO );
418 }
419 } catch ( SQLException ex1 ) {
420 ex1.printStackTrace ( System.err );
421 }
422 Rück v1 ;
423 }
424 }
425
426 Klasse CeteDAO {
427
428 private int orderID ;
429 private String customerID ;
430 Privat Datum orderdate ;
431 Privat Datum ShippedDate ;
432 Privat BigDecimal Fracht;
433 private String Liefername ;
434 private String shipAddress ;
435 private String ShipCity ;
436 private String ShipPostalCode ;
437 private String Bestimmungsland ;
438 private String billName ;
439 private String billAddress ;
440 private String billCity ;
441 private String billPostalCode ;

442 private String billCountry ;
443 private String shipperName ;
444 private String product ;
445 Privat BigDecimal unitprice ;
446 PrivatkurzMenge ;
447
448 öffentliche CeteDAO (int orderID , String customerID , Datum orderdate ,
449 Datum Lieferdatum , BigDecimal Fracht , String Schiffsnamen ,
450 shipAddress String , String ShipCity , String ShipPostalCode ,
451 ShipCountry String , String billName , String billAddress ,
452 billCity String , String billPostalCode , String billCountry ,
453 shipperName String , String product , BigDecimal unitprice ,
454 Kurz Menge ) {
455 this.orderID = orderID ;
456 this.customerID = customerID ;
457 this.orderDate = orderdate ;
458 this.shippedDate = Lieferdatum ;
459 this.freight = Fracht;
460 this.shipName = Liefername ;
461 this.shipAddress = shipAddress ;
462 this.shipCity = ShipCity ;
463 this.shipPostalCode = ShipPostalCode ;
464 this.shipCountry = Bestimmungsland ;
465 this.billName = billName ;
466 this.billAddress = billAddress ;
467 this.billCity = billCity ;
468 this.billPostalCode = billPostalCode ;
469 this.billCountry = billCountry ;
470 this.shipperName = shipperName ;
471 this.productName = product ;
472 this.unitPrice unitprice = ;
473 this.quantity = Menge ;
474 }
475
476 public int getOrderID () {
477 Rück orderID ;
478 }
479
480 public String getCustomerID () {
481 Rück customerID ;
482 }
483
484 öffentliche Datum getOrderDate () {
485 Rückorderdate;
486 }
487
488 öffentliche Datum getShippedDate () {
489 Rück ShippedDate ;
490 }

491
492 öffentliche BigDecimal getFreight () {
493 Rückfracht ;
494 }
495
496 public String getShipName () {
497 Rückliefername;
498 }
499
500 öffentliche getShipAddress String () {
501 Rück shipAddress ;
502 }
503
504 public String getShipCity () {
505 Rück ShipCity ;
506 }
507
508 public String getShipPostalCode () {
509 Rück ShipPostalCode ;
510 }
511
512 public String getShipCountry () {
513 Rückbestimmungsland;
514 }
515
516 public String getBillName () {
517 Rück billName ;
518 }
519
520 public String getBillAddress () {
521 Rück billAddress ;
522 }
523
524 public String getBillCity () {
525 Rück billCity ;
526 }
527
528 public String getBillPostalCode () {
529 Rück billPostalCode ;
530 }
531
532 public String getBillCountry () {
533 Rück billCountry ;
534 }
535
536 public String getShipperName () {
537 Rück shipperName ;
538 }
539

540 public String getProductName () {
541 Rückproduct;
542 }
543
544 öffentliche BigDecimal getUnitPrice () {
545 Rückunitprice;
546 }
547
548 öffentliche Kurz getQuantity () {
549 Rücklaufmenge ;
550 }
551
552
553
554
555 }
556
557
558
559
560 }