SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 06.01.2013, 10:52:00
Glare Glare ist offline
Anfänger
 
Registriert seit: Feb 2003
Ort: Emsdetten
Alter: 45
Beiträge: 38
Glare eine Nachricht über ICQ schicken Glare eine Nachricht über MSN schicken
Etiketten mit fpdf

Hallo, ich habe vor ca. 1 Jahr ein kleines Script zum erzeugen von Etiketten mit fpdf geschrieben.
Nun möchte ich es optimieren und hoffe auf eure Hilfe.

Ich übergebe vorher per Formular die Anzahl der Etiketten und nun NEU die Nummer des ersten Etiketts (falls schon welche gedruckt wurden).
Die Anzahl der Etiketten auf einem Blatt ist immer gleich (3*9=27).

PHP-Code:
<?
require('fpdf.php');

$start=5;
$anzahl=62;
$etproseite=27;
$spalten=3;
$letztes=$start+$anzahl;
Erste Etikett soll nun Etikett 5 auf dem ersten Blatt sein. 62 Etiketten werden benötigt.

PHP-Code:
$seitenanzahl floor($letztes/$etproseite);
$etikettenrest $letztes $etproseite;

$endreihe floor($etikettenrest $spalten);     //Endreihe $y
$endspalte $etikettenrest $spalten;        //Endspalte $x
$startreihe floor($start $spalten);
$startspalte $start $spalten;

//Etikettenkoordinaten
$x = array(7.574140.5);
$y = array(15.344.974.5104.1133.7163.3192.9222.5252.1); 
Die jeweilige Startpunkte der Etiketten, Etikett 1 ist z.B. x=7.5 y=15.3 da das Etikettenpapier Ränder hat.

PHP-Code:
//PDF Grundeinstellungen
$pdf=new FPDF('P','mm','A4');
$pdf->SetMargins(0,0,0);
$pdf->SetAutoPageBreak('false',0);
$pdf->AddFont('Cooper');

$counter 0;

//Seiten erzeugen
for ($p 0;$p<=$seitenanzahl;$p++) {
$reihe 0;
$spalte=0;

//komplette Seite oder nur ein Teil?
if ($seitenanzahl $p){
$j 26;
}else{
$j $etikettenrest-1;
}

$pdf->AddPage();

//Etiketten generieren und mit Inhalt füllen
        
for ($i 0;$i<=$j;$i++) {
            
        
$pdf->SetXY($x[$spalte],$y[$reihe]);
        
$pdf->Write(10"Der Inhalt");

//Reihenwechsel
            
if($spalte !='2') {
            
$spalte++;
            }else{
            
$spalte=0;
            
$reihe++;
            }
            
        
$counter++;
        }
        

Ich versuche nun verzweifelt das mit Etikett 5 angefangen wird und nicht mit dem ersten, bekomme es aber einfach nicht hin.
Bin für jeden Tip dankbar!

Sascha
Mit Zitat antworten
  #2  
Alt 08.01.2013, 20:19:06
raiguen raiguen ist offline
Anfänger
 
Registriert seit: Jul 2011
Alter: 68
Beiträge: 30
AW: Etiketten mit fpdf

Probier das mal so aus:
PHP-Code:
<?php
require_once('fpdf.php');

//-- einige Variablen
$etproseite 27;
$etanzahldruck 62;
$etstart 5;

//Etikettenkoordinaten
$x = array(7.574140.5); 
$y = array(15.344.974.5104.1133.7163.3192.9222.5252.1);   


//--Berechnung der Anfangsspalte und -reihe des ersten zu drucken Etikettes
      
$rest $etstart 3;
      
//--korrektur, wenn rest=0 
      
$spalte $rest==$rest+$rest-1;
      
$reihe = ($etstart $rest) / 3;
      
//--korrektur bei rest = 0
      
$reihe -= $rest 1;



//----------------------------------- PDF erstellen


$pdf=new FPDF('P','mm','A4');
$pdf->SetMargins(0,0,0);
$pdf->SetAutoPageBreak('false',0);
$pdf->SetFont('Arial');

$pdf->AddPage();

$counter $etstart;  //--Zaehler fuer zu druckende Etiketten pro seite
for ($et=0$et<$etanzahldruck;$et++)
{
//--drucken an angebener position
        
$pdf->SetXY($x[$spalte],$y[$reihe]);
        
$pdf->Write(10"Der Inhalt ".$et);

//Reihenwechsel
        
$spalte ++;
        if (
$spalte==3)
        {
          
$spalte 0;
          
$reihe ++;
        }

        
$counter++;
//--wenn max. Etikettenanzahl erreicht, dann Seitenwechsel
        
if ($counter == $etproseite)
        {
          
//--seitenwechsel
          
$pdf->AddPage();
          
$reihe 0;
          
$spalte 0;
          
$counter 0;
        }
}

$pdf->Output();
?>
Ansatz: Schleife über die Anzahl der zudruckenden Etiketten; Seiten werden neu generiert, wenn die max. Anzahl der auf eine Seite passenden Etiketten gedruckt wurde.
Vor Beginn des Druckes muss die Spalte und Reihe des ersten zu bedruckenden Etikettes berechnet werden; ebenso der Startwert für den Druckzähler ($counter).

Man kann übrigens auch auf die Koordinatenarrays verzichten:

PHP-Code:
...
//--feste Werte für die Ettiketten
      
$abstandlinks 7.5;
      
$abstandoben 15.3;
      
$breite 66.5;
      
$hoehe 29.6;
...

//--Berechnung der Anfangsspalte und -reihe wie im ersten Beispiel!

//-- In der Schleife dann
      
$x_start $abstandlinks $breite*($spalte);
      
$y_start $abstandoben $hoehe*($reihe);

       
$pdf->SetXY($x_start,$y_start);
... 

Geändert von raiguen (08.01.2013 um 20:29:53 Uhr)
Mit Zitat antworten
  #3  
Alt 09.01.2013, 16:14:24
raiguen raiguen ist offline
Anfänger
 
Registriert seit: Jul 2011
Alter: 68
Beiträge: 30
AW: Etiketten mit fpdf

Moin :)
hab mir nochmal ein paar Gedanken gemacht: statt der anfänglichen umständlichen Berechnung der Startreihe / -spalte des ersten zu druckenden Etikettes kann der Drucklauf über die Gesamtzahl der zu druckenden Etiketten+Anzahl der 'Leer'etiketten erfolgen:

'feste' Werte bzw zum Testen einige Variablenwerte
PHP-Code:
$etproseite 27;
$etanzahldruck 22;
$etstart 7;

//Etikettenkoordinaten
$x = array(7.574140.5);  //--breite bzw abstand=66.5
$y = array(15.344.974.5104.1133.7163.3192.9222.5252.1);   //--höhe bzw abstand= 29.6

//---Seitenrand links und rechts
$abstandlinks 7.5;
$abstandoben 15.3;
//--Breite/Hoehe des Etiketts
$breite 66.5;
$hoehe 29.6
Schleifendruchlauf mit Druckpositionsbestimmung anhand der Koordinaten-Arrays:
PHP-Code:
$spalte $reihe 0;
$counter 1//--ettikettenzähler pro seite
//--durchlauf ist Summe aus zu drucken Etiketten plus 'Leer'-lauf bis zur ersten zu druckenden Etikette auf der Seite
$durchlauf $etanzahldruck+$etstart;

for (
$et=1$et<$durchlauf;$et++)
{

        
///--nur ab Startettikett drucken!
        
if ($et >= $etstart)
        {
            
$pdf->SetXY($x($spalte),$y($reihe));
            
$etnr$et-$etstart;
            
$pdf->Cell(6528"Ettiket-Nr. $etnr \nReihe: $reihe  Spalte: $spalte \n Counter: $counter"10'L' );
        }
        
//Reihenwechsel
        
$spalte ++;
        if (
$spalte==3)
        {
          
$spalte 0;
          
$reihe ++;
        }

        
$counter++;
        if (
$counter $etproseite)
        {
          
//--seitenwechsel
          
$pdf->AddPage();
          
$reihe 0;
          
$spalte 0;
          
$counter 1;
        }
}
//endfor durchlauf 
Durchlauf mit Positionsberechnung 'on the fly'
PHP-Code:
$spalte $reihe 0;
$counter 1//--ettikettenzähler pro seite
//--durchlauf ist Summe aus zu drucken Etiketten plus 'Leer'-lauf bis zur ersten zu druckenden Etikette auf der Seite
$durchlauf $etanzahldruck+$etstart;

for (
$et=1$et<$durchlauf;$et++)
{

        
///--nur ab Startettikett drucken!
        
if ($et >= $etstart)
        {
            
//--Position berechnen
            
$x_start $abstandlinks $breite*($spalte);
            
$y_start $abstandoben $hoehe*($reihe);

            
$pdf->SetXY($x_start,$y_start);
            
$etnr$et-$etstart;
            
$pdf->Cell(6528"Ettiket-Nr. $etnr \nReihe: $reihe  Spalte: $spalte \n Counter: $counter"10'L' );
        }
        
//Reihenwechsel
        
$spalte ++;
        if (
$spalte==3)
        {
          
$spalte 0;
          
$reihe ++;
        }

        
$counter++;
        if (
$counter $etproseite)
        {
          
//--seitenwechsel
          
$pdf->AddPage();
          
$reihe 0;
          
$spalte 0;
          
$counter 1;
        }
}
//endfor durchlauf 
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder Upload in PDF über fpdf integrieren? oncledan PHP Grundlagen 2 20.04.2010 15:53:06
fpdf link reload mit $_SERVER['PHP_SELF'] till_ch PHP Grundlagen 13 10.04.2010 16:04:42
FPDF -Problem mit Seitenumbruch Baalian PHP Grundlagen 9 17.09.2008 10:38:33
PDF mit fpdf Franzx PHP Grundlagen 10 19.09.2006 16:12:59
Frage zu FPDF (FreePDF) elwood67 PHP für Fortgeschrittene und Experten 6 04.04.2004 10:26:50


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:09:50 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.


© 2001-2021 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt