PHP и FPDF - sprintf не работи с данни в определени комбинации

Имам проблем със следния код. Искам да използвам съдържанието (взето от някои полета на Community Builder) за отпечатване на етикети за пликове.

Първият ред на етикета ще съдържа заглавие, собствено име и фамилия на абоната и това работи добре. Получавам PDF с точно необходимата информация.

Втората линия е мястото, където нещата започват да вървят крушовидно. Веднага щом се опитам да включа $faculty в ред 2 вместо празния низ, който имам там в кода по-долу, PDF генерира изтегляния като 0 байта и Acrobat казва, че това не е поддържан тип файл.

Странно е, че мога да отпечатам $faculty върху етикета, ако не включа и първия ред.

Кодът, с който работя, преди това отпечата същите данни в CSV. Просто ми трябва вместо това, за да отида в PDF.

Някой знае ли защо се случва това и може ли да ме насочи в правилната посока? Има запетаи и други неща в много от полетата, които използвам, но това няма да има никаква разлика, нали?

наздраве!

Забележка за яснота: Този код РАБОТИ. Това, което НЕ РАБОТИ е, когато заменя заданието $lineTwo по-долу с '$lineTwo = sprintf("%s",$faculty);'. Или '$lineTwo = "$faculty");".

foreach($activeSubscribers as $subscriber) {
$title = $subscriber->$fields[0][1];
$firstname = $subscriber->$fields[1][1];
$surname = $subscriber->$fields[2][1];
$faculty = $subscriber->$fields[3][1];          
$institution = $subscriber->$fields[4][1];  
$address1 = $subscriber->$fields[5][1]; 
$address2 = $subscriber->$fields[6][1]; 
$suburb = $subscriber->$fields[7][1]; 
$state = $subscriber->$fields[8][1];        
$postcode = $subscriber->$fields[9][1]; 
$country = $subscriber->$fields[10][1]; 

$lineOne = sprintf("%s %s %s",$title, $firstname, $surname);

$lineTwo = "";              // should have faculty and institution
$lineThree = sprintf("%s",$suburb); // should have address line 1 
$lineFour = "";             // should have address line 2
$lineFive = "";             // should have suburb, state, postcode
$lineSix = "";              // should have country 

person Reb    schedule 24.07.2013    source източник
comment
чудесен! Сега също работя с fpdf. :). И така, искате да създадете pdf формат.. нали? Ако е правилно, уведомете ме за подробностите за вашия код. Горният код не е завършен. Трудно е да се помогне. Ето моят създаден fpdf пример sendspace.com/file/mng1z8   -  person 502_Geek    schedule 24.07.2013
comment
Благодаря! Пълното копие на файла е в gist тук: gist.github.com/anonymous/6068106   -  person Reb    schedule 24.07.2013
comment
Използвам един от примерните скриптове, които предоставят, и надграждам върху него. Примерният скрипт е този: fpdf.org/en/script/script29.php   -  person Reb    schedule 24.07.2013
comment
Техният пример отпечатва един и същ низ към адресния етикет 20 пъти. Използвам кода в същността си, за да получа данни от Community Builder в Joomla и вместо това да го поставя на етикетите.   -  person Reb    schedule 24.07.2013
comment
Значи искаш да кажеш, че първи ред се отпечатва с pdf формат? Когато добавите втори ред, излиза, че не се поддържа формат?   -  person 502_Geek    schedule 24.07.2013
comment
Отпечатва се първи ред (със заглавие, име и фамилия). ако добавя ред три, както по-горе (с предградие), това кара PDF да бъде 0 байта.   -  person Reb    schedule 24.07.2013
comment
Ако премахна първи ред, третият ред се отпечатва добре. Но и двете няма да отпечатат.   -  person Reb    schedule 24.07.2013


Отговори (1)


Мисля, че забравяте да добавите този ред

$text = sprintf("%s\n%s\n%s\n%s", $lineOne, $lineTwo, $lineThree, $lineFour);
$pdf->Add_Label($text);

Ако не искате да използвате sprintf(), можете да отпечатате ред по ред по този начин

$pdf->Add_Label($lineone);
$pdf->Add_Label($linetwo);

Опитайте тази опция

$pdf->Write(0.2,$lineone);
$pdf->Write(0.2,$linetwo);
person 502_Geek    schedule 24.07.2013
comment
$text = sprintf(%s\n%s, $lineOne, $lineThree); Отпечатвайте само в първи и трети ред. Не правете празна стойност на низ в lineone и linetwo. Поставете същата стойност на тези две. - person 502_Geek; 24.07.2013
comment
Да, това е причината за проблема. Когато включа така lineOne и lineThree заедно. - person Reb; 24.07.2013