8

私はTCPDFを使用してPDFドキュメントを生成しており、ヘッダーにロゴを追加しようとしていますが、画質に問題があり、後でわかったのですが、スケーリングにも問題があります。

TCPDF を使用して PDF ドキュメントに挿入された画像は、品質の低下とサイズの問題に悩まされます。サイズは変えられるのであまり気にしませんが、画質は元に戻せません。

私が試したこと:

  • TCPDF のスケーリングと品質の問題
  • tcpdf: 画質が悪い
  • ヘッダーも HTML コードに変換しましたが、同様の品質低下が発生します。
  • の他のすべてのオプションを削除し$pdf->Image()、すべてをデフォルトのままにしました - 画像サイズは (おそらく) 元のサイズに増加しましたが、同じ品質の問題がありました。

これは、画像を挿入するために使用しているコードです。

$this->Image("../images/logo.jpg", 8, 10, 35, '', 'JPG', '', 'T', false, 0, '', false, false, 0, false, false, false);

そして、これはcreatePDF()関数の始まりです:

$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator('PHP TC-PDF Generator');
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(8, 50, 8); // page margins
$pdf->SetAutoPageBreak(TRUE, 30);
$pdf->setImageScale(1);
$pdf->setFontSubsetting(true);
$pdf->SetFont('helvetica', '', 12, '', true);
$pdf->AddPage();
$pdf->setTextShadow(array('enabled'=>false));

他の推奨事項はありますか?

代替案: HTML テーブルをサポートし、より高品質の画像を挿入できる場合は、TCPDF を他の PDF ジェネレーターで変更してもかまいません。

どうぞよろしくお願いいたします。

4

3 に答える 3

1

私は同じ問題を抱えていましたが、以前の提案はどれもうまくいきませんでした。私の救いはこれでした。秘密は、pdf ロゴをテンプレートとして使用することです。Google ロゴを使用して結果を確認してください。

ここに画像の説明を入力

1) PDF ロゴ バージョン 1.4 が必要です (現在の PDF バージョンはサポートされていません)。そのためには、高品質の png、jpegなどのロゴを選択し、このサイトを使用して PDF 1.4 に変換します。

2) FPDI ライブラリをダウンロードします

3)最初のリンクの指示に従ってください。ここにコピーしています:

<?php
// just require TCPDF instead of FPDF
require_once('tcpdf.php');
require_once('fpdi.php');

class PDF extends FPDI
{
/**
 * "Remembers" the template id of the imported page
 */
var $_tplIdx;

/**
 * Draw an imported PDF logo on every page
 */
function Header()
{
    if (is_null($this->_tplIdx)) {
        $this->setSourceFile("logo.pdf");
        $this->_tplIdx = $this->importPage(1);
    }
    $size = $this->useTemplate($this->_tplIdx, 130, 5, 60);

    $this->SetFont('freesans', 'B', 20);
    $this->SetTextColor(0);
    $this->SetXY(PDF_MARGIN_LEFT, 5);
    $this->Cell(0, $size['h'], 'TCPDF and FPDI');
}

function Footer()
{
    // emtpy method body
}
}

// initiate PDF
$pdf = new PDF();
$pdf->SetMargins(PDF_MARGIN_LEFT, 40, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(true, 40);
$pdf->setFontSubsetting(false);

// add a page
$pdf->AddPage();

// get external file content
$utf8text = file_get_contents('examples/data/utf8test.txt', true);

$pdf->SetFont('freeserif', '', 12);
// now write some text above the imported page
$pdf->Write(5, $utf8text);

$pdf->Output();
于 2014-10-15T14:38:11.940 に答える