2012-02-13 2 views
3

난 혼란스러운 문제를 해결하는 데 필요한 정확한 코드로 PHP 스크립트를 줄였습니다 (적어도 나에게!). 아래의 모든 스크립트는 rtf 템플릿의 '++ name'을 한 줄에 'me'를 인쇄하고 다음 줄에는 'you'를 인쇄하는 하드 코드 된 변수로 대체합니다. "\ r \ n"을 사용하여 새 행을 만드는 것 외에도 "\ par"을 사용하지 않으려 고 시도했습니다. 아래 코드는 한 줄에 '++ name'을 "meyou"로 대체합니다. 나는 stackoverflow 및 기타 포럼에서 "솔루션"의 숫자를 발견했지만 아무도 나를 위해 일한 적이 없다.PHP 코드가 rtf 템플릿에 새 라인을 만들지 않습니다.

도움을 주시면 감사하겠습니다.

<?php 
    $name = "me" . "\r\n" . "you"; 
    header('Content-type: application/msword'); 
    header('Content-Disposition: inline, filename=filenot.rtf'); 
    $filename = 'rtfnotice.rtf'; 
    $fp = fopen ($filename, 'r'); 
    $output = fread($fp, filesize($filename)); 
    fclose ($fp); 
    $output = str_replace('++name', $name, $output); 
    echo $output; 
?> 
+0

MIME 타입이'application/msword'이므로 일반 운영 체제 개행 문자가 당신을 위해 아무 것도하지 않을 것이라고 생각합니다. 캐럿 -P'^ p'를 사용해 보셨습니까? MS Word가 캐리지 리턴 (여전히있을 수 있음)을 위해 사용되는 것을 알고 있고 그것이 당신이 찾고있는 것일 수 있습니다. 나는 이것을 대답으로 올리 겠지만, 그것이 효과가 있다고 약속 할 수는 없다. 시도 할만한 것. – rdlowrey

+0

응답 모든 사람에게 PHP_EOL'에게' http://stackoverflow.com/questions/128560/when-do-i-use-the-php-constant-php-eol – Richard

답변

3

RTF 형식의 각 섹션은 콧수염에 싸여 있습니다. "서식"은 처음에 배치됩니다. 따라서 무언가를 굵게 만들려면 {\b hey, this text is bold}

"나"와 "너"를 별도의 줄에 출력하려면 {\pard\par}을 입력하거나 자신의 단락을 만들 수 있습니다. {\pard me \par}{\pard you \par}

내 생각에, 당신은 간단하게 \line을 넣을 수 있습니다. RTF가 재미 있지 않습니까?

얼마 전 나는 library for outputting RTF이라고 썼습니다. 내 "형식"기능이 유용 할 수 있습니다. 기본적으로 텍스트에 많은 속성을 제공하고 RTF로 출력합니다. 이것은 AS3이지만 PHP로 변환하는 데는 꽤 시간이 걸립니다.

+0

감사를 사용하여 시도하고 나는 그들을 시도 모두,하지만 2 줄을 가지고있는 코드 : $ name = "me". "{\ pard \ par}". "당신"; –

+0

\ pard 및 \ par 명령이 작동했습니다. 그리고 고마워, 나는 \ line, \ n, \ r과 다른 것들을 잔뜩 시도했다. 다시 한번 감사드립니다. – Maximus

1

콘텐츠 유형과 관련이있을 수 있습니다. application/mswordapplication/rtf으로 바꿉니다. 그러면 연결된 RTF 응용 프로그램이 올바른 MIME 유형을 기반으로 렌더링 할 것입니다.

지금 내 서버에서이 작업을 시도했지만 Word에서 줄 바꿈만으로 잘 렌더링되었습니다.

관련 문제