public function run() { extract($this->_params, EXTR_REFS); $driver = $GLOBALS['injector']->getInstance('Jonah_Driver'); if (!$story_id) { try { $story_id = $GLOBALS['injector']->getInstance('Jonah_Driver')->getLatestStoryId($channel_id); } catch (Exception $e) { $this->_exit($e->getMessage()); } } try { $story = $driver->getStory($story_id, !$browser->isRobot()); } catch (Exception $e) { $this->_exit($e->getMessage()); } // Convert the body from HTML to text if necessary. if (!empty($story['body_type']) && $story['body_type'] == 'richtext') { $story['body'] = $GLOBALS['injector']->getInstance('Horde_Core_Factory_TextFilter')->filter($story['body'], 'html2text'); } // Set up the PDF object. $pdf = new Horde_Pdf_Writer(array('format' => 'Letter', 'unit' => 'pt')); $pdf->setMargins(50, 50); // Enable automatic page breaks. $pdf->setAutoPageBreak(true, 50); // Start the document. $pdf->open(); // Start a page. $pdf->addPage(); // Publication date. if (!empty($story['published_date'])) { $pdf->setFont('Times', 'B', 14); $pdf->cell(0, 14, $story['published_date'], 0, 1); $pdf->newLine(10); } // Write the header in Times 24 Bold. $pdf->setFont('Times', 'B', 24); $pdf->multiCell(0, 24, $story['title'], 'B', 1); $pdf->newLine(20); // Write the story body in Times 14. $pdf->setFont('Times', '', 14); $pdf->write(14, $story['body']); // Output the generated PDF. $browser->downloadHeaders($story['title'] . '.pdf', 'application/pdf'); echo $pdf->getOutput(); }
} /* If the requested note doesn't exist, display an error message. */ if (!$note || !isset($note['memo_id'])) { $notification->push(_("Note not found."), 'horde.error'); Horde::url('list.php', true)->redirect(); } /* Let's assume that the note content can be converted to ISO-8859-1 if this * is the current language's charset, as long as we don't have UTF-8 support * in Horde_Pdf. */ if ($GLOBALS['registry']->getLanguageCharset() == 'ISO-8859-1') { $note = Horde_String::convertCharset($note, 'UTF-8', 'ISO-8859-1'); } /* Set up the PDF object. */ $pdf = new Horde_Pdf_Writer(array('format' => 'Letter', 'unit' => 'pt')); $pdf->setMargins(50, 50); /* Enable automatic page breaks. */ $pdf->setAutoPageBreak(true, 50); /* Start the document. */ $pdf->open(); /* Start a page. */ $pdf->addPage(); /* Write the header in Times 24 Bold. */ $pdf->setFont('Times', 'B', 24); $pdf->multiCell(0, 24, $note['desc'], 'B', 1); $pdf->newLine(20); /* Write the note body in Times 14. */ $pdf->setFont('Times', '', 14); $pdf->write(14, $note['body']); /* Output the generated PDF. */ $browser->downloadHeaders($note['desc'] . '.pdf', 'application/pdf'); echo $pdf->getOutput();
/** * Horde Bug #5964 */ public function testLinks() { $pdf = new Horde_Pdf_Writer(array('orientation' => 'P', 'format' => 'A4')); $pdf->setInfo('CreationDate', $this->fixtureCreationDate()); $pdf->open(); $pdf->setCompression(false); $pdf->addPage(); $pdf->setFont('Helvetica', 'U', 12); $pdf->write(15, 'Horde', 'http://www.horde.org'); $pdf->write(15, "\n"); $link = $pdf->addLink(); $pdf->write(15, 'here', $link); $pdf->addPage(); $pdf->setLink($link); $pdf->image(__DIR__ . '/fixtures/horde-power1.png', 15, 15, 0, 0, '', 'http://pear.horde.org/'); $actual = $pdf->getOutput(); $expected = $this->fixture('links'); $this->assertEquals($expected, $actual); }