![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 164 Pomógł: 4 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
tworząc plik PDF napotkałem na pewien problem. Otóż do tworzonego dokumentu chcę dodać obrazek, nieistotny jest jego typ, a głównie to, że jest on tworzony w locie, co widoczne jest w funkcji createPNG, jej kod zawarłem poniżej. Tablica $images zawiera fizyczne ścieżki do plików png, z których tworzony jest jeden wyjściowy. I tutaj wszystko działa poprawnie do momentu, kiedy funkcja ta jest parametrem metody klasy fpdf->Image(). Otrzymuję komunikat błędu: FPDF error: Image file has no extension and no type was specified. Sam w sobie błąd oczywiście rozumiem, jednak, niebardzo wiem, w jaki sposób mogę go rozwiązać, obejść, czy istnieje osoba, która jest w stanie mi pomóc? Dodanie obrazka do pliku pdf. Kod $pdf->Image($this->createPNG($tableImages2PDF),160,65,20); Kod tworzący obrazek. Kod $obrazek = @imagecreatefrompng('./files/framework/createPngBg.png');color(2000, 2000);
for($i=0;$i<sizeof($images);++$i){ list($width, $height, $type, $attr) = @getimagesize($images[$i]); $images[$i] = @imagecreatefrompng($images[$i]); $sizes[$i][0]=$width; $sizes[$i][1]=$height; } $imgWidth=ustawienia::$modelWidth; $imgHeight=ustawienia::$modelHeight; if(sizeof($sizes)>0){ $imgWidth=$sizes[0][0]; $imgHeight=$sizes[0][1]; } for($i=0;$i<sizeof($images);++$i) { imagecolortransparent($images[$i],imagecolorexact($images[$i],0,0,0)); imagealphablending($images[$i], false); imagesavealpha($images[$i], true); } for($i=0;$i<sizeof($images);++$i) { ImageCopyResampled($obrazek ,$images[$i], 0, 0, 0, 0, $imgWidth, $imgHeight, $imgWidth, $imgHeight); } @imagealphablending($obrazek, false); @imagesavealpha($obrazek, true); @imagepng($obrazek, NULL); for($i=0;$i<sizeof($images);++$i) @imagedestroy($images[$i]); @imagedestroy($obrazek); |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A więc pewnie Twoim rozwiązaniem będzie w owym skrypcie ustawienie odpowiednich nagłówków -> header. W ten sposób poinformujesz fpdf z czym ma do czynienia. Zastanawiam się jedynie czy fpdf będzie nadal "żądał" rozszerzenia. Bo typ mu nagłówkami zapewnisz do rozpoznania.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 164 Pomógł: 4 Dołączył: 29.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
W momencie tworzenia w locie obrazka, ustawiając mu header image/png powodowałem, że na ekranie pojawiał się po prostu obrazek, plik pdf nie został już utworzony, natomiast bez header-a mam problem, ponieważ metoda Image klasy FPDF oczekuje pliku z odpowiednim rozszerzeniem i o odpowiednim typie. Pozostaje opcja przejściowa, tworzyć plik fizycznie na serwerze, dodawać go do pdf-a a następnie go usuwać. Wolałbym jednak tego typu "przekrętów" unikać.
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Bez edycji źródeł FPDF raczej tego nie zrobisz.
FPDF wymusza to z pewnego powodu - jeśli użyjesz w kilku miejscach tego samego obrazu, zasób jest wstawiany jednokrotnie, a dodawane są tylko odpowiednie kotwice. W każdym razie - chyba nie ma możliwości, aby wstawić bezpośrednio z zasobu. Albo przeciąż klasę do obrazu, albo lepiej zapisać do pliku. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 22:29 |