Schrift
[thread]12775[/thread]

PDF wird falsch an den Browser gesendet - Windows vs. Linux



<< >> 6 Einträge, 1 Seite
RoffBoff
 2008-11-18 13:45
#116349 #116349
User since
2008-11-18
2 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich habe ein PDF Dokument in einer MySQL-Datenbank. Das Feld hat den Typ longlob. Das Dokument wird aus dem Feld gelesen und dann an den Browser gesendet. Unter Windows funktioniert das alles einwandfrei... jetzt wurde das System auf Linux umgestellt und plötzlich werden die Dokumente fehlerhaft zurückgegeben.
Die PDFs werden noch richtig in die Datenbank eingefügt und die Datensätze lassen sich beliebig austauschen: Auf der Windows Maschine werden alle Dokumente richtig ausgegeben, auf der Linux Maschine nicht, unabhängig wo sie erstellt wurden. Die Fehler sind betriebssystemabhängig und treten irgendwo zwischen Auslesen und Senden an den Browser auf.

Vergleicht man die PDF Dokumente in einem Editor sieht man, dass alles was im Klartext drinsteht identisch ist, aber der Rest nicht.

Hat jemand eine Idee warum das so sein könnte und mag sie mir mitteilen?

Danke und Gruß,
RoffBoff
renee
 2008-11-18 13:55
#116350 #116350
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig mal Code, wie Du das machst...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2008-11-18 13:55
#116351 #116351
User since
2005-01-17
14542 Artikel
Admin1
[Homepage]
user image
Quote
Vergleicht man die PDF Dokumente in einem Editor sieht man, dass alles was im Klartext drinsteht identisch ist, aber der Rest nicht.

Wie soll das Vergleichen denn gehen? PDF ist kein Textformat! PDF ist ein spezielles Postscript, welches auch binäre kodierte Daten beinhalten kann.

Wenn solltest du die Dateien binär vergleichen! Also unter Windows mit comp oder Unix mit diff.


Alles zu wenig Information, um zu analysieren.


Und wie liest du das PDF aus der Datenbank aus und gibst es an den Browser weiter?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

murphy
 2008-11-18 14:30
#116355 #116355
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Das Problem klingt ja verdächtig danach, dass irgendwo versehentlich eine Zeichensatzkonversion passiert, die den binären Inhalt des PDFs zerstört.

Aber ohne genauere Information zum Programmablauf und der Serverumgebung kann man nicht mal vernünftig raten, woran es liegen könnte...
When C++ is your hammer, every problem looks like your thumb.
RoffBoff
 2008-11-18 15:05
#116362 #116362
User since
2008-11-18
2 Artikel
BenutzerIn
[default_avatar]
GwenDragon+2008-11-18 12:55:24--
Quote
Vergleicht man die PDF Dokumente in einem Editor sieht man, dass alles was im Klartext drinsteht identisch ist, aber der Rest nicht.

Wie soll das Vergleichen denn gehen? PDF ist kein Textformat! PDF ist ein spezielles Postscript, welches auch binäre kodierte Daten beinhalten kann.

Wenn solltest du die Dateien binär vergleichen! Also unter Windows mit comp oder Unix mit diff.

Alles zu wenig Information, um zu analysieren.

Und wie liest du das PDF aus der Datenbank aus und gibst es an den Browser weiter?


Eigentlich ist es doch egal wie ich die PDF Dokumente vergleiche. Wenn ich aus einem Datensatz auf verschiedenen Systemen mit dem gleichen Quellcode ein PDF an den Browser sende sollte ja absolut alles identisch sein... ist es aber nicht!


Der Code zum Auslesen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
sub getPDF {
    my $Self = shift;
    my %Param = @_;

    $Self->{DBObject}->Prepare(
        SQL => "SELECT customer_id,date,pdf FROM saved_pdfs WHERE id = '$Param{ID}' LIMIT 0,1"
    );
    my @Row = $Self->{DBObject}->FetchrowArray();
    return @Row;
}


... und zum Senden:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
my @PDF = $Self->{ccTicketPDFObject}->getPDF(
            ID => $ID,
        );
        $PDF[1] =~ s/:/-/g;
        $PDF[1] =~ s/ /_/g;
        return $Self->{LayoutObject}->Attachment(
            Filename => "$PDF[0]_$PDF[1].pdf",
            ContentType => 'application/octet-stream',
            Content => $PDF[2],
        );


weitere Infos: Die Umgebung ist ein SLES10 Server auf dem der Helpdesk OTRS läuft. Die PDF Generierung etc. ist ein von mir geschriebenes Addon für den Helpdesk. Der Code für das Addon wurde nicht geändert. Zeichensatz ist Unicode (soweit ich das weiß).

Fehlt noch was an Information?

Gruß,
RoffBoff
renee
 2008-11-18 15:42
#116366 #116366
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Passiert die Ausgabe in Attachment im binmode?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 6 Einträge, 1 Seite



View all threads created 2008-11-18 13:45.