Bonjour
Avant tout chose, je suis pas très bon en php, mais je me débrouille (en tout cas j'ai la logique, mais pas la pratique).
Je cherche une réponse à mon problème depuis maintenant quelques heures.
Mon site est sur WordPress, sur un serveur mutualisé (donc total accès).
J'utilise html2pdf pour créer un pdf par rapport à une page de mon site.
Voici le code (intégré à functions.php), qui permet de transformer le contenu de ma page en pdf
Actuellement, il me prend tout le contenu de la page (post) puis me le met sur le PDF, hors j'aimerais seulement quelque partie de la page.
C'est le code ci-dessous qui permet de récupérer le contenu de la page
Comment je pourrais faire pour récupérer seulement les DIV qui ont pour attribut id="topdf"
J'ai beau chercher et tester différent bouts de code que j'ai trouvé, il me renvoie soit directement une erreur, soit aucun changement (comme si le code n'était pas interprété).
Merci d'avance,
Cordialement,
Hugo
Modifié par Kaesor (27 Feb 2018 - 17:40)
Avant tout chose, je suis pas très bon en php, mais je me débrouille (en tout cas j'ai la logique, mais pas la pratique).
Je cherche une réponse à mon problème depuis maintenant quelques heures.
Mon site est sur WordPress, sur un serveur mutualisé (donc total accès).
J'utilise html2pdf pour créer un pdf par rapport à une page de mon site.
Voici le code (intégré à functions.php), qui permet de transformer le contenu de ma page en pdf
add_action('post_updated','save_post_callback', 10, 3 );
function save_post_callback($post_id,$post_after, $post_before){
$css = " ";
$content = " ";
if($post_after->post_type == 'project'){
$css .="<style>";
$css .= "h1,h2,h3,h4,h5,h6{color:#333;font-weight:500;}h1{color:#019d9c;}p,page{text-align:justify;color: #666;line-height:25px;font-family:Arial,sans-serif;font-size:14px;font-weight:500;}a{color:#2ea3f2;text-decoration: none;}img{height:200px;text-align:center;margin-left:200px;}li{padding:5px 0;}span{display:none!important;color:#fff !important;}.header{text-align:right;padding:30px 0;}img{max-width:300px;}.block{clear:both !important; display:block !important;} ";
$css .="</style>";
$content .='<page backtop="7mm" backbottom="7mm" backleft="10mm" backright="10mm">';
$content .= '<p class="header">Annexe 1 - Fiche formation</p>';
$html = do_shortcode($post_after->post_content);
$content .= $html;
$current_url = '<a href="' . get_permalink() . '" class="toremove" rel="v:url" property="v:title">Page Web du Programme de Formation</a>';
$content .= "<page_footer></page_footer>";
$content .= '</page>';
$content_pdf = $css.strip_tags($content,'<strong>,<b>,<i>,<img>,<page_footer>,<span>,<p>,<page>,<h1>,<a>,<h2>,<h3>,<h4>,<h5>,<h6>,<ul>,<li>');
$dom = str_get_html($content_pdf);
$dom->find('span[class=et-pb-icon]', 0)->innertext = ' ';
$dom->find('span[class=et-pb-icon]', 1)->innertext = ' ';
$dom->find('span[class=et-pb-icon]', 2)->innertext = ' ';
$dom->find('span[class=et-pb-icon]', 3)->innertext = ' ';
$dom->find('span[class=et-pb-icon]', 4)->innertext = ' ';
$dom->find('a[class=et_pb_button]', 0)->innertext = '<br> ';
$dom->find('span[class=block]', 0)->innertext .= '<br> ';
$dom->save();
$upload_dir = wp_upload_dir();
$directory = $upload_dir["basedir"]."/pdf/Annexe-1-Fiche-descriptive-".$post_after->post_name.".pdf";
require_once(dirname(__FILE__).'/html2pdf/vendor/autoload.php');
$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->WriteHTML($dom);
$html2pdf->Output($directory , 'F');
}
return ;
}
Actuellement, il me prend tout le contenu de la page (post) puis me le met sur le PDF, hors j'aimerais seulement quelque partie de la page.
C'est le code ci-dessous qui permet de récupérer le contenu de la page
$html = do_shortcode($post_after->post_content);
Comment je pourrais faire pour récupérer seulement les DIV qui ont pour attribut id="topdf"
J'ai beau chercher et tester différent bouts de code que j'ai trouvé, il me renvoie soit directement une erreur, soit aucun changement (comme si le code n'était pas interprété).
Merci d'avance,
Cordialement,
Hugo
Modifié par Kaesor (27 Feb 2018 - 17:40)