I’m trying to create a PDF from post content, including some ACF fields. Currently I’ve got it working on a POST form and dynamically creating a PDF each time, but I’d like to make it generate the PDF on saving the post so I can then just have a download button which downloads the PDF generated from saving the post, but having difficulty doing so. Any help would be grand!
I’ve tried to create this as a function in functions.php hooking into the acf/save_post action at prioirty 15 so it’s after the initial save.
function vehicle_details_pdf( $post_id ) { require('wp-content/themes/murrayscott-nelson/fpdf/fpdf.php'); class PDF extends FPDF { function Header() { $vehicleRef = $_POST['ref']; $this->Image('wp-content/themes/murrayscott-nelson/assets/logo.jpg',10,10,80); $this->SetFont('Arial','B',15); $this->Cell(80); $this->Cell(85,10,'Vehicle Details - Ref:' . $vehicleRef ,0,0,'R'); $this->Ln(20); } function Footer() { $this->SetY(-15); $this->SetFont('Arial','I',8); $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); } $vehicleName = get_the_title(); $vehicleBodyStyle = get_field('body_type', $post_id); $vehiclePrice = get_field('price', $post_id); $vehicleEngCap = get_field('engine_capacity', $post_id); $vehicleMileage = get_field('mileage', $post_id); $vehicleSteering = get_field('steering', $post_id); $vehicleDescription = get_field('description', $post_id); $vehicleRef = get_field('reg_ref', $post_id); $images = get_field('vehicle_images', $post_id); $image = $images[0]; $image = $image['url']; $vehicleImage = preg_replace("/^https:/i", "http:", $image); $pdf = new PDF(); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->SetFont('Arial','B',17); $pdf->Image( $vehicleImage, $pdf->GetX(), $pdf->GetY(), 190); $pdf->Ln(130); $pdf->Cell(0,10,$vehicleName); $pdf->Ln(10); $pdf->SetFont('Arial','',12); $pdf->Cell(0,7,'Body Style: ' . $vehicleBodyStyle . ' | Steering: ' . $vehicleSteering . ' | Engine Capacity: ' . $vehicleEngineCap . 'cc | Mileage: ' . $vehicleMileage . ' miles' ); $pdf->Ln(7); $pdf->Write (6, $vehicleDescription); $pdf->SetFont('Arial','B',17); $pdf->Ln(0); $pdf->Cell( 0, 10, iconv("UTF-8", "ISO-8859-1", "£") . $vehiclePrice, 0); $pdf->Ln(10); $pdf->setFillColor(230,230,230); $pdf->SetFont('Arial','B',15); $pdf->MultiCell(0,7,"If you'd like to arrange a viewing please call 01723 361 227",0,'C',1); $pdf->MultiCell(0,7,"quoting reference: " . $vehicleRef ,0,'C',1); $pdf->setFillColor(38,54,29); $pdf->setTextColor(255,255,255); $pdf->Ln(5); $pdf->MultiCell(0,7,"Finance Available - Ask for details" ,0,'C',1); $pdf->setTextColor(0,0,0); $filepath= wp_get_upload_dir() . '/vehicledetails/' ; $pdf->Output('F', $filepath . $vehicleRef . '.pdf'); } add_action('acf/save_post', 'vehicle_details_pdf', 15);
I expect the code to create a pdf file in the wp-content/uploads/vehicledetails directory
error messages:
[01-Sep-2019 10:49:10 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:10 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:15 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:15 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:17 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:17 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:17 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:18 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:19 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:19 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:20 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:20 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:49:21 UTC] PHP Warning: require(wp-content/themes/murrayscott-nelson/fpdf/fpdf.php): failed to open stream: No such file or directory in /app/public/wp-content/themes/murrayscott-nelson/functions.php on line 81 [01-Sep-2019 10:49:21 UTC] PHP Warning: require(wp-content/themes/murrayscott-nelson/fpdf/fpdf.php): failed to open stream: No such file or directory in /app/public/wp-content/themes/murrayscott-nelson/functions.php on line 81 [01-Sep-2019 10:49:21 UTC] PHP Fatal error: require(): Failed opening required ‘wp-content/themes/murrayscott-nelson/fpdf/fpdf.php’ (include_path=’.:/usr/share/php:/www/wp-content/pear’) in /app/public/wp-content/themes/murrayscott-nelson/functions.php on line 81 [01-Sep-2019 10:49:21 UTC] PHP Fatal error: require(): Failed opening required ‘wp-content/themes/murrayscott-nelson/fpdf/fpdf.php’ (include_path=’.:/usr/share/php:/www/wp-content/pear’) in /app/public/wp-content/themes/murrayscott-nelson/functions.php on line 81 [01-Sep-2019 10:50:16 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:52:17 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:54:18 UTC] PHP Warning: Invalid argument supplied for foreach() in /app/public/wp-includes/class-wp-post-type.php on line 597 [01-Sep-2019 10:56:18 UTC] PHP Parse error: syntax error, unexpected ‘$vehicleName’ (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in /app/public/wp-content/themes/murrayscott-nelson/functions.php on line 114 [01-Sep-2019 10:58:19 UTC] PHP Parse error: syntax error, unexpected ‘$vehicleName’ (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in /app/public/wp-content/themes/murrayscott-nelson/functions.php on line 114
Advertisement
Answer
Your upload directory is not set correctly.
Try this:
$uploads = wp_upload_dir(); $pdf->Output('F', $uploads['basedir'] . '/vehicledetails/' . $vehicleRef . '.pdf');