Ich versuche, ein bisschen eine einzigartige Tabelle in TCPDF zu erstellen, wie unten dargestellt:TCPDF move-able „Box“ mit Text erstellen, ohne ln Einstellungen
gibt es die Beschriftungen, Kopf- und Zeilen-Setup ist einfach . Der schwierige Teil ist die "Bar".
Die Bar muss ein paar Dinge:
- Editierbare X-Position
- Text
Ursprünglich ich versuchte, Multicell zu verwenden; Allerdings habe ich einige seltsame Verhalten wie unten dargestellt:
Ich glaube, dies wegen der ln
Einstellungen ist. Wenn wir uns meinen Code ansehen, kann ich sehen, dass ich versuche, eine Zelle und dann eine MultiCell darin zu erstellen. Beide verwenden die Einstellung ln
, um die nächste Zelle darunter zu setzen. Ich habe versucht, die Inte von MultiCell auf 0 (auf der rechten Seite) zu setzen, aber es hatte keine sichtbare Änderung.
//multi cell
// extend TCPF with custom functions
class MYPDF extends TCPDF {
// SCC table
public function SCCTable($headers,$rows) {
// Colors, line width and bold font
$this->SetFillColor(0,128,128);
$this->SetTextColor(0);
$this->SetDrawColor(0);
$this->SetLineWidth(0.3);
$this->SetFont('', 'B');
// Header
$num_headers = count($headers);
for($i = 0; $i < $num_headers; ++$i) {
$this->Cell(
$headers[$i]->width,
$headers[$i]->height,
$headers[$i]->text,
1,
0,
'C',
1
);
}
$this->Ln();
// Color and font restoration
$this->SetFillColor(255);
$this->SetTextColor(0);
$this->SetFont('');
// Data
$fill = 0;
$num_rows = count($rows);
for($i = 0; $i < $num_rows; ++$i){
$this->Cell(//Row
$headers[$i]->width * $num_headers, //Row width should be the sum of all header width.
$rows[$i]->height,
//Row's Text
$this->MultiCell(
$rows[$i]->width,
$rows[$i]->height,
$rows[$i]->text,
0, //Border
"C", //Text Align
false, //fill, determines if the background is painted or transparent (false).
2, //ln, 1 = Next cell starts at beginning of new line.
$rows[$i]->x,
$rows[$i]->y
),
1, //Border
2, //ln, 1 = Next cell starts at beginning of new line.
"L" //text align
);
}
}
}
Danach erfuhr ich über TextField
. Als ich das versucht habe ich nur als seltsames Verhalten ...
//text field
// extend TCPF with custom functions
class MYPDF extends TCPDF {
// SCC table
public function SCCTable($headers,$rows) {
// Colors, line width and bold font
$this->SetFillColor(0,128,128);
$this->SetTextColor(0);
$this->SetDrawColor(0);
$this->SetLineWidth(0.3);
$this->SetFont('', 'B');
// Header
$num_headers = count($headers);
for($i = 0; $i < $num_headers; ++$i) {
$this->Cell(
$headers[$i]->width,
$headers[$i]->height,
$headers[$i]->text,
1,
0,
'C',
1
);
}
$this->Ln();
// Color and font restoration
$this->SetFillColor(255);
$this->SetTextColor(0);
$this->SetFont('');
// Data
$fill = 0;
$num_rows = count($rows);
for($i = 0; $i < $num_rows; ++$i){
$this->Cell(//Row
$headers[$i]->width * $num_headers, //Row width should be the sum of all header width.
$rows[$i]->height,
//Row's Text
$this->TextField(
$rows[$i]->text,
$rows[$i]->width,
$rows[$i]->height,
[],
[],
$rows[$i]->x,
$rows[$i]->y
),
1, //Border
2, //ln, 1 = Next cell starts at beginning of new line.
"L" //text align
);
}
}
}
Schließlich dachte ich die Rect
Funktion des Verwendens ein Rechteck und Text
auf den ziehen den Text zu erstellen. Mit Variablen könnte ich den Text an das Rechteck "kleben"; Das Textfeld verwendet jedoch auch die ln-Einstellung. Des Weiteren gibt an den eigentlichen Code suchen, ist diese Zeile:
$this->Cell(0, 0, $txt, $border, $ln, $align, $fill, $link, $stretch, $ignore_min_height, $calign, $valign);
sehen, da es eine Zelle schafft, dann sollte es in das gleiche Problem wie Multicell laufen, da der einzige Unterschied zwischen Handy und Multicell in meinem Fall ist die Fähigkeit, die X-Position vom linken Rand zu ändern.
Also bin ich mit dieser Frage fest: Wie kann ich eine "Box" zeichnen, die Text hat und horizontal verschoben werden kann? Wie das gemacht wird, ist nicht so wichtig, außer dass Bilder keine Option sind.