Mehrere Add ons gleichzeitig ausführen

Alles zum Thema Add-Ons und sonstige Erweiterungen / Verbesserungen für FPDF
sg_joergi
Benutzer
Beiträge: 24
Registriert: Mo 24. Sep 2007, 12:35

Mehrere Add ons gleichzeitig ausführen

Beitragvon sg_joergi » So 6. Nov 2011, 03:22

Halli Hallo,

Ich habe da ein Problem, für das ich leider keine Lösung finde.

Im untenstehenden Script, wird auch "FPDI" und "ROTATE" benötigt. Das ganze funktioniert auch einwandfrei. Wenn ich jedoch versuche, hier noch "VISIBILITY" mit aufzunehmen, wird "ROTATE" und "FPDI" nicht mehr erkannt. Weiß jemand, wie ich "VISIBILITY" mit einfügen kann?

Vielen Dank im voraus für Eure Hilfe :-)


[PHP]
define('FPDF_FONTPATH','../fonts/');
require('fpdf.php');
require('fpdi.php');
require('visibility.php');
class PDF_Rotate extends FPDI // erweitert FPDI
{
var $angle=0;

function Rotate($angle,$x=-1,$y=-1)
{
if($x==-1)
$x=$this->x;
if($y==-1)
$y=$this->y;
if($this->angle!=0)
$this->_out('Q');
$this->angle=$angle;
if($angle!=0)
{
$angle*=M_PI/180;
$c=cos($angle);
$s=sin($angle);
$cx=$x*$this->k;
$cy=($this->h-$y)*$this->k;
$this->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
}
}

function _endpage()
{
if($this->angle!=0)
{
$this->angle=0;
$this->_out('Q');
}
parent::_endpage();
}
}

class PDF extends PDF_Rotate
{
function RotatedText($x,$y,$txt,$angle)
{
//Text rotated around its origin
$this->Rotate($angle,$x,$y);
$this->Text($x,$y,$txt);
$this->Rotate(0);
}

function RotatedImage($file,$x,$y,$w,$h,$angle)
{
//Image rotated around its upper-left corner
$this->Rotate($angle,$x,$y);
$this->Image($file,$x,$y,$w,$h);
$this->Rotate(0);
}
}
//$pdf=new PDF_Visibility('P','mm','A4');
$pdf=new PDF('P','mm','A4');
$pdf->AddPage();
/*
$pdf->SetVisibility('screen');
$pdf->SetFont('Times','',20);
$pdf->Write(6, "This line is for display.\n");
$pdf->SetVisibility('print');
$pdf->SetFont('Times','',20);
$pdf->Write(6, "This line is for printout.\n");
$pdf->SetVisibility('all');
*/
$pdf->SetFont('Times','',20);
$pdf->write(5,"Das ist ein normaler Text");
$pdf->AddPage('L');
$pdf->setSourceFile("test.pdf");
$tplIdx = $pdf->importPage(1);
$pdf->useTemplate($tplIdx);
$text= "Das ist ein Test";
$pdf->RotatedText(291,50.6,$text,270);
$pdf->Output($nr.'.pdf', 'I');
[/PHP]

Benutzeravatar
Wirus!
Beiträge: 1492
Registriert: Do 22. Jun 2006, 18:23

Beitragvon Wirus! » So 6. Nov 2011, 11:05

Du musst die Toolchain korrekt aufbauen, näheres hier

sg_joergi
Benutzer
Beiträge: 24
Registriert: Mo 24. Sep 2007, 12:35

Mehrere Add ons gleichzeitig ausführen

Beitragvon sg_joergi » So 6. Nov 2011, 12:53

Hmm, also wenn ich das richtig verstanden habe, müßte ich im Script eine Routine, beginnend mit
[PHP]
class PDF extends PDF_Visibility
{
.........
}
[/PHP]

einfügen. Aber was steht dann in dieser Routine. Ein Teil der "Visibility" Routine? Und wenn das ganze dann mal funktioniert. Benötige ich dann den Befehl

[PHP]
$pdf=new PDF_Visibility('P','mm','A4');
[/PHP]

oder aber
[PHP]
$pdf=new PDF('P','mm','A4');
[/PHP]

Sorry, aber ich bin leider noch nicht so weit fortgeschritten. Hoffe, Ihr könnt mir, vielleicht mit dem richtigen Quellcode, helfen :-)

Benutzeravatar
Wirus!
Beiträge: 1492
Registriert: Do 22. Jun 2006, 18:23

Beitragvon Wirus! » So 6. Nov 2011, 14:03

Du hattest es doch schon fast ....

[PHP]class PDF_Rotate extends FPDI // erweitert FPDI {...}
class PDF extends PDF_Rotate {}
....
$pdf=new PDF('P','mm','A4');[/PHP]

Jetzt noch PDF_Visibility und gut is

[PHP]class PDF_Rotate extends FPDI // erweitert FPDI {...}
class PDF_Visibility extends PDF_Rotate {}
class PDF extends PDF_Visibility {}

....
$pdf=new PDF('P','mm','A4');[/PHP]

sg_joergi
Benutzer
Beiträge: 24
Registriert: Mo 24. Sep 2007, 12:35

Mehrere Add ons gleichzeitig ausführen

Beitragvon sg_joergi » So 6. Nov 2011, 15:09

SUUUPPER,

klappt jetzt einwandfrei. Vielen Dank :-)

Hubert
Benutzer
Beiträge: 10
Registriert: Di 3. Sep 2013, 11:22

Mehrere Add ons gleichzeitig ausführen

Beitragvon Hubert » Di 3. Sep 2013, 12:03

Hallo, ich beiße mir grad' die Zähne bei folgendem Versuch aus: ich möchte die beiden Addons PDF_Autoprint und PDF_Visibility gleichzeitig nutzen, komme mit dem hier genannten Vorschlag aber aus mir nicht bekannten Gründen weiter. Vielleicht habe ich es nicht richtig verstanden...

Vorab noch:
Einzeln benutzt funktionieren die Addons, das habe ich getestet.


Im Quellcode (test.php) steht:
[PHP]
error_reporting(E_ALL);
require_once('visibility.php');
$pdf=new PDF_Visibility();
$pdf->AddPage();
$pdf->SetFont('Arial','',14);
$pdf->SetVisibility('screen');
$pdf->Write(6,"This line is for display.\n");
$pdf->SetVisibility('print');
$pdf->Write(6,"This line is for printout.\n");
$pdf->SetVisibility('all');
$pdf->Output();
[/PHP]

Nun habe ich versucht, PDF_Visibility von PDF_Autoprint abzuleiten und den Beginn der visibility.php so umgeschrieben:
[PHP]
require('fpdf_autoprint.php');
class PDF_Visibility extends PDF_AutoPrint
...
[/PHP]


In der Datei fpdf_autoprint.php habe ich nichts geändert, hier wird PDF_AutoPrint von PDF_JavaScript abgeleitet:
[PHP]
require('fpdf_js.php');
class PDF_AutoPrint extends PDF_JavaScript
...
[/PHP]

(Zuletzt wird noch PDF_JavaScript von FPDF abgeleitet. Auch hier wird die originale Datei ohne irgendeine Änderung verwendet.)

Beim Aufruf meiner test.php erhalten ich nun folgende Meldung, die auf die Ausgabe einer Fehlermeldung schließen läßt, bevor FPDF seinen Header senden kann:
FPDF error: Some data has already been output, can't send PDF file (output started at /www/htdocs/w00a8bfb/extern/email/pdf/fpdf_js.php:1)

Ich habe es auch bereits anders herum versucht und fpdf_js von visibility abzuleiten versucht. Auch hier der gleiche Fehler.

Ich würde mich sehr freuen, wenn mir jemand hier weiterhelfen könnte.
Herzlichen Dank vorab!

Benutzeravatar
Wirus!
Beiträge: 1492
Registriert: Do 22. Jun 2006, 18:23

Beitragvon Wirus! » Di 3. Sep 2013, 14:33

Ich würde mal vermuten, der Fehler ist Dein FTP-Programm.

FPDF error: Some data has already been output, can't send PDF file (output started at /www/htdocs/w00a8bfb/extern/email/pdf/fpdf_js.php:1)


Das sagt uns, daß der Fehler in der 1.Zeile von fpdf_js.php verursacht wird.

Da in der 1.Zeile nur '<?php....' stehen sollte, liegt die Ursache wahrscheinlich in einer vom Upload-Programm eingefügten Leerzeile - das machen einige Windows-Programme beim hochladen auf *ix-Server wenn man nicht aufpasst (CR/CR-LF-Problematik)

Hubert
Benutzer
Beiträge: 10
Registriert: Di 3. Sep 2013, 11:22

Beitragvon Hubert » Di 3. Sep 2013, 15:52

Wirus! hat geschrieben:Das sagt uns, daß der Fehler in der 1.Zeile von fpdf_js.php verursacht wird.


Herzlichen Dank für die Antwort!
Manchmal ist man doch blind wie Oscar: Da war doch glatt ein Leerzeichen vor <?php ... und dann nochmals eines nach ?> ... und ich habe das einfach nicht gesehen. :shock: Dabei ist mir diese Header-Problematik durchaus bekannt.

Aber bisher ging es auch so, diese Datei einzubinden und es kam seltsamerweise kein Fehler. Darum wäre ich bis zu deiner Antwort auch gar nicht auf die Idee gekommen, den Fehler dort zu suchen. Ich dachte es läge an mir und ich hätte irgend einen anderen dummen Fehler gemacht und habe 2 Stunden an anderer Stelle rumgesucht.

Also nochmals tausend Dank !!!


Zurück zu „Add-Ons“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste