我正在为我的网站构建一个tcpdf文件,因为tcpdf文件是一个包含一些数据的表,但我不能让这个章程正常工作。编码我使用的是Windows-1250。 宪章女巫不工作:č,ć,đ。我尝试过使用utf-8,但是仍然没有提到这个章程tcpdf有什么问题吗?
这是我的php:
<?php
require_once('tcpdf_files/config/lang/hrv.php');
require_once('tcpdf_files/tcpdf.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'windows-1250', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 061');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 061', PDF_HEADER_STRING);
// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
//set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
//set some language-dependent strings
$pdf->setLanguageArray($l);
// ---------------------------------------------------------
// set font
$pdf->SetFont('times', '', 10);
// add a page
$pdf->AddPage();
//START OF DATA FOR PDF DOSJE
$ime = "šiš čevap";
$prezime = "čušpaiz";
$rodjenje = "čakardič";
$odjel = "četnik";
$radno_mjesto = "čaćijađ";
$poduzece = "čitluk";
$putovnica = "čošak";
$vozacka = "pićkica";
$html = <<<EOF
<!-- EXAMPLE OF CSS STYLE -->
<table width="100%" style="padding:3px;">
<tr>
<td>
<table border="1" style="border:1px solid grey; width:60%;">
<tr>
<td rowspan="3">
<p style="margin-top:-38px;">POSLODAVAC:</p>
</td>
<td>
Ime firme
</td>
</tr>
<tr>
<td>
adresa firme
</td>
</tr>
<tr>
<td>
oib firme
</td>
</tr>
</table><br>
<table border="1" style="border:1px solid #dddddd; width:60%;">
<tr>
<td>
RADNIK:
</td>
<td>
$ime $prezime
</td>
</tr>
<tr>
<td>
Oib
</td>
<td>
$rodjenje
</td>
</tr>
<tr>
<td>
Spol
</td>
<td>
$odjel
</td>
</tr>
<tr>
<td>
Dan, mjesec i godina rođenja
</td>
<td>
$radno_mjesto
</td>
</tr>
<tr>
<td>
Državljanstvo
</td>
<td>
$radno_mjesto
</td>
</tr>
</table><br>
EOF;
// output the HTML content
$pdf->writeHTML($html, true, false, true, false, '');
// reset pointer to the last page
$pdf->lastPage();
//Close and output PDF document
$pdf->Output('example_061.pdf', 'I');
答案 0 :(得分:4)
它不适用于时代字体。 我们的信件使用这种字体:
$pdf->SetFont('dejavusans', '', 11, '', true);
和UTF-8
修改强> 过了一段时间,我认为这更好:
$pdf->SetFont('freeserif', '', 11, '', true);
答案 1 :(得分:1)
尝试使用mPDF,理解起来更方便,更清晰(mPDF) 例如:
答案 2 :(得分:0)
你不能只使用这样的代码:
č = č
ć = ć
đ = đ
我个人也有更好的mPDF经验。
答案 3 :(得分:0)
我不确定它是否有效,但请尝试iconv
。我在制作日文PDF时必须使用它。我不知道你的编码需要什么,但这就是我使用的:
$newtext = iconv("UTF-8", "SJIS", $oldtext);
显然将'SJIS'更改为您正在使用的任何编码。
修改强>
重复我在下面的评论中所说的内容,但希望在这里阅读更容易:
尝试将第四个构造函数变量更改为TRUE
,因此它使用UTF-8:
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'windows-1250', false);
⇓
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'windows-1250', false);
如果这不起作用,我不知道该告诉你什么: - /
编辑(再次)
可能是一个愚蠢的问题,但你看看这些例子吗?
http://www.tcpdf.org/examples/example_018.phps
那里没有什么可以帮到你的吗?
另一个编辑
好的,希望这应该这样做:
<?php
require_once('tcpdf/config/lang/hrv.php');
require_once('tcpdf/tcpdf.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'utf-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 061');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 061', PDF_HEADER_STRING);
// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
//set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
//set some language-dependent strings
$pdf->setLanguageArray($l);
// ---------------------------------------------------------
// set font
$pdf->SetFont('freesans', '', 10);
// add a page
$pdf->AddPage();
//START OF DATA FOR PDF DOSJE
$ime = "šiš čevap";
$prezime = "čušpaiz";
$rodjenje = "čakardič";
$odjel = "četnik";
$radno_mjesto = "čaćijađ";
$poduzece = "čitluk";
$putovnica = "čošak";
$vozacka = "pićkica";
$html = <<<EOF
<!-- EXAMPLE OF CSS STYLE -->
<table width="100%" style="padding:3px;">
<tr>
<td>
<table border="1" style="border:1px solid grey; width:60%;">
<tr>
<td rowspan="3">
<p style="margin-top:-38px;">POSLODAVAC:</p>
</td>
<td>
Ime firme
</td>
</tr>
<tr>
<td>
adresa firme
</td>
</tr>
<tr>
<td>
oib firme
</td>
</tr>
</table>
<br>
<table border="1" style="border:1px solid #dddddd; width:60%;">
<tr>
<td>
RADNIK:
</td>
<td>
$ime $prezime
</td>
</tr>
<tr>
<td>
Oib
</td>
<td>
$rodjenje
</td>
</tr>
<tr>
<td>
Spol
</td>
<td>
$odjel
</td>
</tr>
<tr>
<td>
Dan, mjesec i godina rođenja
</td>
<td>
$radno_mjesto
</td>
</tr>
<tr>
<td>
Državljanstvo
</td>
<td>
$radno_mjesto
</td>
</tr>
</table>
<br>
</td>
</tr>
</table>
EOF;
// output the HTML content
$pdf->writeHTML($html, true, false, true, false, '');
// reset pointer to the last page
$pdf->lastPage();
//Close and output PDF document
$pdf->Output('example_061.pdf', 'I');
?>
如果您使用1250编码数据库中的值,则需要将它们转换为:
$db = mysql_connect('localhost', 'user', 'password');
mysql_select_db('databasename', $db);
mysql_set_charset("cp1250");
$query = mysql_query("SELECT * FROM `yourtable`");
while ($row = mysql_fetch_assoc($query)) {
$converted_value = iconv("windows-1250", "utf-8", $row['column_name']);
}
我在自己的数据库中创建了一个1250排序规则的测试表,并使用了您提供的单词。这对我有用。让我知道它是否有帮助!
答案 4 :(得分:0)
我有同样的问题,一些提示:
与其他答案一样检查你的字体,它必须是unicode ......
然后,检查您的编码:
您可以使用:mb_detect_encoding。
像这样:
$x=$row['adresa']; // $x=test
echo mb_detect_encoding($x);
echo $x;
最终结果将是等。 :UTF-8测试
如果不是Utf-8,Tcpdf将显示空白页。
答案 5 :(得分:-1)
SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 048');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.': Naziv Udruge', PDF_HEADER_STRING);
$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/hrv.php')) { require_once(dirname(__FILE__).'/lang/hrv.php');
$pdf->setLanguageArray($l);
}
// ---------------------------------------------------------
$pdf->SetFont('freesans', '', 12);
$pdf->AddPage();
$pdf->Write(0, 'Lista čćšđžlanova', '', 0, 'L', true, 0, false, false, 0); $pdf->SetFont('freesans', '', 8);
// -----------------------------------------------------------------------------
$tbl = ' ';
mysql_set_charset("cp1250");
$rezultat = mysql_query("SELECT * FROM tbl_contacts WHERE contact_id > 0");
while ($row = mysql_fetch_array($rezultat)) {
$ime=$row['first_name'];
$ime2 = iconv("windows-1250", "utf-8", $ime);
$tbl=$tbl.' ';
} $tbl=$tbl.'
Ime i prezime Datum rođenjačćšđž Adresa'.$ime2.'nn BLA BLA BLA BLA';
$pdf->writeHTML($tbl, true, false, false, false, '');
// -----------------------------------------------------------------------------
$pdf->Output('Lista.pdf', 'I');
?>