SetCreator( 'AI Answer Toolkit' ); $pdf->SetAuthor( 'Troon Technologies' ); $pdf->SetTitle( 'AEO Audit Report - ' . wp_date( 'Y-m-d' ) ); $pdf->SetSubject( 'Content Audit Report' ); // Remove default header/footer $pdf->setPrintHeader( false ); $pdf->setPrintFooter( false ); // Set margins $pdf->SetMargins( 15, 15, 15 ); $pdf->SetAutoPageBreak( true, 20 ); // Add a page $pdf->AddPage(); // Generate content self::add_header( $pdf, $stats ); self::add_stats_cards( $pdf, $stats ); self::add_posts_table( $pdf, $posts ); self::add_footer( $pdf ); // Output PDF $filename = 'aeo-audit-report-' . wp_date( 'Y-m-d-His' ) . '.pdf'; $pdf->Output( $filename, 'D' ); exit; } /** * Load TCPDF library. */ private static function load_tcpdf() { // Check for TCPDF in vendor directory (composer install) $tcpdf_paths = array( AI_Answer_Toolkit_PLUGIN_DIR . 'vendor/tecnickcom/tcpdf/tcpdf.php', AI_Answer_Toolkit_PLUGIN_DIR . 'vendor/tcpdf/tcpdf.php', ); foreach ( $tcpdf_paths as $path ) { if ( file_exists( $path ) ) { require_once $path; return; } } // Fallback: Use browser print to PDF self::generate_printable_html(); } /** * Add header to PDF. * * @param TCPDF $pdf PDF object. * @param array $stats Statistics data. */ private static function add_header( $pdf, $stats ) { // Apply styles inline to HTML elements (WordPress.org compliance) // No