Maison >développement back-end >tutoriel php >Le framework TP présente les étapes et les solutions du plug-in tcpdf pour les caractères chinois tronqués TCPD

Le framework TP présente les étapes et les solutions du plug-in tcpdf pour les caractères chinois tronqués TCPD

little bottle
little bottleavant
2019-04-26 17:31:244802parcourir

Cet article parle principalement des étapes pour introduire le plug-in tcpdf dans le framework TP et de la solution aux caractères chinois tronqués TCPD. Il a une certaine valeur d'apprentissage. Les amis dans le besoin peuvent y jeter un œil. .

Lors de la réalisation de projets, j'ai utilisé HTML pour générer des PDF et j'ai trouvé que la fonction du plug-in TCPDF était plus adaptée, j'ai donc choisi ce plug-in. Le processus spécifique est le suivant :

1. Téléchargez la dernière version de TCPDF via Composer et basculez vers le programme. Exécutez la commande suivante dans le répertoire racine (changement de commande DOS sous Windows) :

composer require tecnickcom/tcpdf

Après. la commande est exécutée avec succès, TCPDF sera téléchargé dans le dossier du fournisseur dans le répertoire racine du programme, tel que Picture :

Il y a plus de 60 exemples typiques dans les exemples. aux exemples des fonctions dont vous avez besoin. Pour la liste d'exemples correspondante, consultez le site officiel de TCPDF : https://tcpdf.org/examples/

2. Appelez TCPDF dans le contrôleur.

utilisez TCPDF;

3. Collez le code de l'exemple officiel directement dans la méthode et exécutez-le avec succès.

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}
$pdf->setFontSubsetting(true);
$pdf->SetFont('dejavusans', '', 14, '', true);
$pdf->AddPage();
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
$html = <<<EOD
<h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;background-color:#CC0000;color:black;"> <span style="color:black;">TC</span><span style="color:white;">PDF</span> </a>!</h1>
<i>This is the first example of TCPDF library.</i>
<p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
<p>Please check the source code documentation and other examples for further information.</p>
<p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
EOD;
$pdf->writeHTMLCell(0, 0, &#39;&#39;, &#39;&#39;, $html, 0, 1, 0, true, &#39;&#39;, true);
$pdf->Output(&#39;example_001.pdf&#39;, &#39;I&#39;);

Notes :

1. Étant donné que TCPDF utilise des délimiteurs pour afficher le HTML et d'autres contenus, $html dans le code ci-dessus doit être dans le même format jusqu'à EOD.

2. ThinkPHP doit désactiver le mode de débogage, sinon la sortie sera tronquée.

Solution aux caractères chinois tronqués TCPD
La dernière version de TCPDF prend déjà en charge le chinois. Spécifiez simplement l'encodage chinois dans la méthode de génération de PDF.

$pdf->SetFont(&#39;stsongstdlight&#39;, &#39;&#39;, 12);

Solution au problème selon lequel TCPDF ne peut pas enregistrer les noms de fichiers chinois

Lorsque PHP utilise TCPDF pour générer des fichiers PDF, si le nom du fichier est en chinois, il sera directement filtré, comme suit. C'est la solution au problème selon lequel TCPDF ne peut pas enregistrer les noms de fichiers chinois :

Ouvrez le fichier tcpdf.php et recherchez la fonction de sortie, qui concerne la ligne 7554.

1. Commentez le code suivant, environ aux lignes 7565-7568 :

if ($dest[0] != &#39;F&#39;) {
    $name = preg_replace(&#39;/[\s]+/&#39;, &#39;_&#39;, $name);
    $name = preg_replace(&#39;/[^a-zA-Z0-9_\.-]/&#39;, &#39;&#39;, $name);
}

2. Recherchez le code de la méthode et remplacez le code suivant, environ aux lignes 7639, 7670, 7693. , et 7718 respectivement.

header(&#39;Content-Disposition: attachment; filename="&#39;.basename($name).&#39;"&#39;);

est remplacé par

header(&#39;Content-Disposition: attachment; filename="&#39;.$name.&#39;"&#39;);

Les codes ci-dessus sont respectivement en cas 'I' : (imprimer le PDF), cas 'D' : (télécharger le PDF), cas 'FD de cette méthode ': (enregistrer dans un fichier local).

De cette façon, lorsque PHP utilise TCPDF pour générer des fichiers PDF, il peut être enregistré sous un nom chinois.

Tutoriels associés : Tutoriel vidéo thinkPHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer