drupal生成fpdf文件

时间:2015-09-08 11:45:12

标签: pdf drupal fpdf

我创建了基于drupal 7的网站,其中包含生成pdf的模块 - 我使用的是fpdf库。 我不知道如何制作表格将一些数据发送到节点,其中我有生成pdf的PHP代码。 此外,我仍然收到错误消息:

FPDF error: Some data has already been output, can't send PDF file (output started at Z:\xampp\htdocs\domain\includes\common.inc:2748)

我找到了:

ob_flush();

当我尝试将其更改为

ob_clean()

所有节点都生成pdf:/

1 个答案:

答案 0 :(得分:0)

您可以尝试使用其他简单的模块 - pdf_using_mpdf 使用此模块,您可以获取调用www.YOUR_SITE.DOMAIN / node / NID_ID / pdf的某个节点的PDF - 其中NID_ID是您要呈现为PDF的节点的ID。

或者你也可以使用hook_menu()如果你需要只渲染节点的某些字段作为PDF - 添加你的项目

$items['%node/create_pdf'] = array(
   'title' => '',
   'description' => '',
   'page callback' => 'custom_callback_create_pdf',
   'page arguments' => array(1),
   'access callback' => 'node_access',
   'type' => MENU_CALLBACK,
  );

将回调定义为

function custom_callback_create_pdf($node) {
  // Check if current node has needed field.
  if (isset($node->field_my_custom_field_of_node)) {
  // Render only field 'field_my_custom_field_of_node';
    $view = node_view($node);
    $output = render($view['field_my_custom_field_of_node']);
    return pdf_using_mpdf_api($output, $node->title);
  }
  else {
    return pdf_using_mpdf_api("<html><body>Current page do not required field.</body></html>", $node->title);
  }
}

和打印按钮下载:

$pdf_button = l(t('Download as PDF'), 'node/' . $node->nid . '/create_pdf', array(
    'attributes' => array(
      'target' => '_blank',
      'class' => array('render_as_pdf'),
    ),
  ));
  echo '<p>' . $pdf_button . '</p>';