pdf_reader.module in PDF Reader 7.2
Same filename and directory in other branches
pdf reader module file.
File
pdf_reader.moduleView source
<?php
/**
* @file
* pdf reader module file.
*/
/**
* Implements hook_permission().
*/
function pdf_reader_permission() {
return array(
'administer pdf reader' => array(
'title' => t('Administer PDF Reader'),
'description' => t('Perform maintenance tasks for PDF Reader'),
),
'download pdf files' => array(
'title' => t('Download PDF files'),
'description' => t('Allow to download PDF files'),
),
);
}
/**
* Implement hook_field_formatter_info().
*/
function pdf_reader_field_formatter_info() {
return array(
'pdf_reader_file' => array(
'label' => t('PDF Reader'),
'field types' => array(
'file',
'text',
),
'settings' => array(
'pdf_width' => 600,
'pdf_height' => 780,
'renderer' => 'google',
'download' => FALSE,
'colorbox' => FALSE,
'colorbox_link_text' => '',
'link_placement' => 'top',
),
),
);
}
/**
* Implements hook_libraries_info().
*/
function pdf_reader_libraries_info() {
$libraries = array();
$libraries['pdf.js'] = array(
'name' => 'pdf.js',
'vendor url' => 'http://mozilla.github.io/pdf.js/',
'download url' => 'http://mozilla.github.io/pdf.js/getting_started/#download',
'version arguments' => array(
'file' => 'build/pdf.js',
'pattern' => '/ersion\\s=\\s\'(.*)\'/',
'lines' => 32,
),
'files' => array(
'js' => array(
'build/pdf.js',
),
),
'variants' => array(
'viewer' => array(
'files' => array(
'js' => array(
'build/pdf.js',
'web/viewer.js',
),
),
),
// DEV.
'textlayer' => array(
'files' => array(
'js' => array(
'build/pdf.js',
'web/pdf_find_bar.js',
'web/pdf_find_controller.js',
'web/ui_utils.js',
'web/text_layer_builder.js',
),
),
),
),
);
return $libraries;
}
/**
* Implements hook_field_formatter_settings_form().
*/
function pdf_reader_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$element['pdf_width'] = array(
'#title' => t('Width'),
'#type' => 'textfield',
'#default_value' => $settings['pdf_width'],
);
$element['pdf_height'] = array(
'#title' => t('Height'),
'#type' => 'textfield',
'#default_value' => $settings['pdf_height'],
);
$element['renderer'] = array(
'#title' => t('Renderer'),
'#type' => 'select',
'#options' => array(
'google' => t('Google Viewer'),
'ms' => t('MS Viewer'),
'direct' => t('Direct Embed'),
'pdf-js' => t('pdf.js'),
),
'#default_value' => $settings['renderer'],
);
$element['download'] = array(
'#title' => t('Show download link'),
'#type' => 'checkbox',
'#default_value' => $settings['download'],
);
$element['link_placement'] = array(
'#title' => t('Show Link'),
'#type' => 'select',
'#options' => array(
'top' => t('Top'),
'bottom' => t('Bottom'),
),
'#default_value' => $settings['link_placement'],
'#states' => [
'invisible' => [
'input[name="fields[field_filrv_imagr][settings_edit_form][settings][download]"]' => [
'checked' => FALSE,
],
],
],
);
if (module_exists('colorbox')) {
variable_set('colorbox_inline', 1);
}
$element['colorbox'] = array(
'#title' => t('Display in colorbox (colorbox module must be installed).'),
'#type' => 'checkbox',
'#disabled' => !module_exists('colorbox'),
'#default_value' => $settings['colorbox'],
);
$element['colorbox_link_text'] = array(
'#title' => t('Colorbox link'),
'#type' => 'textfield',
'#disabled' => !module_exists('colorbox'),
'#default_value' => $settings['colorbox_link_text'],
);
return $element;
}
/**
* Implements hook_field_formatter_settings_summary().
*/
function pdf_reader_field_formatter_settings_summary($field, $instance, $view_mode) {
$renderers = array(
'google' => 'Google Viewer',
'direct' => 'Direct Embed',
'ms' => 'MS Viewer',
'pdf-js' => 'pdf.js',
);
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$summary = 'Size: ' . $settings['pdf_width'] . 'x' . $settings['pdf_height'] . ' Using: ' . $renderers[$settings['renderer']] . '<br> Download Link: ' . ($settings['download'] == 1 ? 'YES' : 'NO') . ' Use colorbox: ' . ($settings['colorbox'] == 1 ? 'YES' : 'NO') . ' Colorbox link text: ' . $settings['colorbox_link_text'];
return $summary;
}
/**
* Implements hook_field_formatter_view().
*/
function pdf_reader_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$settings = $display['settings'];
$element = array();
switch ($display['type']) {
case 'pdf_reader_file':
foreach ($items as $delta => $item) {
$element[$delta]['#type'] = 'markup';
$element[$delta]['#markup'] = theme('pdf_reader', array(
'file' => $item,
'settings' => $settings,
));
}
break;
}
return $element;
}
/**
* Implements hook_theme().
*
* Use our theme function.
*/
function pdf_reader_theme($existing, $type, $theme, $path) {
return array(
'pdf_reader' => array(
'variables' => array(
'file' => NULL,
'settings' => NULL,
),
),
'pdf_js' => array(
'variables' => array(
'file' => NULL,
'settings' => NULL,
),
),
);
}
/**
* Theme the field with pdf reader
*/
function theme_pdf_reader($variables) {
$file_url = isset($variables['file']['uri']) ? file_create_url($variables['file']['uri']) : $variables['file']['value'];
switch ($variables['settings']['renderer']) {
case 'google':
$output = '<iframe id="pdf_reader" src="//docs.google.com/viewer?embedded=true&url=' . urlencode($file_url) . '" width="' . $variables['settings']['pdf_width'] . '" height="' . $variables['settings']['pdf_height'] . '" scrolling="no' . '" style="border: none;"></iframe>';
break;
case 'ms':
$output = '<iframe id="pdf_reader" src="https://view.officeapps.live.com/op/embed.aspx?src=' . urlencode($file_url) . '" width="' . $variables['settings']['pdf_width'] . '" height="' . $variables['settings']['pdf_height'] . '" scrolling="no' . '" style="border: none;"></iframe>';
break;
case 'direct':
$download_link = '';
if (user_access('download pdf files')) {
$download_link = t('or') . ' ' . l(t('click here to download the PDF file.'), $file_url);
}
$output = '<object id="pdf_reader" data="' . $file_url . '#view=Fit' . '" ' . 'type="application/pdf' . '" ' . 'width="' . $variables['settings']['pdf_width'] . '" ' . 'height="' . $variables['settings']['pdf_height'] . '">' . '<embed src="' . $file_url . '#view=Fit' . '"' . 'width="' . $variables['settings']['pdf_width'] . '" ' . 'height="' . $variables['settings']['pdf_height'] . '" ' . 'type="application/pdf">' . '<p>' . t('It appears your Web browser is not configured to display PDF files. ') . l(t('Download adobe Acrobat '), 'http://www.adobe.com/products/reader.html') . ' ' . $download_link . '</p>' . '</embed></object>';
break;
case 'pdf-js':
$output = theme('pdf_js', array(
'file' => $variables['file'],
'settings' => $variables['settings'],
));
break;
}
if ($variables['settings']['download'] == TRUE && user_access('download pdf files')) {
$path = drupal_get_path('module', 'pdf_reader');
if ($variables['settings']['link_placement'] == 'top' && !empty($variables['settings']['link_placement'])) {
$top = l(t('Click here to download the PDF file.'), $file_url, array(
'attributes' => array(
'class' => 'pdf-reader-download-link',
),
));
$output = $top . $output;
}
else {
$output .= l(t('Click here to download the PDF file.'), $file_url, array(
'attributes' => array(
'class' => 'pdf-reader-download-link',
),
));
}
drupal_add_css("{$path}/css/pdf_reader-viewer.css");
}
if ($variables['settings']['colorbox'] == TRUE) {
$html = $output;
$options = array(
'attributes' => array(
'class' => array(
'colorbox-inline',
'show',
),
),
'query' => array(
'width' => $variables['settings']['pdf_width'],
'height' => $variables['settings']['pdf_height'],
'inline' => 'true',
),
'fragment' => 'pdf_reader',
);
$output = l(t($variables['settings']['colorbox_link_text']), $file_url, $options);
$output .= '<div style="display:none">' . $html . '</div>';
}
return $output;
}
function theme_pdf_js($variables) {
$library = libraries_load('pdf.js');
if ($library['loaded'] == FALSE) {
drupal_set_message($library['error message'], 'error');
return 'Please download and install ' . l($library['name'], $library['download url']) . '!';
}
$file_url = isset($variables['file']['uri']) ? file_create_url($variables['file']['uri']) : $variables['file']['value'];
$library_path = libraries_get_path('pdf.js');
$iframe_src = file_create_url($library_path . '/web/viewer.html') . '?file=' . rawurlencode($file_url);
$html = array(
'#type' => 'html_tag',
'#tag' => 'iframe',
'#value' => $file_url,
'#attributes' => array(
'class' => array(
'pdf-reader',
),
'webkitallowfullscreen' => '',
'mozallowfullscreen' => '',
'allowfullscreen' => '',
'frameborder' => 'no',
'width' => $variables['settings']['pdf_width'],
'height' => $variables['settings']['pdf_height'],
'src' => $iframe_src,
'data-src' => $file_url,
),
);
return render($html);
}
Functions
Name![]() |
Description |
---|---|
pdf_reader_field_formatter_info | Implement hook_field_formatter_info(). |
pdf_reader_field_formatter_settings_form | Implements hook_field_formatter_settings_form(). |
pdf_reader_field_formatter_settings_summary | Implements hook_field_formatter_settings_summary(). |
pdf_reader_field_formatter_view | Implements hook_field_formatter_view(). |
pdf_reader_libraries_info | Implements hook_libraries_info(). |
pdf_reader_permission | Implements hook_permission(). |
pdf_reader_theme | Implements hook_theme(). |
theme_pdf_js | |
theme_pdf_reader | Theme the field with pdf reader |