[RESOLVIDO] Helper para ajudar no desenho do TCPDF

Quando fui começar tive problemas pra fazer os calculo entre X e Y, leva muito tempo em imaginar as posições no PDF, por tanto fiz um pequeno HELPER para ajudar nisso segue a classe
Basta criar uma biblioteca Interna e colar o código , e habilitá-la no PDF

Si alguém quiser melhorar ou colocar mais cosas pro favor fique a vontade para compartilhar aqui.

PS: Eu não achei nada no TCPDF para mostrar isso si tiver alguem me diga, porque dai joguei fora 2 horas de trabalho :slight_smile:

Modo de Usar*****
Deve ser colocado no CORPO do PDF LAYOUT>CODIGO>CORPO

$_wp_helper = new WP_TCPDF_HELPER($this->Pdf); //o parametro do objeto PDF é obrigatorio $_wp_helper->showGridAndRule(); //mostrar a cuadricula + regua diferenciada ao do SC

/**
* @Author: Willian Fernando Padilha
* Una pequeña clase para ayudar a hacer los PDFs via codigo manual
*/
class WP_TCPDF_HELPER
{
	private $_show_metrics_v = true; //mostrar los numeros de la regla vertical
	private $_show_metrics_h = true; //mostrar los numeros de la regla horizontal
	private $_font_size_metrica = 5; //tamaño de la fuente para mostrar los numeros de la regla
	private $_margin_top = 0; //margen superior
	private $_margin_left = 0; //margen izquierda
	private $_margin_right = 0; //margen derecha
	private $_margin_bottom = 0; //margen inferior
	private $_dimension_y = 5; //dimension de linea horizontal
	private $_dimension_x = 5; //dimension de linea vertical
	private $_color_lines = array(206, 236, 245);//color de las lineas horizontales y verticales
	private $_pdf_class;

	private $_w;
	private $_h;

	/**
	* Constructor Recibe como parametros
	* @_pdf_class (object) ,required: Recibe la Clase TCPDF/PDF del Editor Ejemplo: $this->Pdf
	* @parametros (array) Recibe una array con varias opciones
	* 	@var $parametros[show_metrics_v] bool: Mostrar Tamaño/Numeros Verticales
 	* 	@var $parametros[show_metrics_h] bool: Mostrar Tamaño/Numeros Horizontales
 	* 	@var $parametros[font_size_metrica] int: Tamaño de la fuente de los numeros Horizontales/Verticales
 	* 	@var $parametros[margin_top] int: Margen Superior
 	* 	@var $parametros[margin_left] int: Margen Izquierda
 	* 	@var $parametros[margin_right] int: Margen Derecha
 	* 	@var $parametros[margin_bottom] int: Margen Inferior
 	* 	@var $parametros[size_line_h] int: Tamaño de la linea Horizontal
 	* 	@var $parametros[size_line_v] int: Tamaño de la linea Vertical
 	* 	@var $parametros[color_lines] array: Color en RGB
 	*		@var array($r,$g,$b)
	*/
	function __construct($_pdf_class,$parametros = array())
	{
		$this->_pdf_class = $_pdf_class;

		if (isset($parametros['show_metrics_v'])) $this->_show_metrics_v = $parametros['show_metrics_v'];
		if (isset($parametros['show_metrics_h'])) $this->_show_metrics_h = $parametros['show_metrics_h'];
		if (isset($parametros['font_size_metrica'])) $this->_font_size_metrica = $parametros['font_size_metrica'];
		if (isset($parametros['margin_top'])) $this->_margin_top = $parametros['margin_top'];
		if (isset($parametros['margin_left'])) $this->_margin_left = $parametros['margin_left'];
		if (isset($parametros['margin_right'])) $this->_margin_right = $parametros['margin_right'];
		if (isset($parametros['margin_bottom'])) $this->_margin_bottom = $parametros['margin_bottom'];
		if (isset($parametros['size_line_h'])) $this->_dimension_y = $parametros['size_line_h'];
		if (isset($parametros['size_line_v'])) $this->_dimension_x = $parametros['size_line_v'];
		if (isset($parametros['color_lines'])) $this->_color_lines = $parametros['color_lines'];
	}
	public function showGridAndRule()
	{

		$dimensiones = $this->_pdf_class->getPageDimensions();
		$this->_w = round($dimensiones['wk'],2);
		$this->_h = round($dimensiones['hk'],2);
		$this->_pdf_class->SetAutoPageBreak(FALSE, 0); //eliminar salto de pagina automatico
		$this->_pdf_class->SetFont('helvetica','',$this->_font_size_metrica);

		$_dim_each_y = $this->_dimension_y;
		$_dim_each_x = $this->_dimension_x;
		$_cant_lines_h = 0;
		$_cant_lines_v = 0;
		//cantidad de lineas horizontales
		$_cant_lines_h = round($this->_h / $this->_dimension_y,0);
		//cantidad de lineas Verticales
		$_cant_lines_v = round($this->_w / $this->_dimension_x,0);

		$_style_lines_h = $this->_pdf_class->SetLineStyle(array('width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $this->_color_lines));
		$_style_lines_v = $this->_pdf_class->SetLineStyle(array('width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $this->_color_lines));
		
		//lineas horizontales
		for($i = 1; $i <= $_cant_lines_h; $i++){
			$this->_pdf_class->Line(0 + $this->_margin_left,$_dim_each_y,$this->_w - $this->_margin_right,$_dim_each_y,$_style_lines_h);
			if($this->_show_metrics_h){
				$this->_pdf_class->setXY(0,$_dim_each_y - 2);
				$this->_pdf_class->Write(2,$_dim_each_y);
			}
			$_dim_each_y += $this->_dimension_y;
		}

		//lineas verticales
		for($i = 1; $i <= $_cant_lines_v; $i++){
			$this->_pdf_class->Line($_dim_each_x,0 + $this->_margin_top,$_dim_each_x,$this->_h - $this->_margin_bottom,$_style_lines_v);
			if($this->_show_metrics_v){
				$this->_pdf_class->setXY($_dim_each_x - 1.5,0);
				$this->_pdf_class->Cell(5,2,$_dim_each_x,0,0,'L');
			}
			$_dim_each_x += $this->_dimension_x;
		}
	}
}

wp_helper_pdf.png

William, boa tarde.

Sou novato em SC e não conheço PHP, onde devo colocar os fontes da classe ?

Grato

Ola Wagner

Menu Ferramentas -> bibliotecas internas - crie uma nova biblioteca (pode ser publica,usuario ou projeto) e cole o codigo acima.
Na aplicacao -> programacao -> bibliotecas internas habilite a biblioteca que vc criou.

Em LAYOUT>CODIGO>CORPO na aplicacao vc copia e cola

$_wp_helper = new WP_TCPDF_HELPER($this->Pdf); //o parametro do objeto PDF é obrigatorio
$_wp_helper->showGridAndRule(); //mostrar a cuadricula + regua diferenciada ao do SC

Espero ter ajudado.

Grande Willian.
Muito obrigado por compartilhar.
Esse código vai ajudar muita gente com certeza.
Parabéns.