Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

fpdf einbinden

Eingetragen von Ati (210)
am 16.11.2012 - 11:10 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x

Hallo zusammen,

ich bastel gerade an einem Modul, wo ich Daten per pdf-Datei ausgeben möchte. Wie binde ich die fpdf.php ein um die entsprechende Klasse nutzen zu können.
In einer "händischen" Lösung geht das ja relativ einfach....

require('fpdf/fpdf.php');
$pdf=new FPDF();
$pdf->AddPage();

Aber ich bekomme es unter Drupal nicht hin.

Ati

‹ Mit form_alter eine autocomplete Funktionalität hinzufügen Über den Pfad einen Parameter mitgeben? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

FPDF

Eingetragen von th3o2211 (87)
am 16.11.2012 - 12:15 Uhr

Kommt eine Fehlermeldung oder passeirt garnichts? Schau mal in den aktuellen Protokollnachrichten nach. Ansonsten kommt es drauf an was du als PDF erstellen willst. Liest du eine Datei ein oder liest du daten aus der DB aus, die zb in einer node stehen?

//EDIT:
FPDF muss laut deinem require im hauptordner von drupal liegen ist das so?

Du kannst auch diese Modul benutzen :

Print, email, PDF

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für Deine Antwort....

Eingetragen von Ati (210)
am 16.11.2012 - 12:22 Uhr

Danke für Deine Antwort.... wie so oft bei mir ist es etwas komplizierter. Ohne das ganze drumherum zu erzählen.... ich will eigentlich nur den Inhalt einer
DB-Tabelle als PDF erstellen (Das ganze wird anschliessend per view zum Download angeboten). Nun bezüglich des Pfades habe ich schon etliche Varianten probiert...wobei mein Beispiel-Code aus einem funktionierendem Projekt ist und nicht aus dem Drupalmodul. Das Modul "print" hatte ich mir auch schon angeguckt um vllt aus dem Quellcode schlau zu werden, aber aktuelle verstehe ich nichts davon.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok

Eingetragen von th3o2211 (87)
am 16.11.2012 - 13:08 Uhr

Das print modul bentuzt auch noch Fremdprogramme um eine PDF zu erstellen.

Da ich jetzt aber nicht weiß wie dein Modul genau funktioniert könnte ich dir leere Ratschläge geben wie z.b. bau die PDF lokal mit FPDF vor (Was ich dir wirklich empfehlen kann) und später fügst du sie als neue function in deinem Modul ein. Danach füllst du die Lücken mit den erforderlichen Daten aus der DB.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay dann eben doch bissl

Eingetragen von Ati (210)
am 16.11.2012 - 13:41 Uhr

Okay dann eben doch bissl mehr drumherum.... ich bastel an einem Stichprobenmodul. Es sollen für ein Aussenlager x-Anzahl an Artikel generiert werden, wo der IST mit dem EDV-Bestand verglichen werden soll. Die Artikel die generiert wurden sollen in einer Tabelle gespeichert werden, damit eine erneute Generierung nicht mehr erfolgen kann. Also wird im ersten Schritt eine temporäre Tabelle gefüllt... dann soll dieser Inhalt als pdf-Datei (Excel würde auch gehen) gespeichert werden (eigener Inhaltstyp) und danach sollen die Artikel in eine Tabelle gespeichert werden, wo eben alle geprüfte Artikel festgehalten werden...klingt etwas umständlich aber aktuell fällt mir kein besserer Weg ein. Hier mal mein Code wie er aktuell aussieht (natürlich noch nicht alle Funktionen enthalten).

<?php


function stichproben_menu() {
  $items = array();
  $items['stichproben/form'] = array(
    'title' => t('Stichproben'),
    'page callback' => 'stichproben_form',
    'access arguments' => array('access content'),   
    'type' => MENU_CALLBACK,
);
  return $items;
}

function stichproben_form(){
return drupal_get_form('stichproben_my_form');
}


function stichproben_my_form($form, &$form_state){

$result = db_query('Select lager,bezeichnung from filialen');
  $filialen = array();
  foreach ($result as $row) {
    $filialen[$row->lager] = $row->bezeichnung;
  }

  $form['lager']= array(
  '#type' => 'select',
  '#title' => t('Filiale'),
  '#options' => $filialen,
  '#description' => t('Bitte das Lager angeben angeben!!'),
  
);
   $form['anzahl'] = array(
    '#type' => 'textfield',
    '#title' => t('Anzahl'),
    '#description' => t('Wieviele Artikel sollen generiert werden!'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Speichern',
  );
 
  return $form;

}


function stichproben_my_form_submit($form, &$form_state) {
 
  $lg = $form_state['values']['lager'];
  $anzahl = $form_state['values']['anzahl'];
 
  $sqlartlgtmp="INSERT INTO artlgtmp
        SELECT DISTINCT Atbestminmaxschwarz.Art, Atbestminmaxschwarz.MC1 , Atbestminmaxschwarz.lager AS lg, Atbestminmaxschwarz.hf AS Lagerf, artikel_geprueft.Art
        FROM Atbestminmaxschwarz
        LEFT JOIN artikel_geprueft ON Atbestminmaxschwarz.Art = artikel_geprueft.Art
        WHERE (
        ((Atbestminmaxschwarz.lager) = '".$lg."')
        AND
        ((artikel_geprueft.Art) IS NULL )
        AND
        ((Atbestminmaxschwarz.hf) <> '')
        )  ORDER BY RAND() LIMIT ".$anzahl;
  $artlgtmp = db_query($sqlartlgtmp);
 
  $sql="Select art,mc1,lg,fach from artlgtmp";
  require('drupal7/sites/all/libraries/fpdf/fpdf.php');
  $pdf=new FPDF();
  $pdf->AddPage();
  $filename = 'stichproben_'.$lg;
  $pdf->SetFillColor(255);
  $pdf->SetFont('Arial','B',16);
  $pdf->Cell(45,6,'Artikel',1,0,'L',1);
  $pdf->Cell(60,6,'MC1',1,0,'L',1);
  $pdf->Cell(20,6,'LG',1,0,'L',1);
  $pdf->Cell(35,6,'Fach',1,0,'L',1);
  $pdf->Cell(30,6,'Bestand',1,0,'L',1);
  $pdf->Ln();
  $result = db_query($sql);
 
 
  while ($row = $result->fetchAssoc()) {
         fputcsv($fp, $row,';')."\n";
$pdf->SetFillColor(255);
        $pdf->SetFont('Arial','B',16);
        $pdf->Cell(45,6,$row['art'],1,0,'L',1);
        $pdf->Cell(60,6,$row['mc'],1,0,'L',1);
        $pdf->Cell(20,6,$row['lg'],1,0,'L',1);
        $pdf->Cell(35,6,$row['lgfach'],1,0,'L',1);
        $pdf->Cell(30,6,$row['tmp'],1,0,'L',1);
        $pdf->Ln();
}
  $pdf->Output($filename,"F");
  $pdf->Output($datname,"D");
 
$node = new stdClass();
$node->type = 'stichproben';
node_object_prepare($node);
$node->title = $filename;
$node->language = LANGUAGE_NONE;
$filepath = drupal_realpath($filecsv);
// Create managed File object and associate with Image field.
  $file = (object) array(
    'uid' => 1,
'display' => 1,
'filename' => $filename,
    'uri' => $filepath,
    'filemime' => file_get_mimetype($filepath),
    'status' => 1,
  );

$file = file_move($file, 'public://');

$node->field_csvfile[LANGUAGE_NONE][0] = (array)$file;

$path = 'content/' . $filename;
$node->path = array('alias' => $path);
node_save($node);
drupal_set_message('Datei wurde erstellt');
drupal_goto('stichproben');

}


function stichproben_views_api() {
  return array('api' => 3.0,
               'path' => drupal_get_path('module', 'buschcsv'),
                
  );
}

function stichproben_views_plugins_alter(&$plugins) {
    $plugins['display']['embed'] = array_merge($plugins['display']['embed'], array(
      'handler' => 'embed_views_plugin_display_embed',
      'theme' => 'views_view',
    ));
  }

Egal welchen Pfad ich zur fpdf.php benutze nichts funktioniert...entweder kann die Seite nciht geladen werden oder aber es kommt

Zitat:

Fatal error: require() [function.require]: Failed opening required 'drupal7/sites/all/libraries/fpdf/fpdf.php' (include_path='.;C:\xampplite\php\PEAR') in C:\xampplite\htdocs\drupal7\sites\all\modules\stichproben\stichproben.module on line 70

Ich hoffe man wird schlau aus diesem Quellcode!!!

Ati

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probier mal

Eingetragen von th3o2211 (87)
am 16.11.2012 - 14:15 Uhr

Falls du es noch nicht probiert hast leg den ordner von FPDF in dein drupal hauptordner ordner und geb das als require/include an:

<?php

include("fpdf/fpdf.php");

?>

Und ich glaube arial als schrifart erkennt er nicht. du musst dir mal die fond dateien anschauen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Werde ich mal

Eingetragen von Ati (210)
am 16.11.2012 - 23:31 Uhr

Werde ich mal testen...wahrscheinlich aber erst Montag!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

So habe es gerade mal

Eingetragen von Ati (210)
am 19.11.2012 - 08:47 Uhr

So habe es gerade mal getestet....hat auch nicht funktioniert. Nachdem ich das Lager mit der Anzhal von Artikeln abgesendet habe kommt "Seite kann nciht angezeigt werden". Setze ich die include-Anweisung in function stichproben_init (war mal ein spontaner Test) kommt

Zitat:

Fatal error: Class 'FPDF' not found in C:\xampplite\htdocs\drupal7\sites\all\modules\stichproben\stichproben.module on line 74

  • Anmelden oder Registrieren um Kommentare zu schreiben

Habe auch fpdf...

Eingetragen von leda.ch (977)
am 19.11.2012 - 14:24 Uhr

Mein fpdf-Ordner liegt innerhalb meines Modul-Ordners und wird
in meinem .module so eingebunden:

include_once 'fpdf/fpdf.php';

Und zwar ganz zu Beginn des Moduls, nicht innerhalb einer Function.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, sorry war beruflich

Eingetragen von Ati (210)
am 22.11.2012 - 14:11 Uhr

Hallo,

sorry war beruflich unterwegs. Wie so oft saß das Problem vor dem Bildschrim. Das einbinden hatte schon die ganze Zeit
funktioniert...nur der anschliessende Code was mit der Datei passieren soll war fehlerhaft. *rotwerd*

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Tagen 14 Stunden
  • Hey danke
    vor 3 Tagen 8 Stunden
  • Update: jetzt gibt's ein
    vor 4 Tagen 3 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 1 Tag
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 5 Tagen
  • In der entsprechenden View
    vor 1 Woche 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 5 Tagen
  • gelöst
    vor 4 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 11 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association