[Laravel] Hướng dẫn sử dụng Latex trong Laravel
LaTex là một hệ thống sắp chữ đặc biệt, sử dụng tài liệu này rất chuyên nghiệp và rõ dàng. Lý do để chọn LaTex là vì nó có các tính năng mở rộng có tiêu đề, chân trang, chỉ mục sách, số trang, hình mờ, v.v ... Trong bài viết này vncoder.vn sẽ hướng dẫn các bạn sử dụng Latex trong Laravel
1. Điều kiện tiên quyết
Chúng ta cần phải cài đặt texlive-full trên máy chủ của bạn. Chương trình này có các gói tex và thư viện ngôn ngữ giúp bạn tạo tài liệu.
2. Cài đặt
composer require techsemicolon/laravel-php-latex
Dry Run :
Trước khi sử dụng trực tiếp, điều quan trọng là đảm bảo các chương trình cần thiết được cài đặt đúng trên máy chủ. Gói đi kèm với phương pháp Dryrun mà bạn có thể sử dụng đặt bên trong bất kỳ bộ điều khiển hoặc tuyến đường nào. Nó sẽ tự động tạo dryrun.pdf nếu mọi thứ được thiết lập tốt trên máy chủ. Nếu không, nó sẽ báo LatexException với lỗi chi tiết trên máy chủ.
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Techsemicolon\Latex;
class TestController extends Controller
{
/**
* Download PDF generated from latex
*
* @return Illuminate\Http\Response
*/
public function download(){
return (new Latex)->dryRun();
}
}
Dryrun sẽ tải xuống bản pdf như dưới đây:
3. Sử dụng
Tạo một tập tin xem bên trong resources/views/lates/tex.blade.php:
\documentclass[a4paper,9pt,landscape]{article}
\usepackage{adjustbox}
\usepackage[english]{babel}
\usepackage[scaled=.92]{helvet}
\usepackage{fancyhdr}
\usepackage[svgnames,table]{xcolor}
\usepackage[a4paper,inner=1.5cm,outer=1.5cm,top=1cm,bottom=1cm,bindingoffset=0cm]{geometry}
\usepackage{blindtext}
\geometry{textwidth=\paperwidth, textheight=\paperheight, noheadfoot, nomarginpar}
\renewcommand{\familydefault}{\sfdefault}
\pagestyle{fancy}
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot{}
\fancyfoot[LE,RO]{\thepage}
\fancyfoot[C]{\fontsize{8pt}{8pt}\selectfont Above document is auto-generated.}
\renewcommand{\footrulewidth}{0.2pt}
\begin{document}
\section*{\centering{Test Document}}
\begin{center}
\item[Name :] {{ $name }}
\item[Date of Birth :] {{ $dob }}
\end{center}
\blindtext
\begin{table}[ht]
\centering
\begin{adjustbox}{center}
\renewcommand{\arraystretch}{2}
\begin{tabular}{|l|l|}
\hline
\rowcolor[HTML]{E3E3E3}
\textbf{Sr. No}
& \textbf{Addresses}\\
\hline
@foreach($addresses as $key => $address)
\renewcommand{\arraystretch}{1.5}
{{ $key }} & {{ $address }} \\
\hline
@endforeach
\end{tabular}
\end{adjustbox}
\caption{Address Summmary}
\end{table}
\blindtext
\vfill
\centering
\end{document}
Xử lý download bên controller
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Techsemicolon\Latex;
class TestController extends Controller
{
/**
* Download PDF generated from LaTex
*
* @return Illuminate\Http\Response
*/
public function download(){
return (new Latex('latex.tex'))->with([
'name' => 'John Doe',
'dob' => '01/01/1994',
'addresses' => [
'20 Pumpkin Hill Drive Satellite Beach, FL 32937',
'7408 South San Juan Ave. Beaver Falls, PA 15010'
]
])->download('test.pdf');
}
}
Bạn có thể lưu pdf vào vị trí bạn muốn sử dụng sau:
(new Latex('latex.tex'))->with([
'name' => 'John Doe',
'dob' => '01/01/1994',
'addresses' => [
'20 Pumpkin Hill Drive Satellite Beach, FL 32937',
'7408 South San Juan Ave. Beaver Falls, PA 15010'
]
])->savePdf(storage_path('exports/pdf/test.pdf'));
Nếu bạn không muốn download file pdf
$tex = new Latex('latex.tex'))->with([
'name' => 'John Doe',
'dob' => '01/01/1994',
'addresses' => [
'20 Pumpkin Hill Drive Satellite Beach, FL 32937',
'7408 South San Juan Ave. Beaver Falls, PA 15010'
]
])->render();
Thiết lập bin path :
Nếu máy chủ của bạn không có pdflatex trong môi trường $PATH, bạn có thể cần cung cấp đường dẫn đầy đủ để thực thi lệnh. Để tìm đường dẫn bạn có thể làm:
which pdflatex
Sau đó sử dụng binPath trong function
return (new Latex('latex.tex'))->with([
'name' => 'John Doe',
'dob' => '01/01/1994',
'addresses' => [
'20 Pumpkin Hill Drive Satellite Beach, FL 32937',
'7408 South San Juan Ave. Beaver Falls, PA 15010'
]
])->binPath('/usr/bin/pdflatex')->download('test.pdf');
Using Raw Tex :
$tex = new RawTex('your_raw_tex_content_string.....');
return (new Latex($tex))->with([
'name' => 'John Doe',
'dob' => '01/01/1994',
'addresses' => [
'20 Pumpkin Hill Drive Satellite Beach, FL 32937',
'7408 South San Juan Ave. Beaver Falls, PA 15010'
]
])->download('test.pdf');
Bulk download in a zip archive :
$latexCollection = (new LatexCollection());
$users = User::limit(10)->get();
foreach ($users as $user) {
$pdfName = $user->first_name.'-'.$user->last_name.'-'.$user->id.'.pdf';
// Create latex instance
$latex = (new Latex('latex.patientsummary'))->with([
'user' => $user
])->setName($pdfName);
// Add it to latex collection
$latexCollection->add($latex);
}
// Download the zip
return $latexCollection->downloadZip('bulk.zip');
// OR you can also save it
$latexCollection->saveZip(storage_path('exports/zips/users.zip'));
3. Kết luận
Vậy là vncoder.vn đã hoàn thành bài hướng dẫn sử dụng Latex bằng gói techsemicolon/laravel-php-latex trong Laravel. Hy vọng bài viết sẽ có ích cho bạn. Chúc bạn thành công!.
4. Xem thêm
-
[Laravel] Gửi Email, hướng dẫn cách làm chức năng gửi Email trong Laravel 5
-
[Laravel] Tổng hợp 20 cách viết rút gọn Eloquent trong Laravel
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
Bài viết liên quan
Bài viết mới
Được xem nhiều nhất
[Laravel] Hướng dẫn tích hợp thanh toán online, tích hợp cổng thanh to...
[Laravel] Sử dụng Ajax làm chức năng tìm kiếm trong Laravel
[Laravel] Cách sử dụng Charts - hướng dẫn vẽ biểu đồ trong Laravel
[Laravel] Hướng dẫn sử dụng Raw DB Query trong Laravel
[Laravel] Hướng dẫn đăng nhập, đăng ký tài khoản bằng tài khoản Facebo...
Khóa học liên quan
Xây dựng ứng dụng với Laravel và Vuejs
Lượt xem: 16288
Chuyên mục: Laravel