php.de

Zurück   php.de > Webentwicklung > Server, Hosting und Workstations

Server, Hosting und Workstations Server-Konfigurationsdateien (.htaccess/httpd.conf) und Arbeiten auf Serverebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.02.2009, 10:14  
Neuer Benutzer
 
Registriert seit: 02.02.2009
Beiträge: 6
coruscant befindet sich auf einem aufstrebenden Ast
Standard Funktion pdf_load_memory_image nicht vorhanden

Hallo Alle,

ich habe ein Problem der "besonderen Art":
Ich habe meinen Server umgerüstet von PHP4 auf PHP5. Wir verwenden seit immer schon pdflib und an sich hat das kompilieren und das installieren des Wrappers über PECL geklappt, PDF-Files werden erstellt. Nur eine Funktion ist auf einmal nicht mehr vorhanden: pdf_load_memory_image

Laut PHP-User-Manual wird die Funktion von pdflib nicht unterstützt, es gibt sie aber trotzdem (was das mit "nicht unterstützt" genau heisst, habe ich nicht rausgefunden). Früher war sie einfach verfügbar und jetzt ist sie es nicht mehr. Die Frage ist jetzt, wo kriege ich die her? Meine PHP-Installation ist an sich vollständig. Laut PHP-Manual war sie in PHP4 dabei, ansonsten steht noch "PECL". Aber welches Package in PECL muss ich installieren, um diese Funktion zu bekommen? Das PECL-PDFlib-Package habe ich ja schon installiert.

Vielen Dank für jede Hilfe im Voraus,
Benedikt.
coruscant ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.02.2009, 10:51  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Also im Quellcode von
Zitat:
pdflib-1.0
pdflib-2.0.5
pdflib-2.1.0
pdflib-2.1.2
pdflib-2.1.4
gibt es nirgendwo pdf_load_memory_image, aber in jeder Version pdf_open_memory_image
David ist offline   Mit Zitat antworten
Alt 02.02.2009, 12:06  
Neuer Benutzer
 
Registriert seit: 02.02.2009
Beiträge: 6
coruscant befindet sich auf einem aufstrebenden Ast
Standard Sorry, meine natürlich pdf_open_memory_image

Sorry, ich meine natürlich pdf_open_memory_image.

Wir verwenden PDFlib-Lite in der Version:
PDFlib GmbH Version 7.0.3
PECL Version 2.1.5
Revision 1.7

Was ist da passiert? Hat PDFlib diese Funktion in späteren Versionen nicht mehr? Was gibt es für Workarounds?

Lg,
Benedikt.
coruscant ist offline   Mit Zitat antworten
Alt 02.02.2009, 15:19  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von pdf.c
/* set this define if you want to include GD support
* this adds the (unofficial) function pdf_open_memory_image()
#define PDFLIB_WITH_GD_SUPPORT
*/
Das kannst Du vor dem Compilieren in dieser Datei tun oder als Option beim Compiler-Aufruf.
David ist offline   Mit Zitat antworten
Alt 03.02.2009, 09:18  
Neuer Benutzer
 
Registriert seit: 02.02.2009
Beiträge: 6
coruscant befindet sich auf einem aufstrebenden Ast
Standard

Hmm, ich habe jetzt ca. zwei Stunden gesucht, wie diese Datei noch heissen könnte (pdf.c gibt es im Source-Tree von pdflib (in der Version, die ich habe) nicht), bin aber nicht fündig geworden. Wo ist die Datei denn?
coruscant ist offline   Mit Zitat antworten
Alt 03.02.2009, 09:33  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard


Alle Versionen wurden von PECL :: Package :: pdflib geladen.
David ist offline   Mit Zitat antworten
Alt 03.02.2009, 13:05  
Neuer Benutzer
 
Registriert seit: 02.02.2009
Beiträge: 6
coruscant befindet sich auf einem aufstrebenden Ast
Standard

Ok, hier ist das was ich jetzt gemacht habe:

Zitat:
wget http://pecl.php.net/get/pdflib-2.1.5.tgz
tar xvfz pdflib*tgz
cd pdflib-2.1.5
nano pdf.c
-> Aendern define einkommentieren wie folgt:

Zitat:
/* set this define if you want to include GD support
* this adds the (unofficial) function pdf_open_memory_image() */

#define PDFLIB_WITH_GD_SUPPORT
-> abspeichern

Zitat:
cd ..
mv package.xml pdflib-2.1.5
(ohne das passen die Pfade nicht)

Zitat:
pecl install package.xml
Und anschliessend bekomme ich folgenden Output:
Zitat:
[root@iis pdflib-2.1.5]# pecl install package.xml
10 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025
path to pdflib installation? : /usr/local
building in /var/tmp/pear-build-root/pdflib-2.1.5
running: /root/pdflib-2.1.5/configure --with-pdflib=/usr/local
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking whether gcc and cc understand -c and -o together... yes
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... i686-redhat-linux-gnu
checking host system type... i686-redhat-linux-gnu
checking target system type... i686-redhat-linux-gnu
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext
checking for PHP extension directory... /usr/lib/php/modules
checking for PHP installed headers prefix... /usr/include/php
checking for re2c... no
configure: WARNING: You will need re2c 0.9.11 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking for PDFlib support... yes, shared
checking for PDF_open_pdi in -lpdf... yes
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for epcf90... no
checking for f95... no
checking for fort... no
checking for xlf95... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for gfortran... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether accepts -g... no
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/sh /var/tmp/pear-build-root/pdflib-2.1.5/libtool --mode=compile gcc -I. -I/root/pdflib-2.1.5 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/pdflib-2.1.5/include -I/var/tmp/pear-build-root/pdflib-2.1.5/main -I/root/pdflib-2.1.5 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/local/include -DHAVE_CONFIG_H -g -O2 -c /root/pdflib-2.1.5/pdf.c -o pdf.lo
mkdir .libs
gcc -I. -I/root/pdflib-2.1.5 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/pdflib-2.1.5/include -I/var/tmp/pear-build-root/pdflib-2.1.5/main -I/root/pdflib-2.1.5 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/local/include -DHAVE_CONFIG_H -g -O2 -c /root/pdflib-2.1.5/pdf.c -fPIC -DPIC -o .libs/pdf.o
/root/pdflib-2.1.5/pdf.c:91:27: error: #if with no expression
make: *** [pdf.lo] Fehler 1
ERROR: `make' failed
[root@iis pdflib-2.1.5]#
Also mag er irgendeine If-Expression nicht. In den If-Expressions wird dann eigentlich nur noch der Pfad zum gd-Modul abgefragt, also habe ich einfach die If-expressions weggenommen und den include-Befehl stehen lassen:

Zitat:
# include "ext/gd/php_gd.h"
static int le_gd;
Danach installiert er pdflib problemlos, nur leider, die Funktion pdf_open_memory_image ist nach wie vor nicht verfügbar.
Was läuft denn jetzt noch falsch?

Lg,
Benedikt.
coruscant ist offline   Mit Zitat antworten
Alt 05.02.2009, 17:06  
Neuer Benutzer
 
Registriert seit: 02.02.2009
Beiträge: 6
coruscant befindet sich auf einem aufstrebenden Ast
Standard

So, habe jetzt herausgefunden, dass da ein Fehler in der Beschreibung ist:

Zitat:
/* set this define if you want to include GD support
* this adds the (unofficial) function pdf_open_memory_image() */

#define PDFLIB_WITH_GD_SUPPORT
funktioniert nicht, es muss anscheinend sein:

Zitat:
/* set this define if you want to include GD support
* this adds the (unofficial) function pdf_open_memory_image() */

#define PDFLIB_WITH_GD_SUPPORT 1
damit das funktioniert. Jetzt bekomme ich auch keine Fehlermeldung mehr beim installieren des Paketes. Nur leider, die Funktion pdf_open_memory_image ist nach wie vor unbekannt.
Bitte weiterhin um Hilfe!

Lg,
Benedikt.
coruscant ist offline   Mit Zitat antworten
Alt 25.02.2009, 10:28  
Neuer Benutzer
 
Registriert seit: 02.02.2009
Beiträge: 6
coruscant befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
nach wochenlangem Probieren und leider fehlendem Erfolg habe ich mich entschlossen, unsere Skripte so umzuprogrammieren, dass die Funktion pdf_open_memory_image nicht mehr benötigt wird. Dies ist wohl der beste Workaround, da er somit die Portierung der Skripte erleichtert, da wahrscheinlich nur noch wenige Systeme die pdf_open_memory_image-Funktion einkompiliert haben.

Um ein als GD-Handler im Speicher vorhandenes Bild in PDF einzufügen also folgendes machen:

# Nachstehend ist einer der möglichen Schritte um ein Bild als GD-Handler zu
# bekommen. Da gibt's aber natürlich viele verschiedene Varianten
# (Bild aus Datei öffnen oder auch neu zeichnen, wie's beliebt, in meinem Fall
# hole ich die Bilddaten schon zuvor aus einer Mysql-Datenbank und
# speichere sie in der Variablen $imagedatastring):

$imhandlergd = imagecreatefromstring($imagedatastring);

# Jetzt kommt das Wichtige:

ob_start(); # Output buffering starten
ImagePNG ($imhandlergd); # gdhandler als PNG in Buffer laden
$img_buffer = ob_get_contents(); # Buffer eine Variable zuweisen
ob_end_clean(); # Buffer löschen

# Daten der Buffer-Variable in eine virtuelle Datei speichern:
pdf_create_pvf($p, "/pvf/image/image.png", $img_buffer, "");

# jetzt kann man das Bild wie ein im Filesystem bespeichertes Bild laden:
$imagehandlerpdf = pdf_load_image($p, "png", "/pvf/image/image.png", "");

# Bild im PDF platzieren
pdf_fit_image($p, $imagehandlerpdf, 20, 20, "scale 0.5");

# PDF-Imagehandler schließen
pdf_close_image($p, $imagehandlerpdf);

# Virtuelle Bilddatei löschen
pdf_delete_pvf($p, "/pvf/image/image.png");

# GD-Imagehandler schließen
imagedestroy($imhandlergd);
coruscant ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
[Erledigt] Array innerhalb einer Funktion Marko_Schulze PHP Tipps 2008 8 02.12.2008 18:58
Wert einer Funktion an andere Funktion übergeben Secondary PHP Tipps 2008 14 27.08.2008 10:36
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
gpc_quotes funktion: verbesserungsvorschläge? Promaetheus PHP Tipps 2007 10 12.08.2007 19:29
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Array-Übergabe in Funktion PHP Tipps 2005 1 08.05.2005 21:05
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zend_extension pdflib, php user vorhanden oder nicht, pdf_load_image aus datenbank, pdf_open_memory_image buffer, php pdf_open_memory_image pdflib, pdf_load_image imagepng, pdflib gmbh version 7.0.3 manual, pdf_open_memory_image quellcode, pdf_open_memory_image, php pdf ob_get_contents xmp, pdflib scale image

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum