3

我正在为我的网站构建一个 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');
4

6 回答 6

4

它不适用于 times 字体。我们的信件使用这种字体:

$pdf->SetFont('dejavusans', '', 11, '', true);

和 UTF-8

编辑 一段时间后,我认为这更好:

$pdf->SetFont('freeserif', '', 11, '', true);
于 2012-07-12T19:01:20.437 回答
2

我不确定它是否会起作用,但请尝试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 排序规则的测试表,并使用了您提供的单词。这对我有用。让我知道它是否有帮助!

于 2012-05-27T05:43:17.740 回答
1

尝试使用mPDF,理解起来更方便,更清晰(mPDF)示例:

            require(LIBRARY . "/MPDF54/mpdf.php");

            $mpdf=new mPDF('c','A4-L','','',10,10,20,15,5,5, 'L');
            $mpdf->SetDisplayMode('fullpage');
            $mpdf->list_indent_first_level = 0;

                $header = $view->render('header.phtml');    
            $mpdf->SetHTMLHeader($header);
                $footer = $view->render('footer.phtml');
            $mpdf->SetHTMLFooter($footer);

                $view->client_info = $client_info[0];
                $view->info = $info;
                $view->lots = $lots;
                $html = $view->render('invoice.phtml'); 

            $mpdf->WriteHTML($html,2);
            $mpdf->Output("bidder_$id.pdf",'I');
            exit;
于 2012-05-21T13:35:37.377 回答
0

我有同样的问题,一些提示:

就像在其他答案中检查你的字体一样,它必须是 unicode ...

然后,检查您的编码:

你可以这样做:mb_detect_encoding。

像这样 :

$x=$row['adresa']; // $x=test

  echo mb_detect_encoding($x);

  echo $x;

最终结果将是等。: UTF-8 测试

如果不是 Utf-8 Tcpdf 将显示空白页。

于 2014-01-14T16:48:49.137 回答
0

你不能只使用这样的代码:

č = &#269;
ć = &#263;
đ = &#273;

?

我个人对 mPDF 也有更好的体验。

于 2012-05-21T13:42:43.767 回答
-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'); 
?>
于 2015-03-11T15:39:30.700 回答