Index: pdfview.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pdfview/pdfview.module,v
retrieving revision 1.37.2.6
diff -u -F^f -r1.37.2.6 pdfview.module
--- pdfview.module	5 Feb 2007 15:29:42 -0000	1.37.2.6
+++ pdfview.module	5 Feb 2007 18:14:33 -0000
@@ -94,11 +94,10 @@ function pdfview_node_controller() {
  * Renders a node as a PDF file.
  */
 function pdfview_node($node) {
-  $path = drupal_get_path('module', 'pdfview');
-  require_once($path . '/tcpdf/tcpdf.php');
+  pdfview_tcpdf_init();
   
   $pdf = theme('pdfview_pdf');
-   
+
   if ($node->type == 'book') {
     $depth = count(book_location($node)) + 1;
     $pdf = pdfview_book_recurse($pdf, $node, $depth);
@@ -106,26 +105,41 @@ function pdfview_node($node) {
   else {
     $pdf = theme('pdfview_node', $pdf, $node);
   }
-  
+
   return $pdf;
 }
 
+/*
+ * Defines the default constants and includes tcpdf.php
+ */
+function pdfview_tcpdf_init() {
+  define('K_TCPDF_EXTERNAL_CONFIG', TRUE);
+  define('K_PATH_MAIN', dirname(__FILE__)  .'/tcpdf');
+  define('FPDF_FONTPATH', K_PATH_MAIN."/fonts/");
+  define('K_PATH_IMAGES', K_PATH_MAIN."/images/");
+  define('K_BLANK_IMAGE', K_PATH_IMAGES."_blank.png");
+  define("K_CELL_HEIGHT_RATIO", variable_get('pdfview_tcpdf_cell_height_ratio', 1.25));
+  define("K_SMALL_RATIO", variable_get('pdfview_tcpdf_font_small_ratio', 2/3));
+
+  require_once(drupal_get_path('module', 'pdfview') .'/pdfview_tcpdf.inc');
+}
+
 /**
  * Renders a book as a PDF file.
  */
 function pdfview_book_recurse($pdf, &$node, $depth = 10) {
-  if ($node) {            
+  if ($node) {
     $pdf = theme('pdfview_node', $pdf, $node);
 
-    $children = db_query(db_rewrite_sql('SELECT n.nid, n.title, b.weight FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE n.status = 1 AND b.parent = %d AND n.moderate = 0 ORDER BY b.weight, n.title'), $node->nid);  
+    $children = db_query(db_rewrite_sql('SELECT n.nid, n.title, b.weight FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE n.status = 1 AND b.parent = %d AND n.moderate = 0 ORDER BY b.weight, n.title'), $node->nid);
 
     while ($childpage = db_fetch_object($children)) {
       $childnode = node_load($childpage->nid);
       if ($childnode->nid != $node->nid) {
         $pdf = pdfview_book_recurse($pdf, $childnode, $depth + 1);
       }
-    }    
-  }    
+    }
+  }
   return $pdf;
 } 
 
@@ -144,99 +158,25 @@ function pdfview_generate_file(&$pdf, $f
  * @ingroup themeable
  */
 function theme_pdfview_pdf() {
-  $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true);
+  pdfview_tcpdf_init();
+  $pdf = new pdfviewTCPDF(variable_get('pdfview_tcpdf_page_orientation', 'P'), variable_get('pdfview_tcpdf_unit', 'mm'), variable_get('pdfview_tcpdf_page_format', 'A4'), true);
   $pdf->Open();
-  
-  // set margins
-  $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
-  $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
-  $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
-  
-  // set auto page breaks  
-  $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
-  $pdf->AliasNbPages();
-  
-  // set image scale factor
-  $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
-  
-  $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
-  $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
-  
-  return $pdf;
-}
-
-/**
- * Renders PDF output for a node
- * @ingroup themeable
- */
-function theme_pdfview_node(&$pdf, $node) {
-  $pdf->AddPage();
-  
-  $pdf = theme('pdfview_title', $pdf, $node->title);
-  
-  $author = strip_tags(theme('username', $node));
-  $pdf = theme('pdfview_author', $pdf, $author);  
 
-  $pdf = theme('pdfview_published', $pdf, $node->created);
-  
-  if (node_hook($node, 'view')) {
-    node_invoke($node, 'view');
-  }
-  else {
-    $node = node_prepare($node);
-  }
-  node_invoke_nodeapi($node, 'view');
-  $content = drupal_render($node->content);
-
-  $content = pdfview_check_images($content);
-  $pdf->SetFont(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN);
-  $pdf = theme('pdfview_html', $pdf, $content);
-  
-  return $pdf;
-} 
+  // set margins
+  $pdf->SetMargins(variable_get('pdfview_tcpdf_margin_left', 15), variable_get('pdfview_tcpdf_margin_top', 27), variable_get('pdfview_tcpdf_margin_right', 15));
+  $pdf->SetHeaderMargin(variable_get('pdfview_tcpdf_margin_header', 5));
+  $pdf->SetFooterMargin(variable_get('pdfview_tcpdf_margin_footer', 10));
 
-/**
- * Renders a title
- * @ingroup themeable
- */
-function theme_pdfview_title(&$pdf, $title) {
-  $pdf->SetFont(PDF_FONT_NAME_MAIN, 'B',  PDF_FONT_SIZE_MAIN * K_TITLE_MAGNIFICATION);
-  $pdf->SetLineWidth(1);
-  $pdf = theme('pdfview_html', $pdf, $title);
-  $pdf->Ln(5);
-  return $pdf;
-}
+  // set auto page breaks
+  $pdf->SetAutoPageBreak(TRUE, variable_get('pdfview_tcpdf_margin_bottom', 25));
+  $pdf->AliasNbPages();
 
-/**
- * Renders an author line
- * @ingroup themeable
- */
-function theme_pdfview_author(&$pdf, $author) {
-  $pdf->SetFont(PDF_FONT_NAME_MAIN,'BI', PDF_FONT_SIZE_MAIN);
-  $pdf->MultiCell(0, 5, t('By @author', array('@author' => $author)), 0, 'L', 0);
-  return $pdf;
-}
+  // set image scale factor
+  $pdf->setImageScale(variable_get('pdfview_tcpdf_image_scale_ratio', 4));
 
-/**
- * Renders a publication date
- * @ingroup themeable
- */
-function theme_pdfview_published(&$pdf, $timestamp) {
-  $published = format_date($timestamp, 'small');
-  $pdf->SetFont('', '', PDF_FONT_SIZE_MAIN);
-  $pdf->MultiCell(0, 5, t('Published: @date', array('@date' => $published)), 0, 'L', 0);
-  $pdf->Ln(5);
-  return $pdf;
-}
+  $pdf->setHeaderFont(Array(variable_get('pdfview_tcpdf_font_main_name', 'FreeSans'), '', variable_get('pdfview_tcpdf_font_main_size', 10)));
+  $pdf->setFooterFont(Array(variable_get('pdfview_tcpdf_font_data_name', "FreeSerif"), '', variable_get('pdfview_tcpdf_font_data_size', 8)));
 
-/**
- * Renders an HTML string to PDF
- * @ingroup themeable
- */
-function theme_pdfview_html(&$pdf, $html) {
-  foreach (explode("\n", $html) as $one) {
-    $pdf->writeHTML($one);
-  }
   return $pdf;
 }
 
