PDF2PPT

72 Tage zuvor

Die Präsentation zu meinem letzten Talk habe ich, aufgrund der zahlreichen Vorteile dieses Ansatzes für das Layout, mit LaTeX (Beamer) erstellt.

Dennoch wollte ich während der Präsentation selbst nicht auf die erweiterten Vortragsoptionen von PowerPoint verzichten – diese beinhalten (unter anderem) Anzeige von Kommentaren, Folienlaufleiste und Stoppuhr.

Nachdem ich kein anderes Tool gefunden habe, das all diese Funktionen bei angemessener Stabilität und Qualität bieten würde, entschied ich mich für den Ansatz, jede Folie aus der PDF-Datei, die LaTeX mir erstellt hat, in eine PowerPoint-Folie zu kopieren. Um den Mehraufwand dieser Methode erträglich zu machen, hier ein kleines Java-Programm, welches die Aufgabe der Transformation von PDFs in PPTX-Dateien automatisiert:

PDF2PPT.jar [21,69MB]
(33 mal heruntergeladen)

Dieses Programm steht unter der GNU General Public License 3.0

Zur Vereinfachung kann man sich einfach ein kleines Batch-Skript erstellen, welches Dateien, die per Drag&Drop auf selbiges gezogen werden, an das Java-Programm weiterreicht – dieses kann z.B. den folgenden Inhalt haben:

@echo off
java -jar PDF2PPT.jar %1

Mein Programm benutzt die folgenden Bibliotheken:

  • GhostScript (binäre Windows-Version) und ghost4j als Java-Brücke zum Rendern der PDF-Datei in Images
  • ImageMagick (binäre Windows-Version) und Java-Brücke im4java zum Herunterrechnen der von GhostScript extrahierten Images
  • Apache POI zum Erstellen der PPTX-Dokumente (Pure Java-Bibliothek)

Ich bitte zu beachten:

  • Die aktuelle Version ist noch fast völlig ungetestet und kann, muss aber nicht, zum gewünschten Erfolg führen.
  • Aufgrund der relativ vielen externen Bibliotheken und deren Requirements ist das Programm sehr groß: 21,6 MB. Dies mag für ein solch kleines Tool übertrieben erscheinen, war allerdings der einfachste Weg für mich, möglichst schnell etwas zu entwickeln, das einigermaßen vernünftige Ergebnisse liefert

Zusätzlich gilt: Ich hatte nur den oben genannten Use-Case im Sinne; die erstellte PDF-Datei besteht aus einer Aneinanderreihung von Bildern – enthaltene Texte etc. können nicht mit PowerPoint-Mitteln editiert werden!

Ansonsten wünsche ich viel Erfolg bei der Verwendung.

/edit:
Jetzt habe ich tatsächlich doch noch ein (Freeware-)Tool gefunden, das denselben Job erledigt wie meines (und dabei evtl. schon etwas stabiler und auf jeden Fall viel kleiner ist): PDF2PPT von RubyPDF Technologies. Nun – wer in den Kommentaren eine vergleichende Evaluation posten möchte, immer gern ;-)

Dominic Scheurer
Wie finden Sie diesen Artikel?

Bewertung: 7.6/10 (5 votes)

,

Kommentare
---

Automatische Aktualisierung von DynDNS-Adresse und Eintragung in Windows-Firewall

207 Tage zuvor

Folgender Fall: Aus Sicherheitsgründen soll der zugelassene IP-Bereich für den Zugriff auf einen Webserver per RDP mit der Windows-Firewall eingeschränkt werden. Das Problem ist, dass nur die wenigsten Internet-Nutzer über eine eigene feste IP zu Hause verfügen.

Die Lösung: Einrichten einer dynamischen Internet-Adresse per DynDNS und eine automatische Aktualisierung des Eintrags in der Firewall mit einem Batch-Skript, das dann per Cronjob regelmäßig ausgeführt wird. Glücklicherweise werden damit auch nur Windows-Bordmittel benötigt (neben der DynDNS-Adresse). Auch wenn ich hier keine detaillierte Sicherheitsanalyse anbieten kann, bin ich doch überzeugt, dass dieser Ansatz pragmatisch ist und eine höhere Sicherheit gewährleistet als die Unterlassung einer IP-Bereichs-Einschränkung.

Das folgende Skript sieht die Einbindung einer einzelnen festen IP-Adresse vor, für den Fall, dass ein Zugriffsberechtigter über eine solche verfügt. Falls dies nicht der Fall ist, lässt sich dies leicht wieder entfernen.

@echo off
REM --------------- KONFIGURATION ---------------
SET DynAddr=your-name.dyndns.org
SET StaticIP=123.123.123.123
REM ------------- ENDE KONFIGURATION ------------
echo Skript zur Aufloesung der IP der DynDNS-
echo Adresse und Eintragung in die Firewall
echo.
FOR /F "tokens=3 delims= " %%A IN ('nslookup %DynAddr%
↳ ^| findstr "[0-9].[0-9].[0-9].[0-9]"') DO SET
↳ ResolvedIP=%%A
echo IP: %ResolvedIP%
netsh advfirewall firewall set rule name="Remotedesktop
↳ (TCP eingehend)" new remoteip=%StaticIP%/32,
↳ %ResolvedIP%/32

Der Knackpunkt ist das Herumexperimentieren mit dem netsh-Befehl – für mich persönlich war allerdings der lästige Teil die Sache mit der for-Schleife, die an sich nur einen Substring extrahiert. Workarounds, die man erst lange suchen muss, wenn man sonst keine Batch-Skripte schreibt…

Wenn ein Fehler enthalten ist, bitte schreibt mir – ich benutze die paar Zeilen schließlich selbst auch ;-)

Hier nochmal die Datei zum Download: DynDNS_FW_Rewrite.bat [0,00MB]
(98 mal heruntergeladen)

Dominic Scheurer
Wie finden Sie diesen Artikel?

Bewertung: 8.5/10 (8 votes)

,

---

Grundlagen der Modellierung und Simulation

445 Tage zuvor

Während des Lernens für die Veranstaltung Grundlagen der Modellierung und Simulation (Einführung in Computational Engineering) habe ich eine recht ausführliche Zusammenfassung erstellt, die ich hiermit der Öffentlichkeit zur Verfügung stellen möchte. Die Inhalte sind den Folien zur Veranstaltung entnommen. Enthalten sind unter anderem die Themen

  • Differentialgleichungen
    • Gewöhnliche und partielle Differentialgleichungen
    • Transformation auf 1. Ordnung, Autonomisierung
    • Lösbarkeit
    • Variation der Konstanten
  • Grundbegriffe der Simulation
  • Diskrete Modellierung und Simulation
    • Ereignisgesteuerte Simulation
    • Petrinetze
  • Zeitkontinuierliche Modellierung und Simulation
    • Allgemeine, lineare Systemdynamik
    • Linearisierung um Ruhelagen
    • Steife Systeme
  • Numerische Simulation
    • Gleitpunktzahlen
    • Numerische Lösung nichtlinearer Differentialgleichungen
      • Euler-Verfahren (explizit/implizit)
      • Heun-Verfahren
  • Teilschritte einer Simulationsstudie
  • Modulare Modellbildung

CE-Zusammenfassung [1,19MB]
(453 mal heruntergeladen)

Changelog:

  • Erweiterung des Modellbegriffs (Auszug aus Probeklausur)
  • Ergänzung zur mathematischen Modellierung von Petrinetzen
  • Kleine Typographiefehler behoben
  • Kleine Ergänzung zur Relaxationsmatrix beim Fixpunktverfahren; Zeichensetzungsfehler behoben
Dominic Scheurer
Wie finden Sie diesen Artikel?

Bewertung: 7.9/10 (14 votes)

,

Kommentare
---

Redeanalyse: Vorgehensweise, Gliederung

585 Tage zuvor

Erstaunlicherweise ist eines meiner populärsten Suchergebnisse bei Google ein PDF-Dokument, dass ich in der 10. Klasse erstellt und auf meinen neuen Webspace migriert habe: Ein Leitfaden zur Redeanalyse mit den Themen

  • Vorgehensweise
  • Gliederung
  • Texttypische Kommunikationssituation
  • Stilmittel

Da dieses Dokument offensichtlich recht gefrage ist (5790 Downloads), möchte ich es hiermit erneut kommunizieren.

Download: Leitfaden zur Redeanalyse

Dominic Scheurer
Wie finden Sie diesen Artikel?

Bewertung: 7.1/10 (22 votes)

,

Kommentare
---

ASP.NET: Einen Web-Service nutzen mit WSDL-File und Proxy-Klasse

599 Tage zuvor

ASP.NET ist für mich Neuland. Geschäftlich habe ich mich lange mit der Programmierung unter “Classic” ASP beschäftigt, Skriptsprache JScript, und wer sich damit auskennt, wird verstehen, warum ich sehr begeistert von ASP.NET bin ;-)

Es kostete mich dennoch etwas Einarbeitungszeit, erfolgreich einen Web-Service unter Verwendung einer von diesem Service bereitgestellten WSDL1-Datei mit ASP.NET (Skriptsprache C#) unter dem Microsoft-Webserver IIS anzusprechen und nutzen zu können.

Daher dieses kleine Tutorial. Ich werde kurz erklären:

  • Was man zum Ansprechen eines Web-Services unter ASP.NET benötigt
  • Wie man zum Webservice passende Proxyklassen erzeugt und kompiliert
  • Wie man mittels der neu erstellen Proxyklassen auf den Web-Service zugreift

Voraussetzungen

Benötigt werden

  • das Microsoft .NET Framework
  • das “Microsoft Windows SDK for Windows 7 and .NET Framework”2 in der zum Framework passenden Version
  • ein beliebiger Quelltexteditor3

Proxyklassen

Proxyklassen erleichtern den Zugriff auf den Web-Service, indem sie eine objektorientierte Schnittstelle bieten. Praktischerweise gibt es im oben angeführten SDK ein Programm “wsdl.exe”, das diese automatisch generieren kann! Das Took liegt im Bin-Verzeichnis des SDKs, also beispielsweise “C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\wsdl.exe”. Eine genauere Übersicht über die Möglichkeiten von wsdl.exe und das Erstellen von Proxyklassen findet sich im OpenBook von Galileo Press zu ASP.NET4.

Ein Beispielaufruf des Tools ist
wsdl /l:cs /n:myWebServiceConsumer /o:proxyklasse.cs http://www.domain.tl/webservice.asmx?WSDL,
wobei /l:cs besagt, dass die Zielsprache C# sein soll. Ebenso denkbar ist z.B. /l:vb für VB.NET; ich finde VB (Visual Basic) aber sehr hässlich ;-). Der Name für die Proxyklasse, unter dem sie später verwendet wird, ist als myWebServiceConsumer angegeben und kann beliebig variiert werden – man sollte ihn sich nur merken. Das Hauptargument ist die URL zur WSDL-Beschreibung des Web-Services.

Das Ergebnis dieses Aufrufes ist die Datei “proxyklasse.cs”, deren Namen unabhängig vom angegebenen Namen (Namespace) der Proxyklasse über den Parameter /o angegeben werden kann.

Nun muss die Proxyklasse nur noch kompiliert werden. Dazu liefert das .NET-Framework den C#-Compiler csc, der bei mir unter “C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe” liegt. Ein möglicher Aufruf ist
csc /t:library /out:myWebServiceConsumer.dll /r:System.dll /r:System.Xml.dll /r:System.Web.Services.dll proxyklasse.cs

Das Ergebnis ist die DLL-Datei myWebServiceConsumer.dll: Unsere fertig kompilierte Proxyklasse, die wir im nächsten Schritt direkt einbinden können.

Einbindung

Benutzt werden kann die im letzten Schritt erstellte Proxyklasse, indem sie in den bin-Ordner der IIS-Site kopiert wird, in der sie verwendet werden soll. Der Ordner “bin” muss gegebenenfalls neu erstellt werden. Bei einer Standardkonfiguration der Site werden die dort enthaltenen Bibliotheken automatisch geladen. Ich empfehle, die Site über den IIS-Manager neu zu starten, um sicherzugehen, dass die Proxyklasse auch geladen wird.

Die Klasse kann nun in einer aspx-Datei, in der sie benötigt wird, mit der Direktive

<%@ Import Namespace="myWebServiceConsumer" %>

eingebunden werden. Danach kann man objektorientiert auf den Web-Service zugreifen; besitzt dieser bspw. eine Klasse StringPrinter mit der Methode printSomeString(), kann einfach eine neue Instanz angelegt und auf die Methode zugegriffen werden:
StringPrinter sp = new StringPrinter(); sp.printSomeString();

Auskunft darüber, welche Klassen und Methoden der Web-Service und damit die Proxyklasse zur Verfügung stellt, erhält man entweder über die Dokumentation des Web-Services, über den Inhalt der WSDL-Datei (diese liegt im XML-Format vor und kann mit einem Browser gelesen werden) oder über den Quelltext der Proxyklasse selbst, also über die Datei “proxyklasse.cs”.

Fußnoten

1 http://de.wikipedia.org/wiki/WSDL

2 Version 3.5 Download von Microsoft

3 Der Quelltexteditor ist wirklich beliebig, Windows Notepad genügt vollkommen. Praktischer und auch kostenlos ist allerdings Microsoft Visual Web Developer 2010 Express

4 OpenBook zu ASP.NET

Dominic Scheurer
Wie finden Sie diesen Artikel?

Bewertung: 8.1/10 (15 votes)

,

Kommentare
---

« älter