osuv.de

PDFs manipulieren

Irgendwann kommt jeder mal in die Situation, PDFs zu manipulieren. Sei es, mehrere Seiten zusammenfügen, oder einzelne Seiten entfernen, oder zwei DinA5 auf eine DinA4 Seite packen…hier will ich nun ein paar Beispiele geben, wie man das macht.
Zunächst sei gesagt, dass wir zwei Programme dafür verwenden:

    1. wobei pdfjam unter Arch Linux bereit Bestandteil von texlive-core.
    2. aus diesem Paket brauchen wir eigentlich nur pdfnup.

PDF teilen und zusammenfügen

Eine PDF in einzelne Seiten zu teilen, geht wie folgt:

pdftk businessplan.pdf brust

Nun hat man die PDF in einzelne PDF Dateien entsprechend der Seitenanzahl. Hier kann man nun einzelne Seiten für etwas anderes entwenden, oder gegen andere austauschen,…oder oder oder.
Möchte man mehrere PDFs in eine PDF packen, geht das wie folgt:

pdftk businessplan.pdf finanzmodell_versuch2.pdf cat output done.pdf

Wobei die erste PDF z.B. Seite 1. belegen würde und die 2. PDF die zweite Seite, usw. usf.

Zwei DinA5 Seiten auf eine DinA4 Seite

In meinem Fall hatte ich zwei DinA5 Seiten. Eine im Hochformat, und die andere im Querformat. Diese wollte ich jetzt auf eine DinA4 Seite packen, um sie anschließend nicht bloß auszudrucken (Das hätte Cups sonst auch geschaft). Nein, ich wollte diese DinA4 Seite dann in eine andere PDF Datei einfügen. Damit beides in möglichster Größe auf die DinA4 Seite (Hochformat) passt, musste ich vorher die eine DinA5 Seite im Hochformat um 90° drehen.
Hier kommt jetzt pdfnup zum Einsatz, was beide Aufgaben in einem Schritt durchführen kann. Seiten rotieren und zusammenfügen.
Der kryptische Befehlt dafür sieht wie folgt aus:

pdfnup "/tmp/DinA5-Hochformat.pdf" "/home/markuman/HSHL/test/DinA5-Querformat.pdf" --nup 1x2 --paper a4paper --no-landscape --frame false --trim "0 0 0 0" --delta "0 0" --offset "0 0" --scale 1.0 --openright false --turn true --noautoscale false --column false --columnstrict false --tidy --outfile "/home/markuman/HSHL/test/test.pdf"

Aber es gibt auch eine GUI für pdfnup. Hier sollte dann alles soweit selbsterklärend sein :) Eigentlich ein nettes und mächtiges tool.

Ach ja, zu letzt sei noch gesagt, das pdftk auch PDFs reparieren kann. Zumindest versuchen…

pdftk 123.pdf output 123fixed.pdf

Google+

Seit gestern hab ich Google+ getestet.

  • Was was soll das sein?
    • Eine Art Facebook von Google.
  • Und was ist der Unterschied?
    • Die trennung von Freunden funktioniert im Prinzip wie bei Diaspora. Man teilt nicht automatisch alles mit seinen “Freunden”. Sondern kann schnell und einfach differenzieren zwischen ”(Internet) Bekanntschaften”, “Arbeitskollegen”, “Freunden”, “Familie”…
    • Es integriert sich nahtlos in alle anderen Google-Services. Sei es Googlemail, Picasa, Android oder die Googlesuche.
    • Es wirkt viel aufgeräumter und eleganter und kommt ohne den Farmvillrotz daher
    • “Hangouts” bieten die Möglichkeit, Videotelefonie mit bis zu 10 Teilnehmern zu machen.

Diaspora hatte ich mir damals auch direkt angeguckt und getestet. Es war aber träge, zudem fand es kaum Anklang (Ich hatte nur 3 “Freunde”). Bei Google+ sind es jetzt schon 10 Personen die ich kenne. Wenn es nach mir ginge, sollten das nun direkt alle benutzen anstelle von Facebook. Von Studivz will ich hier gar nicht mehr sprechen. Das ist meiner Meinung nach auf einer Stufe wie MySpace :)

Wenn wer eine Google+ Einladung will, so gebe man mir einfach seine Googlemailadresse.

Hello Moto Katastrophe

Ich besitze das Motorola Defy, welches mit Android 2.1 kommt. Nun hat Motorola ein 3/4 Jahr gebraucht, um Android 2.2 dafür auszuliefern. Und das sieht dann ungefährt so aus: Bugliste Defy Android 2.2
Auch andere Motorola Geräte haben ein Android 2.2 Update bekommen - und auch da sieht es nicht anders aus. Motorola hat auf ganzer Linie verkackt. Die brauchen ein Jahr, um veraltete Software, voller Bugs an die Endverbraucher auszuliefern.
Ich wollte es erst nicht glauben, also hab ich ein Wipe durchgeführt und anschließend das Update auf einer WinDos Kiste durchgeführt. Naja, und was die Leute so schreiben stimmt. Das Defy wird trotz Android 2.2, welches ein Just In Time Compiler besitzt, langsamer. Eine Bodenlose Frechheit.
Da ich keine Lust hab, das zu reklamieren und mein Geld zurück zu fordern, bin ich dann doch den Schritt mit dem Rooten und Flashen auf Android 2.3.4 gegangen. Wie das nun mit dem Defy nach dem Update auf Froyo 2.2 funktioniert, schilder ich nun hier:

Hinweise vorab!

  1. Keine Ahnung wie man das unter WinDos macht, hier wird nur der Linux Weg beschrieben.
  2. Wie man ins Recover Menü kommt ist hier sehr gut beschrieben. Das brauchen wir!
  3. Rooten und Flashen macht ihr auf eigene Gefahr. Das Defy kann dabei kaputt gehen! Ihr verliert so oder so eure Garantie!
  4. Schadet nicht sich diesen Thread zum CM7 für das Defy durchzulesen!
  5. Original-Thread zum Rooten
    1. Es gibt aber auch verschiedene Wege ans Ziel, so wie verschiedene Roms die ihr nutzen könnt. Gibt es alles im xda-developers Forum.

Schritt 1

Das Defy neustarten, dabei Lautstärketaste nach unten gedrückt halten. Hier kommt man in das Wipe Menü. Hier einmal “Wipe data/Factory reset” durchführen und anschließend noch “Wipe cache”.

Jetzt das Defy neustarten und dabei die Lautstärketaste nach oben drücken, um in den Bootloader Mode zu kommen.
Jetzt das Defy an den PC anschließen. Als root im “Schritt 1” Ordner folgende ausführen:

# ./sbf_flash\ \(1\).x 3.4.2_177-005_NORDIC.sfb 
SBF FLASH 1.24 (mbm)
http://opticaldelusion.org

=== 3.4.2_177-005_NORDIC.sfb ===
Index[1]: Unexpected chip 32
Index[2]: Unexpected chip 32
Index[3]: Unexpected chip 32
Index[4]: Unexpected chip 32
Index[5]: Unexpected chip 32
Index[6]: Unexpected chip 32
Index[7]: Unexpected chip 32
Index[8]: Unexpected chip 32
Index[9]: Unexpected chip 32
Index[10]: Unexpected chip 32
Index[11]: Unexpected chip 32
Index[12]: Unexpected chip 32
Index[13]: Unexpected chip 32
00: RDL03 0x82000000-0x8204CFFF 4035 AP
01:  CG31 0xB0280000-0xB02847FF 9A68 AP
02:  CG32 0xC7A00000-0xC7A207FF 4805 AP
03:  CG33 0xB2000000-0xB2DC07FF 1F42 AP
04:  CG34 0xB0700000-0xB07047FF AB80 AP
05:  CG35 0xB1000000-0xB17FFFFF 0B12 AP
06:  CG39 0xB3300000-0xC79C07FF 558B AP
07:  CG42 0xB0800000-0xB0842FFF 4BB7 AP
08:  CG45 0xB0C00000-0xB0F007FF 738D AP
09:  CG47 0xB1800000-0xB1FFFFFF B6D1 AP
10:  CG53 0xB2F00000-0xB2F007FF FDFF AP
11:  CG61 0xB0B00000-0xB0B7FFFF 4A7C AP
12:  CG64 0xB0000000-0xB00047FF 85D0 AP
13:  CG65 0xB0180000-0xB01847FF 2409 AP

 >> waiting for phone: Connected.
 >> uploading RDL03: 100.0%
 -- OK
 >> verifying ramloader
 -- OK
 >> executing ramloader
 -- OK
 >> waiting for phone: Connected.
 >> sending erase
 -- OK
 >> uploading CG31: 100.0%
 -- OK
 >> uploading CG32: 100.0%
 -- OK
 >> uploading CG33: 100.0%
 -- OK
 >> uploading CG34: 100.0%
 -- OK
 >> uploading CG35: 100.0%
 -- OK
 >> uploading CG39: 100.0%
 -- OK
 >> uploading CG42: 100.0%
 -- OK
 >> uploading CG45: 100.0%
 -- OK
 >> uploading CG47: 100.0%
 -- OK
 >> uploading CG53: 100.0%
 -- OK
 >> uploading CG61: 100.0%
 -- OK
 >> uploading CG64: 100.0%
 -- OK
 >> uploading CG65: 100.0%
 -- OK
 >> verifying CG31
 -- OK
 >> verifying CG32
 -- OK
 >> verifying CG33
 -- OK
 >> verifying CG34
 -- OK
 >> verifying CG35
 -- OK
 >> verifying CG39
 -- OK
 >> verifying CG42
 -- OK
 >> verifying CG45
 -- OK
 >> verifying CG47
 -- OK
 >> verifying CG53
 -- OK
 >> verifying CG61
 -- OK
 >> verifying CG64
 -- OK
 >> verifying CG65
 -- OK
 >> rebooting

Das Defy sollte nun auch anzeigen, dass es “SW Update” durchgeführt wird.
Bei dem Nordic Image handelt es sich um ein MotorBlur Froyo Image, welche erstaunlicherweise sehr gut funktioniert - sei es drum, das wollen wir ja nicht mehr haben (Es bleibt auch Fraglich warum Motorola nicht das ausgeliefert hat. Zudem es nach dem ersten Mal starten, was immer etwas länger dauert, keine 30 Sekunden zum Booten braucht).

Schritt 2

Nach dem erfolgreichen flashen Booten wir nun das Defy. Wir schalten unter Einstellungen → Anwendungen, das USB Debugging ein.
Ab hier brauchen wir ein eingerichtetes adb - sprich, das Defy muss als Android Device erkannt werden.
Wir wechseln als User in den Ordner Schritt 2 und führen die RootDefy.sh aus:

$ sh DefyRoot/RootDefy.sh 
Found device 0163C0100F022008
Pushing rageagainstthecage: 2691 KB/s (585731 bytes in 0.212s)
done
Pushing su: 641 KB/s (26264 bytes in 0.039s)
done
Pushing Superuser.apk: 2706 KB/s (196521 bytes in 0.070s)
done
Making rageagainstthecage executable and executing it: done
Waiting 15 sec for phone adbd to restart before continuing
Remounting filesystem in read-write mode: done
Installing su command: done
Installing Superuser command: done

Jetzt haben wir Root-Rechte auf dem Defy. Wir starten es auch direkt einmal neu.

Schritt 3

Den gesamten Inhalt vom Ordner Schritt 3 direkt auf die SD-Karte kopieren und SndInitDefy_1.4_2.apk installieren. Anschließend die installierte App öffnen und auf “Install 2ndInit Recovery” klicken. Es sollte dann direkt oben die LED im Defy rot leuchten. Nach ~20-30 Sekunden sollte die LED grün leuchten. Jetzt stellen wir das USB Debugging wieder aus und starten das Defy neu.

Jetzt kommt man direkt in ein Boot-Menü, in dem wählen wir: Boot → Normal
Das Defy sollte wieder bis ins Android booten. Wir starten es wieder neu, es sollte wieder das Boot-Menü kommen. Diesmal wählen wir: Recovery → [Custom Recovery]
Hier wählen wir zuerst “wipe cache partition” und anschließend “wipe data/factory reset”
Dann wählen wir in dem Menü “install zip from sdcard”, “choose zip from sdcard” und wählen “cm7.1.0-RC1-jordan-signed.zip”. Das Rom wird installiert. Das selbe anschließend nochmal, nur mit “gapps-gb-20110613-signed.zip”.
Jetzt ”+++++Go Back++++++” und “reboot your system now”.

Jetzt sollte CynogenMod 7.1 (Android Gingerbread 2.3.4) booten.