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.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