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?
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.
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…
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.
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.
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…
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.
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.
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.
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.
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.
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).
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.)
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.
Carsten B. schrieb:
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.