Sziasztok,
Létezik arra megoldás, hogy egy online kitöltött űrlap tartalmát a kitöltő az elküldés megnyomásával egyidőben PDF-ben le is tudja tölteni magának?
A Contact Form 7 -hez lenne a legjobb, mert mindenhol azt használom, de ha ahhoz nem lehet megoldani, akkor az is jó lenne, ha tudnátok javasolni egy ahhoz hasonló, különböző mezőtípusokat is kezelni tudó űrlapkezelő plugint.
Köszönöm a segítséget!
Erre kész megoldás nem létezik a contact form 7-hez.
A gravity formhoz van http://wordpress.org/plugins/gravity-forms-pdf-extended/
esetleg használd ezt.
Korábban egy “űrlap->PDF” PoC keretében vizsgáltuk a lehetőségeket és készült egy plugin (0.1-es verzió!!!) a CF7-hez.
A plugin telepítése (és persze a phpToPDF API kulcs beírása) után, annyit kell beállítani a CF7-ben, hogy a “sikeres válaszüzenet” végéhez hozzá kell adni egy hasonló linket: PDF letöltés
A plugin egy kísérletezés eredményeként született, nagyon alap dolgot tud, nincs kitesztelve minden CF7 címkére (és nincs hozzá support sem:),
de talán a kód hasznos lehet azoknak akik ilyen megoldásban gondolkodnak.
<?php<br />
/*<br />
Plugin Name: PHP To PDF<br />
Plugin URI: http://www.phptopdf.com/<br />
Description: A simple solution for PDF generation from CF7<br />
Author: trisq<br />
Version: 0.1<br />
License: GPL2<br />
*/<br />
<br />
// API provided by phpToPDF.com<br />
function phptopdf_html( $html, $save_directory, $save_filename ) {<br />
$API_KEY = 'XXXXXXXXXXXXXX'; // saját API kulcs<br />
$postdata = http_build_query(<br />
array(<br />
'html' => $html,<br />
'key' => $API_KEY<br />
)<br />
);<br />
$opts = array( 'http' =><br />
array(<br />
'method' => 'POST',<br />
'header' => 'Content-type: application/x-www-form-urlencoded',<br />
'content' => $postdata<br />
)<br />
);<br />
<br />
$context = stream_context_create( $opts );<br />
$resultsXml = file_get_contents( 'http://phptopdf.com/htmltopdf.php', false, $context );<br />
file_put_contents( $save_directory.$save_filename, $resultsXml );<br />
}<br />
<br />
// segédfüggvények<br />
function php2pdf_wpcf7_mandatory_tag( $tag ) {<br />
return '[' . $tag . '* ';<br />
}<br />
function php2pdf_wpcf7_tag( $tag ) {<br />
return '[' . $tag . ' ';<br />
}<br />
<br />
// pdf létrehozás az űrlap adataiból<br />
function php2pdf_wpcf7_create_pdf( $args ) {<br />
// HTML template a PDF-hez<br />
$html = '<br />
<br />
<br />
<br />
<title>PHP To PDF Example</title><br />
<br />
<!--<br />
body {<br />
font-family: Tahoma;<br />
}<br />
--><br />
<br />
<br />
<br />
<h1>' . $args->title . '</h1><br />
<!-- Contact Form 7 -->'<br />
. $args->form .<br />
'<br />
';<br />
<br />
// CF7 által kezelt címkék<br />
$cf7_tags = array( 'text', 'email', 'url', 'tel', 'number', 'range', 'date', 'textarea', 'menu', 'checkbox', 'radio' );<br />
// CF7 címkék átalakítása egyedi címkére a HTML template-ben<br />
$html = str_replace( array_map( 'php2pdf_wpcf7_mandatory_tag', $cf7_tags ), '[php2pdf ', $html );<br />
$html = str_replace( array_map( 'php2pdf_wpcf7_tag', $cf7_tags ), '[php2pdf ', $html );<br />
// CF7 submit címke törlése a HTML template-ből<br />
$html = preg_replace( '([submit(.*)])', null, $html );<br />
<br />
$html = do_shortcode( $html );<br />
<br />
// HTML template feltöltése a küldött adatokkal<br />
foreach ( $args->posted_data as $key => $value ) {<br />
if ( substr( $key, 0, 1 ) != '_' ) {<br />
$html = str_replace( '{' . $key . '}', $value, $html );<br />
}<br />
}<br />
<br />
$upload_dir = wp_upload_dir();<br />
phptopdf_html( $html, $upload_dir['basedir'].'/', $args->posted_data['_wpnonce'].'.pdf' );<br />
}<br />
add_action( 'wpcf7_mail_sent', 'php2pdf_wpcf7_create_pdf' );<br />
<br />
// a template-ben egy placeholder-t hoz létre az első attribútumból, a mezőnévből<br />
function php2pdf_wpcf7_placeholder_shortcode( $atts ) {<br />
if ( ! empty( $atts[0] ) ) {<br />
return '{' . $atts[0] . '}';<br />
}<br />
}<br />
add_shortcode( 'php2pdf', 'php2pdf_wpcf7_placeholder_shortcode' );<br />
<br />
// jQuery kód beillesztés az űrlapra<br />
function php2pdf_wpcf7_append_jquery( $output ) {<br />
return $output . <<<EOT<br />
<br />
jQuery(document).ready(function ($) {<br />
// jQuery extension<br />
var _oldShow = $.fn.show;<br />
$.fn.show = function (speed, oldCallback) {<br />
return $(this).each(function () {<br />
var obj = $(this),<br />
newCallback = function () {<br />
if ($.isFunction(oldCallback)) {<br />
oldCallback.apply(obj);<br />
}<br />
obj.trigger('afterShow');<br />
};<br />
// you can trigger a before show if you want<br />
obj.trigger('beforeShow');<br />
// now use the old function to show the element passing the new callback<br />
_oldShow.apply(obj, [speed, newCallback]);<br />
});<br />
}<br />
// válasz DIV<br />
$('.wpcf7-form .wpcf7-response-output')<br />
.bind('beforeShow', function () {<br />
var a = $(this).children('a');<br />
if (a.length > 0) { // ha a válasz szövegben van 'a' tag, akkor beállítjuk a pontos fájlnevet linknek<br />
a.attr('href', function (i, val) {<br />
return val + a.parents('.wpcf7-form').find("input[name='_wpnonce']").val() + '.pdf';<br />
});<br />
}<br />
})<br />
.show();<br />
});<br />
<br />
EOT;<br />
}<br />
add_filter( 'wpcf7_form_response_output', 'php2pdf_wpcf7_append_jquery' );<br />
<br />
?>