Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

Seite On-the_Fly aus webform-submission erstellen

Eingetragen von Carla (18)
am 24.08.2016 - 06:41 Uhr in
  • Anfängerfragen
  • Drupal 7.x oder neuer

Hallo,
ich versuche die Eingaben eines Webforms on-the-fly in einem PDF wiederzugeben. Das Ergebnis soll Spielkarten darstellen, deren Inhalt auf den Eingaben des Users beruht. Damit die Darstellung von Bildern und Text stimmt, benötige ich ein PDF.

Versuche bisher:

PDF auf der Confirmationpage erstellen. Das geht aber nicht, da die Daten vor dem Aufruf von FPDF übertragen werden.

Auf der Confirmationpage einen Link auf die PHP-Datei legen, die das PDF erstellen soll. Wenn diese Datei im gleichen Verzeichnis wie die Confirmationpage liegt, wird die URL einfach an die URL der Confirmationpage gehängt. Liegt sie in einem anderen Verzeichnis wird sie nicht gefunden, obwohl die URL richtig ist.

Webform auf eine Seite weiterleiten, auf die man ein PDF hochladen kann. Hier benennt Drupal die PHP-Datei in *.php.txt um.

Leider habe ich sonst nichts gefunden.

Hat jemand eine Idee, wie man solche Spielkarten realisieren könnte?

Vielen Dank für Eure Mühen

Hallo, schade, dass niemand eine Idee hat. Ich war im Urlaub und hatte gehofft, inzwischen findet jemand Zeit zu antworten.
Jetzt habe ich mal den alten Code aus einer nicht-Drupal-Site aber PHP-PDF gesucht. Vielleicht ist dann besser verständlich was ich realisieren will:
----------------------------------------------------------------------------

Erste Eingabeseite:

Boot

Name des Kindes:



Kurzhaar
langes Haar

Speichern der Angaben auf der nächsten Seite in einem Cookie und Kontrolle der Eingaben:
(Boot_Name_Speichern.php)

Boot

<?php
echo'Das Boot ist für ';
print(
htmlspecialchars ($_POST["Name_Boot"]));
echo
' mit ';
if (
$_POST["Haar"] == 'kurz'){
    echo
' kurzen Haaren.';
}
else{
     echo
' langen Haaren.';
}


setcookie("Name_Boot",($_POST["Name_Boot"]),time()+(3600*24));
setcookie("Haar",($_POST["Haar"]),time()+(3600*24));

echo
'<form id="form1" name="form1" method="post" action="Boot_Abholen2.php">';
echo
'<p>  <input type="submit" name="Submit" id="Submit" value="Hier geht\'s zum Bootssteg" />  </p></form>';
?>

Ausdrucken des Bootes mit Namen aus der Eingabeseite (Boot_Abholen2.php):

<?php

require('phpclasses/fpdf.php');


 
  
class
PDF extends FPDF {

 
// Kopfzeile
 
function Header()
{
  
// Logo
  
$this->Image('Images/Allgemeinklein.png',10,8,33);
  
// Arial fett 15
  
$this->SetFont('Arial','B',15);
   
// nach rechts gehen
  
$this->Cell(80);
   
// Titel
      
$this->Cell(30,10,'Bootssteg',0,0,'C');
  
// Zeilenumbruch
    
$this->Ln(20);
  }

 
// Fusszeile
 
function Footer()
{
   
// Position 1,5 cm von unten
   
$this->SetY(-15);
    
// Arial kursiv 8
   
$this->SetFont('Arial','I',8);
    
// Seitenzahl
   
$this->Cell(0,10,'Seite '.$this->PageNo().'/{nb}',0,0,'C');
}


}
class
PDF_Rotate extends PDF{

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();
}
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_Rotate();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',20);

// Linienbreite einstellen, 0.2mm
$pdf->SetLineWidth(0.2);

// Rahmenfarbe auf Schwarz einstellen
$pdf->SetDrawColor(0, 0, 0);



if (
$_COOKIE["Haar"]=="kurzhaar"){
   
$pdf->Image("Images_Boot/Kurzhaar.jpg",70,40);
}
else{
   
$pdf->Image("Images_Boot/Langhaar.jpg",70,40);
}


$pdf->RotatedText(113,180,$_COOKIE["Name_Boot"],90);

$pdf->Output( 'Boot abholen.pdf', 'I');
?>

--------------------------------------------------------------------------------
So ähnlich soll das Ganze dann in Drupal funktionieren. Wichtig ist, das die Besucher am Ende ein PDF mit Bild und Text haben.

Diese Problemstellung taucht bei der zu realisierenden Seite immer wieder auf. Ich wäre wirklich dankbar für Hilfe.

Carla

‹ Umzug: WordPress zu Drupal Seite On-the_Fly aus webform-submission erstellen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Warum nicht einfach mit views

Eingetragen von dinmikkith (1573)
am 26.09.2016 - 19:27 Uhr

Warum nicht einfach mit views und views pdf versuchen und das Webform als View ausgeben?

  • Anmelden oder Registrieren um Kommentare zu schreiben

PDF aus Webform erzeugen und ausgeben

Eingetragen von Carla (18)
am 01.10.2016 - 10:56 Uhr

Hallo, vielen Dank für deine Antwort.
Aber ich finde bei views pdf keine Möglichkeit, php code wie if...; else... und Funktionen wie rotate_image und rotate_text zu integrieren. Ausserdem scheint nicht klar zu sein ob es überhaupt in drupal 8 kommt. Vielleicht weiss noch jemand eine andere Lösung zur Erstellung von personalisierten Spielkarten (die Rotierungsfunktion ist wichtig).
Trotzdem nochmal vielen Dank für Deine Idee.
Carla

  • Anmelden oder Registrieren um Kommentare zu schreiben

Warum webforms?

Eingetragen von ronald (3857)
am 01.10.2016 - 11:38 Uhr

werden die Daten später nicht mehr gebraucht?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Seite On-the_Fly aus webform-submission erstellen

Eingetragen von Carla (18)
am 01.10.2016 - 13:02 Uhr

Hallo,
nein, die Daten werden nicht mehr gebraucht und sollten darum die Datenbank auch nicht füllen. Bis jetzt habe ich das mit Cookies realisiert, aber wir möchten eigentlich die gesamte Seite mit allen Angeboten auf Drupal umstellen.

Vielen Dank für Eure Überlegungen
Carla

  • Anmelden oder Registrieren um Kommentare zu schreiben

Unter diesen besonderen Umständen

Eingetragen von ronald (3857)
am 01.10.2016 - 15:07 Uhr

würde ich zu einem eigenen Modul tendieren.

Die FormsAPI ist für dein Vorhaben bestens geeignet, und deine Anwendungslogik ist so speziell, dass hier nur eine eigene Anwendung dies zu 100% sinnvoll abdecken kann.

Wenn du die bisherige Lösung realisiert hast, ist der Umbau zu einem eigenen Modul nicht so furchtbar schwierig,
Arbeit steckt natürlich dennoch drin.

Aber ein Verwaltungssystem wie Drupal so sehr zu verbiegen, dass es eine Nichtverwaltungsanwendung wird, halte ich persönlich nicht für erstrebenswert.

Eine von Drupal "gehostete" Anwendung erscheint mir da logischer.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Woche 3 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 3 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 1 Tag
  • Hey danke
    vor 9 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 9 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 1 Stunde
  • Da scheint die Terminologie
    vor 10 Wochen 4 Stunden
  • Kannst doch auch alles direkt
    vor 10 Wochen 4 Tagen
  • In der entsprechenden View
    vor 10 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 10 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250236
Registrierte User: 20463

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

» 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 22 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