Exemple #1
0
 /**
  * Calls the wkhtmltopdf executable to generate a PDF.
  *
  * @param \DOMDocument                        $structure      Structure source
  *     use as basis for the transformation.
  * @param \phpDocumentor\Transformer\Transformation $transformation Transformation
  *     that supplies the meta-data for this writer.
  *
  * @return void
  */
 public function transform(\DOMDocument $structure, \phpDocumentor\Transformer\Transformation $transformation)
 {
     $artifact = $transformation->getTransformer()->getTarget() . DIRECTORY_SEPARATOR . $transformation->getArtifact();
     $transformation->setArtifact($artifact);
     $source = substr($transformation->getSource(), 0, 1) != DIRECTORY_SEPARATOR ? $transformation->getTransformer()->getTarget() . DIRECTORY_SEPARATOR . $transformation->getSource() : $transformation->getSource();
     $transformation->setSource($source);
     $options = '';
     if ($transformation->getParameter('toc', 'false') == 'true') {
         $options = ' toc ';
     }
     // TODO: add parameter to provide a cover HTML
     // TODO: add a parameter to provide a header HTML
     // TODO: add a parameter to provide a footer HTML
     // first try if there is a wkhtmltopdf in the global path, this helps
     // windows users
     exec('wkhtmltopdf ' . $options . ' ' . $transformation->getSource() . ' ' . $transformation->getArtifact() . ' 2>&1', $output, $error);
     $output = implode(PHP_EOL, $output);
     // this notice is linux specific; if it is found no global wkhtmltopdf
     // was installed; try the one which is included with phpDocumentor
     if (strpos($output, 'wkhtmltopdf: not found') !== false) {
         // TODO: replace the below with a decent way to find the executable
         exec(dirname(__FILE__) . '/../../../src/wkhtmltopdf/wkhtmltopdf-i386 ' . $options . ' ' . $transformation->getSource() . ' ' . $transformation->getArtifact() . ' 2>&1', $output, $error);
         $output = implode(PHP_EOL, $output) . PHP_EOL;
     }
     // log message and output
     $this->log('Generating PDF file ' . $transformation->getArtifact() . ' from ' . $transformation->getSource());
     $this->log($output, $error == 0 ? \phpDocumentor\Plugin\Core\Log::INFO : \phpDocumentor\Plugin\Core\Log::CRIT);
     // CRASH!
     if ($error != 0) {
         throw new \phpDocumentor\Plugin\Core\Exception('Conversion to PDF failed, see output for details');
     }
 }
 /**
  * Invokes the query method contained in this class.
  *
  * @param ProjectDescriptor $project        Document containing the structure.
  * @param Transformation    $transformation Transformation to execute.
  *
  * @throws \InvalidArgumentException if the query is not supported.
  *
  * @return void
  */
 public function transform(ProjectDescriptor $project, Transformation $transformation)
 {
     $artifact = $transformation->getTransformer()->getTarget() . DIRECTORY_SEPARATOR . $transformation->getArtifact();
     $transformation->setArtifact($artifact);
     $method = 'executeQuery' . ucfirst($transformation->getQuery());
     if (!method_exists($this, $method)) {
         throw new \InvalidArgumentException('The query ' . $method . ' is not supported by the FileIo writer, supported operation is "copy"');
     }
     $this->{$method}($transformation);
 }