2013-06-29 6 views
2

주어진 크기의 사각형으로 늘이기 텍스트가 필요한 프로젝트 작업 중입니다. 나는 이것을 위해 imagick을 시도했지만 거기에는 약간의 품질 손실이있었습니다.TCPDF 늘이기 텍스트

예를 들어 203x78 크기의 상자가 있고 "LOREM IPSUM LOREM"(모든 텍스트) 텍스트를 작성했습니다. 이 텍스트를 203x78의 크기에 맞출 수 있기를 바랍니다. 어떤 크기의 사안에도 상관없이, 품질은 물론 내 상자와 완전히 일치해야합니다.

그 방법으로 imagick보다 더 좋은 방법을 찾지 못합니다. 가장 가까운 글꼴 크기의 투명 텍스트를 내 상자에 그리기 (확실히 조금 더) 및 그림을 그립니다. 그 후 상자 크기로 크기를 조정합니다. 크기를 조정할 때 imagick에서 필터를 시도했습니다. 작은 크기의 텍스트를 제외하고는 아무런 문제가 없습니다. 예를 들면. 글꼴 크기 20px와 내 특정 상자 크기가 어느 쪽이든 약 1-3px 정도 더 큽니다. 20px로 그려지는 텍스트 크기는 40x18이지만 내 상자는 41x20입니다. 41x20 크기로 조정했지만 효과 및 효과 값이 흐리게 표시됩니다.

그래서 TCPDF로 텍스트를 만들고 원하는 크기로 텍스트 크기를 조정하고 싶습니다. 피팅은 수평 및 수직으로 완전히 맞아야하며 완전히 펴야합니다. PDF 형식의 텍스트를 벡터 형식으로 작성 했으므로 크기를 조정할 때 손실이 발생하지 않았습니다.

TCPDF에는 가로 늘이기가 있지만 양쪽에서 늘릴 방법이 없습니다.

추가 정보 : ttf 파일을 사용하여 텍스트를 작성해야합니다. 투명한 png 출력이 필요합니다. 가로 늘이기에는 문자 간격을 사용하지 말아야합니다. 모든 동작은 벡터 크기 조정과 동일해야합니다. 단지 ADOBE ILLUSTRATOR와 같습니다.

illustrator resized texts, any size

시도합니다 나는 PHP는 이것에 대한 GD하지만 imagick에 비해 아주 나쁜 품질을 사용했다. php-cairo 서버를 설치하려고했지만 할 수 없습니다. 나는 이것을하기 위해 inkscape를 찾았지만 커맨드 라인에서 작동하는 방법을 찾지 못했습니다. 나는 벡터를 변환하는 imagick 출력> inkscape를 시도했지만 완전히 실패했다. TCPDF 출력을 시도해 보았습니다.> 크기를 조정하려면 imagick을 사용했지만 품질은 조정할 수 없습니다 (imagick에는 벡터 크기 조정 기능이 없습니다)

Help!

답변

3

"래스터 이미지 프로세서"이므로 ImageMagick을 사용할 수 없습니다. 어쨌든 어떤 작업을 수행하기 전에 이미지가 래스터 화됩니다 (Vector Image formats 참조).

나는 inkscape로 꽤 깨끗한 것을 얻었습니다.

우선 텍스트가 포함 된 간단한 svg 파일이 필요합니다. 이러한 파일은 PHP 또는 다른 언어로 쉽게 생성 할 수 있습니다.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<svg 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:cc="http://creativecommons.org/ns#" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:svg="http://www.w3.org/2000/svg" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 
    version="1.1"> 
    <g> 
    <text 
     xml:space="preserve" 
     style="font-size:40px; 
       font-style:normal; 
       font-weight:normal; 
       line-height:125%; 
       letter-spacing:0px; 
       word-spacing:0px; 
       fill:#000000; 
       fill-opacity:1; 
       stroke:none; 
       font-family:Helvetica" 
     x="0" 
     y="0" 
     sodipodi:linespacing="125%"><tspan 
     sodipodi:role="line" 
     x="0" 
     y="0">Hello World!</tspan></text> 
    </g> 
</svg> 

거기에서 우리는 쉽게 텍스트, 글꼴, 색상을 변경할 수 있습니다 ...다음 명령 행합니다 (-w-h 매개 변수를 조정하여) 트릭을 수행합니다

inkscape filename.svg --export-png=filename.png -w800 -h300 --export-area-drawing 
+0

변환을하고 출력입니다 이 경우에는? (질문, ttf 파일을 사용하여 텍스트를 작성해야합니다.) –

+0

안녕하세요 @ IcanDivideBy0 어떻게 ttf 글꼴 파일을 사용할 수 있습니까? thanks –

+0

font-family 속성을 사용하면 시스템에 설치된 글꼴 (ttf 포함)을 사용할 수 있습니다. 파일의 폰트 패밀리를 얻으려면,'fc-query path/to/fontfile.ttf' 명령을 사용할 수 있습니다. 예를 들어, 리눅스에서 ttf 파일을'~/.fonts' 디렉토리에 넣으면 inkscape가 그것을 찾을 것입니다. – IcanDivideBy0

0

를 내가 발견했습니다하는 방법입니다 것은 내가 TTF 폰트 파일을 사용할 수 있습니다 어떻게 HTML

$pdf->StartTransform(); 

$pdf->Scale(100,150); 

// Output html. 
$html=('sample text'); 
$pdf->writeHTMLCell($w=50, $h=10, $x='', $y='', $html, $border=1, $ln=1, $fill=0, $reseth=true, $align='C', $autopadding=true); 


$pdf->StopTransform();