Я хочу иметь возможность передать идентификатор узла в путь и создать файл RTF. У меня проблемы с загрузкой библиотеки. Я использую метод библиотек 2. Ошибка:
PHP Fatal error: Class 'PHPRtfLite' not found in [redacted]/sites/all/modules/custom/ain_export/ain_export.module on line 22 request_id="245a0131-9519-4fa9-a512-3b60d0b91ad8"
Поэтому я убедился, что файлы находятся там, где они должны быть. В моем каталоге / sites / all / library у меня есть папка phprtflite, настроенная так:
-- phprtflite
----PHPRtfLite.php
Ниже мой код, теперь отредактированный в соответствии с комментарием ниже, чтобы загрузить библиотеку внутри моего обратного вызова. Я все еще получаю сообщение об ошибке, за исключением того, что теперь в строке 41. Кажется, не загружается библиотека?
<?php
/**
* Implements hook_libraries_info().
*/
function ain_export_libraries_info() {
$libraries['phprtflite'] = array(
'name' => 'PHPRtfLite',
'vendor url' => 'http://sourceforge.net/projects/phprtf/',
'download url' => 'http://sourceforge.net/projects/phprtf/',
'files' => array(
'php' => array('PHPRtfLite.php'),
),
);
return $libraries;
}/**
* Implements hook_menu().
*/
function ain_export_menu() {
$items = array();
$items['admin/ain_export/%'] = array(
'title' => 'Export Node',
'page callback' => 'ain_export_page',
'page arguments' => array(2),
'access arguments' => array('access administration pages'),
);
return $items;
}
// spit out node
function ain_export_page($nid) {
// load library
libraries_load('phprtflite');
// register PHPRtfLite class loader
PHPRtfLite::registerAutoloader();
if (isset($nid) ) {
try {
$rtf = new PHPRtfLite();
// set page properties
$rtf->setMargins(2.54, 2.54, 2.54, 2.54);
$rtf->setPaperFormat(PHPRtfLite::PAPER_LETTER);
// define fonts
$fontH1 = new PHPRtfLite_Font(16, 'Arial', '#000000');
$fontH2 = new PHPRtfLite_Font(14, 'Arial', '#000000');
$fontP = new PHPRtfLite_Font(12, 'Arial', '#000000');
// vertical space
$formatH1 = new PHPRtfLite_ParFormat();
$formatH1->setSpaceAfter(8);
$formatH2 = new PHPRtfLite_ParFormat();
$formatH2->setSpaceAfter(6);
$formatP = new PHPRtfLite_ParFormat();
$formatP->setSpaceAfter(3);
// page content
$node = node_load($nid); // load the node
// headline
$section = $rtf->AddSection();
$section->writeText($node->title, $fontH1, $formatH1);// output file
$rtf->SendRtf( $nid . '.rtf' );} catch (Exception $e) {
$error = $e->getMessage();
}
}
}
Задача ещё не решена.
Других решений пока нет …