Insert Simple Text Watermark into PDF with iTextSharp

Today I was in the need of printing a simple "Preview" watermark into an in-memory created pdf document and I have done it like that:
var memoryStream = new MemoryStream();

PdfReader reader = new PdfReader(path2pdfTemplate);
PdfStamper stamper = new PdfStamper(reader, memoryStream);

stamper.GetOverContent(1);
var cb = stamper.GetOverContent(1);

//activate Opacity for the next strokes/strings
var gstate = new PdfGState();
gstate.FillOpacity = 0.5f;
gstate.StrokeOpacity = 0.5f;

cb.SaveState();
cb.SetGState(gstate);

stamper.GetUnderContent(1);
cb.SetFontAndSize(BaseFont.CreateFont(), 130f);
cb.BeginText();

cb.SetColorFill(new BaseColor(Color.LightGray));

//print the text from lower left to upper right corner with angle of 40%
cb.ShowTextAligned(Element.ALIGN_LEFT, "Preview", 110, 20, 40);

cb.EndText();
cb.Stroke();

//Restore old state without any opacity
cb.RestoreState();

stamper.Writer.CloseStream = false;
stamper.Close();

return memoryStream.GetBuffer();

        pdf_preview

Win7 MediaCenter – PlayReady kann nicht aktualisiert werden…

Ich hatte gerade das Problem das mein Windows 7 MediaCenter mir sagte das mein "PlayReady" DRM Dings aktualisiert werden muss. Leider schlägt das jedes mal fehl, egal wie oft ich es wiederhole. Dann hab ich eben in einem Forum diesen kleinen Codeschnipsel gefunden, der das Problem auf Anhieb löste: cmd als Admin starten: net stop ehrecvr cd %programdata%\Microsoft\PlayReady del *.hds rmdir /s Cache cd %programdata%\Microsoft\ehome del *.hds rmdir /s Cache net start ehrecvr   Fertig! Danke an "rasheedb" 🙂

VPN von Android 4.0.4. mit Boardmitteln zur FritzBox 7390

How to: Wie verbindet man ein Smartphone mit Android 4.0.4 per VPN mit einer FritzBox 7390

Oha, mein Blogoutput ist auf ca. ein Beitrag pro Jahr gesunken. Naja, dann werde ich jetzt mal den Artikel für 2012 schreiben und auf keinen Fall Besserung geloben *g*. Nun zum eigentlichen Thema! Ich versuche schon etwas länger meinem Samsung Galaxy S beizubringen sich via VPN mit meiner heimischen FritzBox 7390 zu verbinden und neulich ist es mir nach einigem "quer durchs Internet lesen" tatsächlich gelungen. Hier gibts nun mein bebildertes "How-to" zum nachmachen. Verwendete Hard- und Software:
  • AVM FritzBox 7390:  Firmware: FRITZ!OS 05.21 / Firmware-Version: 84.05.21
  • Smartphone mit Android 4.0.4  (in meinem Fall ein Samsung Nexus S ohne Root oder sonstigen Hilfsmitteln)
  • Software: "FRITZ!Fernzugang einrichten" zu finden bei AVM oder genauer gesagt hier
Um dem Schrecken mit vielen Einzelbildern im Editor zu entgehen, habe ich alle Screenshots als eine Galerie eingefügt und in den Bildbeschreibungen am unteren Bildrand die Details rangeschrieben, wenn es an einer Stelle was zu beachten gibt. Als erstes braucht ihr die sogenannte "FRITZ!Fernzugang einrichten" Software um für eure FritzBox das VPN zu konfigurieren. Den Downloadlink gibts weiter oben und die Installation ist selbsterklärend, daher gehe ich darauf nicht weiter ein. Ab hier lasse ich erstmal die Bilder sprechen, viel Spaß 🙂 So, das solls hierzu gewesen sein. Hier nochmal die Knackpunkte:
  • Im Fernzugangs-Erstellungs-Dialog bei "Emailadresse" auf KEINEN FALL ein @-Zeichen eingeben, das mag Android scheinbar nicht! Beim iPhone ist das angeblich kein Problem
  • Nehmt zum Testen erstmal einfache Schlüssel/Passwörter um nicht an Tippfehlern zu scheitern
  • dyndns-Anbieter gibt es viele, "dyndns.org" ist nur ein bekanntes Beispiel aber es geht auch jeder andere
  • Das VPN funktioniert nur wenn ihr AUSSERHALB eures Heimnetzwerkes seit. Im heimischen WLAN seit ihr höchstwahrscheinlich im IP-Adressbereich eurer FritzBox, das funktioniert nicht!
Viel Erfolg beim nachmachen!

Tool-Tip: dotTRACE

Hui, hier ist ja schon lange nichts mehr passiert seh ich gerade, dann wirds aber mal wieder höchste Zeit für einen Beitrag 😀 Ich war neulich dazu gezwungen mir mal den genauen Start-Ablauf einer von mir entwickelten Anwendung anzuschauen, da diese eine recht lange Ladezeit hatte und ich mir einfach nicht erklären konnte wo die herkommt. Die Anwendung verwendet allerhand Drittanbieter-Bibliotheken, unter anderem auch NHibernate und FluentNHibernate als Aufsatz und ich hatte diese beiden im Verdacht für die schlechte Startperformance verantwortlich zu sein. Natürlich sucht man die Schuld erstmal bei jemand anderem, das ist ja logisch 😉 Nach einigem Google-Consulting bin ich dann darauf gestoßen, dass ich das Problem, wie so oft im Leben, nicht alleine habe und das jemand anders dafür auch schon eine Lösung gefunden hat. Um das Problem zu finden benutzte derjenige einen sogenannten Profiler namens dotTRACE von jetbrains. Dieses Tool zeigt einem exakt welche Schritte seine Anwendung durchläuft und wieviel Zeit diese Schritte gekostet haben. Da sieht man meistens sofort wer für das Performanceproblem verantwortlich ist. Ich hab das dann auch mal installiert und konnte dann das gleiche Problem auch bei mir feststellen. Genial dieses Tool! Tatsächlich war FluentNHibernate schuld. Genauer gesagt war das Problem eine Routine bei der Initialisierung der Konfiguration durch FluentNH. Dank dotTrace konnte ich sehen das da intern beim generieren der Konfiguration ein XML-Dokument erstellt wird, was ein vergleichsweise zeit/rechen-intensiver Vorgang ist. Das macht FluentNH bei jedem Startvorgang, auch wenn sich an der Konfiguration nichts geändert hat. Als Lösung gab er an diese Konfiguration als Binary-File abzuspeichern und diese beim Laden einfach einzuwerfen anstatt FluentNH das immer wieder neu generieren zu lassen und das hat mir letztendlich mehr als die Hälfte der Ladezeit eingespart. Großartig, dafür liebe ich das Internet 🙂 Abschließend muss ich diesem hervorragenden Tool aber noch einen halben Punkt in der B-Note abziehen, für das schlechte Anchoring des Fensters. Aber ansonsten bekommt's von mir eine absolute Empfehlung!