PDF::Writer und Umlaute?

Hallo allerseits,

benutz jemand den PDF::Writer um PDF’s zu erstellen. Falls ja, wie
regelt ihr das mit den Umlauten?
Wie man hier [1] lesen kann soll man sene Texte umwandeln.
Allerdings funktioniert das nicht bei mir. Wenn ich das wie in dem Link
beschreiben mache,
steigt Iconv mit folgender Meldung aus: Iconv::InvalidCharacter

Irgendwie habe ich da ein Problem mit dem Zeichensatz. Die DB ist auf
Unicode eingestellt.
Die Seite wird als UTF-8 ausgeliefert. Sollte alles soweit passen. Nur
will Iconv den String nicht wenn ein Umlaut darin vorkommt.

Jemand Erfahrung damit? Ãœbersehe ich generell irgendwas?

Gruß

[1] http://www.peterkrantz.com/2007/utf8-in-pdf-writer/

bei mir sieht’s ein bisschen anders aus (auch irgendwo herkopiert),
funktioniert aber anstandslos:

def replace_UTF8(field)
field = field.to_s
ic_ignore = Iconv.new(‘ISO-8859-15//IGNORE//TRANSLIT’, ‘UTF-8’)
field = ic_ignore.iconv(field)
ic_ignore.close

field

end

On 13/12/2007, at 11:07, Daniel W. wrote:

Irgendwie habe ich da ein Problem mit dem Zeichensatz. Die DB ist auf


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

http://upstream-berlin.com/blog <- blog
http://autoki.com/profile/alex <- autos 2.0
http://kommt-mit.de <- reisen 2.0

Kannst du damit das Euro Zeichen darstellen? Ich bin gerade mal ein
bisschen am experimentieren.
Habe jetztmal testweise ein kleines Ruby Script woraus ich ein PDF
erzeuge.

Da hatte ich jetzt eben den Effekt dass das File nicht als UTF-8 Encoded
gespeichert war.
Da gabs dann den selben Fehler von Iconv wie in der Rails App. Das
Encoding der Datei auf UTF-8 geändert. Dann gehts.

Wenn ich jetzt allerdings wieder das Encoding auf Standard ändere,
schmiert Iconv nicht mehr ab,
aber der Umlaut wird einfach nicht dargestellt.

Das sagt mir doch dann dass irgendwas mit dem Encoding in der Rails
Anwendung nicht passt.
Allerdings kann ich diesen Fehler jetzt nicht mehr reproduzieren. Egal
wie ich das Encoding der Datei ändere.

Kannst du mit deinem Code das Euro Zeichen darstellen?
Das funktioniert bei mir nur wen nich ISO-8859-1 nehme, da in
ISO-8859-15 das Euro Zeichen nicht enthalten ist.
Eigelntlich müsstest du auch Probleme haben diese Zeichen darzustellen.

Alexander Lang schrieb:

Hallo,

auf die Gefahr hin, dass ihr mich jetzt basht:

Ich hbe festgestellt, dass sich PDFs am leichtesten mit pdflatex
erstellen lassen. Das hat den Vorteil, dass ich die .tex Datei als
MimeType anlegen kann genau wie PDF und muss dann nur noch irgendwann
pdflatex aufrufen. Damit umgehe ich die ganzen PDF::Writer
Geschichten…

mfg

Ok, da hast du Recht. Das hatte ich dann verwechselt.
Aufjedenfall bin ich jetzt richtig verwirrt. Denn wenn ich in dem
lokalen Testscript wieder auf
ISO-8859-15 umstelle, funktionieren zumindest die Umlaute lokal, aber es
wird kein Eurozeichen dargestellt.
Dies wird durch das Currency Symbol ersetzt welches auf 164 in
ISO-8859-1 zu finden ist.
Obwohl die Umwandlung mit CONVERTER = Iconv.new( ‘ISO-8859-15’,
‘utf-8’) erfolgt.

Mal wieder ziemlich mysteriös irgendwie.

Gruss

Jens K. schrieb:

On Thu, Dec 13, 2007 at 11:36:16AM +0100, Daniel W. wrote:

schmiert Iconv nicht mehr ab,
Eigelntlich müsstest du auch Probleme haben diese Zeichen darzustellen.
Imho ist das genau umgekehrt - ISO-8859-15 enthält den €, und
ISO-8859-1 nicht.

Grüße,
Jens

Hallo nochmal,

mir fällt da ein: schau doch mal wie das in exabuch[1] gelöst ist, das
druck ahlt auch ne Rechnung mit pdf::writer und ich meine da euros
gesehen zu haben…

[1] http://code.google.com/p/exabuch/

mfg

Daniel W. schrieb:

So wie ich das sehe wird in exabuch Ruby FPDF genutzt. Zumindest mal in
der aktuellsten Version.
Kannte ich bis gerade eben auch nicht. Gibt es wohl einiges um PDF’s zu
erstellen.

Siebert M. schrieb:

FPDF gibt es auch als Rails Plugin.
siehe - auch zur Unicode - ISO-8859-15 Umwandlung - :

http://wiki.rubyonrails.org/rails/pages/Rfpdf+Plugin

Gruß
Michael

Am Thu, 13 Dec 2007 13:22:28 +0100
schrieb Daniel W. [email protected]:

On Dec 13, 2007, at 1:22 PM, Daniel W. wrote:

So wie ich das sehe wird in exabuch Ruby FPDF genutzt. Zumindest mal
in
der aktuellsten Version.
Kannte ich bis gerade eben auch nicht. Gibt es wohl einiges um PDF’s
zu
erstellen.

Ich benutze einen an Exabuch angelehnten Code, und hatte urspruenglich
auch Probleme mit Umlauten. Exabuch enthaelt genau die gleiche Iconv-
Funktion, mit Umwandlung von ISO-8859-15//IGNORE//TRANSLIT nach UTF-8.
Die Loesung der Probleme bei mir war, die Datenbank-Verbindung auf
UTF-8 zu setzen. In MySQL heisst das Command dafuer ‘set names utf8’,
in der database.yml schreibt man:

encoding: utf8

Seitdem flutschen korrekte PDFs hinten raus, mit Umlauten und Euro-
Zeichen.

Cheers, Mathias

// Mathias Meyer
// PAPERPLANES SOFTWARE.ENTWICKLUNG
// www.paperplanes.de
// Gabriel-Max-Str. 3, 10245 Berlin
// meyer.at.paperplanes.de, 0163.765.27.47

Also habe das Exabuch gerade eben mal getestet. Da funktioniert es wie
du gesagt hast.
Dann scheint das FPDF auch kein Unicode zu unterstützen. Worauf diese
Zeile aus Exabuch schliessen -> # workaround… fpdf doesn’t do utf-8
Das Encoding der DB hatte ich bereits vorher festgelgt. Allerdings
benutze ich postgresql.

Allerdings ist es doch für mein Begriffe andersrum? Also nicht wie du
geschrieben hast von ISO-8859-15 nach UTF-8,
sonder der UTF-8 Inhalt muss nach ISO-8859-15 konvertiert werden, da die
PDF Libs wohl nichts mit Unicode anfangen können.

Das widerum interessante ist, ich hab für Exabuch eine neue DB auf
meiner lokalen psql Instanz erzeugt. Damit lief Exabuch auch ohne
Probleme.
Irgendwas ist da krumm dass es nicht so läuft wie es soll.

Mathias Meyer schrieb:

Ich glaube ich weiss woran es klemmt. Aber ich verstehe es nicht.
Ich habe nicht nur wie in dem Artikel [1] geschrieben die text methode
überschrieben,
sondern auch die add_text Methode.
Aufjedenfall funktioniert es nicht wenn beide Methoden überschrieben
sind.

Wird nur die text überschrieben, arbeitet diese mit dem richtigen
Zeichensatz.
Allerdings bleibt die add_text davon vollkommen unbeeindruckt.

Um in beiden Funktionien den konvertierten Wert zu benutzen darf man nur
die
add_text überschreiben. Dann arbeiten beide Funktionen mit dem
konvertierten Werten.

Muss mal im Code schauen wie die beiden Funktionen funktionieren. Gerade
im Moment
verstehe ich es aufjedenfall nicht. Aber es scheint jetzt so zu
futnktionieren.

Gruss

Daniel W. schrieb:

Hallo Heiko,
das funktioniert soweit ganz gut.
Allerdings besteht noch ein Problem wenn das Euro Zeichen in Tabellen
benutz wird.
In meinem Fall ist das Euro Zeichen “zu lang”. Heisst wenn es hinter
einem Betrag in einer
nach rechts ausgerichteten Tabelle steht sind einige Leerzeichen an das
Euro Zeichen “angehangen”,
so dass die Formatierung gesprengt wird. Für einzelne “im Raum stehende”
Euro Zeichen durchaus
gangbarer Weg, aber in Zusammenspiel mit einer Tabelle leider auch nicht
optimal.

Aber Danke für den Hinweis.

Gruss

Heiko Lübbe schrieb:

Hallo Daniel,

auch bei mir wurde mit fpdf das Euro-Symbol nicht dargestellt.

Die Diskussion habe ich zum Anlass genommen das Problem auch bei mir zu
lösen.
Nach dem iconv mache ich nun noch ein gsub(164.chr, 128.chr) damit
werden alle
von iconv gelieferten 164 in 128 geändert (was das Euro-Zeichen im fpdf
default font cp1252 ist).

Grüße
Heiko


Heiko Lübbe
http://www.musterbrief-portal.de

Daniel W. schrieb:

On Dec 16 2007, at 18:16, Heiko Lübbe wrote:

gsub(164.chr, 128.chr)

Waere es nicht einfacher, mit iconv gleich in den richtigen
Zeichensatz (CP1252) zu konvertieren?
(Noch besser waere es, FPDF ins 21. Jahrhundert zu bringen; weiss aber
nicht, ob/wie das geht.)

Gruesse, Carsten

Am Tue, 18 Dec 2007 12:22:21 +0100
schrieb Carsten B. [email protected]:

On Dec 16 2007, at 18:16, Heiko Lübbe wrote:
(Noch besser waere es, FPDF ins 21. Jahrhundert zu bringen;

RFPDF, die in Ruby übertragene Version von FPDF, wird derzeit durch den
Autor für die Unterstützung von Unicode weiterentwickelt:
http://groups.google.com/group/rfpdf/browse_thread/thread/474abd5827c0d84
(siehe Mitteilungen von Ed Moss)

Grüße
Michael

Also CP1252 ändert nichts an der Tatsache dass das Euro Zeichen “zu
breit” ist.

Ob oder welche Konvertierung die Richtige ist ist wohl auch eher eine
Glaubensfrage.
Aber ich glaube CP1252 ist doch wieder irgendwas Win-mässiges, oder?

Kenne mich aber mit dem ganze Codepage und Encoding Kram nicht einmal
annähernd
gut genug aus um sagen zu können was da jetzt gut oder schlecht ist.

Aber eine Library die mit allem umgehen kann wäre natürlich das Beste.
Keine Frage.
Aber wie der einstige Entwickler von PDF::Writer in der Gruppe mal
schrieb:
“PDF knowledge is rather esoteric…”

Glaub eine PDF Library Unicode fähig zu machen ist was für die wirklich
harten Jungs. :wink:

Carsten B. schrieb:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs