PDF invoices packing slips add images

Add Product Thumbnails to PDF Invoices & Packing Slips

This handy code snippet will add Featured Images to your WooCommerce PDF Invoices. It simply just pulls each featured image and inserts it into each line-item on the PDF invoice.

This will only work with the WPOvernight PDF Invoices & Packing Slips plugin

Required Plugin: https://en-au.wordpress.org/plugins/woocommerce-pdf-invoices-packing-slips/

<?php
add_filter('wpo_wcpdf_use_path','v8_wcpdf_use_local_image_paths',10,2);
function v8_wcpdf_use_local_image_paths($use_path,$document_type=''){
	return ($document_type==='invoice') ? true : $use_path;
}

add_filter('wpo_wcpdf_order_item_data','v8_wcpdf_thumb_float_left_for_entire_item',10,3);
function v8_wcpdf_thumb_float_left_for_entire_item($data,$order,$document_type){
	if($document_type!=='invoice'){ return $data; }

	if(empty($data['product']) || !is_object($data['product'])){ return $data; }
	$product = $data['product'];

	$image_id = (int) $product->get_image_id();
	if($image_id<=0){ return $data; }

	$src = wp_get_attachment_image_url($image_id,'thumbnail');
	if(empty($src)){ return $data; }

	$uploads = wp_get_upload_dir();
	if(!empty($uploads['baseurl']) && !empty($uploads['basedir'])){
		$local_path = str_replace($uploads['baseurl'],$uploads['basedir'],$src);
		if($local_path && file_exists($local_path)){
			$src = $local_path;
		}
	}

	$thumb_html = '<img class="v8-wcpdf-thumb-float" src="'.esc_attr($src).'" alt="" />';

	if(!empty($data['name'])){
		$data['name'] = $thumb_html.$data['name'];
	}

	return $data;
}

add_action('wpo_wcpdf_custom_styles','v8_wcpdf_thumb_float_css',10,2);
function v8_wcpdf_thumb_float_css($document_type,$document){
	if($document_type!=='invoice'){ return; }
	?>
	.v8-wcpdf-thumb-float{float:left;height:16mm;width:16mm;margin:0 2mm 1.5mm 0;display:block;}
	.wpo-wcpdf-item-meta,.wpo-wcpdf-item-meta *,.meta,.meta *{clear:none !important;}
	table.order-details tbody tr td:first-child:after{content:"";display:block;clear:both;}
	<?php
}