Ignore:
Timestamp:
2018-07-13T20:40:24+12:00 (6 years ago)
Author:
ak19
Message:

First of the commits to do with restructuring and refactoring the PDFPlugin. 1. Introducing PDFv1Plugin.pm, which only runs the old pdftohtml. pdfbox_conversion are moved into PDFv2Plugin. 2. In the meantime we still have PDFPlugin, the current state of the plugin, for backward compatibility: it uses both the old pdftohtml tool and still has the pdfbox_conversion option. Yet to introduced the PDFv2Plugin. 3. gsConvert.pl has the new flag pdf_tool, set/passed in by PDFPlugin.pm and all PDFPlugin classes hereafter. The pdf_tool flag can be set to pdftohtml, xpdftools or pdfbox. PDFv1Plugin will always set it to pdftohtml, to denote the old pdftohtml tool is to be used, whereas PDFv2Plugin will set it to xpdftools and PDFBoxConverter sets it for symmetry's sake to pdfbox, even though being an AutoLoadConverter at present, the PDFBoxConverter class bypasses gsConvert.pl. gsConvert.pl uses the pdf_tool flag to determine which tool is to be used to do the conversion to produce the selected output_type. 4. Added some strings. One for migrating users to indicate that PDFPlugin was being deprecated in favour of the PDFv1 and PDFv2 plugins. Another was referenced by CommonUntil, and more recently by PDFPlugin, but was not defined in strings.properties. Once PDFv2Plugin has been added, need to remove references to paged_html from PDFPlugin.

Location:
main/trunk/greenstone2/perllib
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/plugins/PDFPlugin.pm

    r32224 r32273  
    140140    $self->{'file_type'} = "PDF";
    141141
     142    # PDFPlugin is deprecated and migrating users should hereafter choose between
     143    # PDFv1Plugin, if they want to use the old pdftohtml tool's capabilities,
     144    # and PDFv2Plugin, if they want to use pdfbox or the new xpdftools capabilities.
     145    &gsprintf::gsprintf(STDERR, "{PDFPlugin.deprecated_plugin}");
     146   
    142147    # these are passed through to gsConvert.pl by ConvertBinaryFile.pm
    143148    my $zoom = $self->{"zoom"};
    144     $self->{'convert_options'} = "-pdf_zoom $zoom";
     149    # By default, PDFPlugin assumes gsConvert.pl will run the old pdftohtml conversion tool,
     150    # But if pdfbox conversion is turned on, the tool used is pdfbox (which is presently an
     151    # AutoLoadConverter and therefore bypasses gsConvert.pl)
     152    $self->{'convert_options'} = "-pdf_tool pdftohtml";
     153    $self->{'convert_options'} .= " -pdf_zoom $zoom";
    145154    $self->{'convert_options'} .= " -pdf_complex" if $self->{"complex"};
    146155    $self->{'convert_options'} .= " -pdf_nohidden" if $self->{"nohidden"};
     
    151160    # TODO: Start supporting PDF to txt on Windows if we're going to be using XPDF Tools (incl pdftotext) on Windows/Linux/Mac
    152161    if ($self->{'convert_to'} eq "text" && $ENV{'GSDLOS'} =~ /^windows$/i) {
    153         print STDERR "On Windows, Greenstone now uses Xpdf tools to support pdf to text conversion.\n";
    154     #print STDERR "Windows does not support pdf to text. PDFs will be converted to HTML instead\n";
    155     #$self->{'convert_to'} = "html";
     162    #print STDERR "On Windows, Greenstone now uses Xpdf tools to support pdf to text conversion.\n";
     163    print STDERR "Windows does not support pdf to text. PDFs will be converted to HTML instead\n";
     164    $self->{'convert_to'} = "html";
    156165    }
    157166    elsif ($self->{'convert_to'} eq "auto") {
     
    407416    # Copying file open/close code from CommonUtil::utf8_write_file()
    408417    if (!open (OUTFILE, ">:utf8", $output_filename)) {
    409     gsprintf(STDERR, "PDFPlugin::xpdftohtml_convert_post_process {ConvertToPlug.could_not_open_for_writing} ($!)\n", $output_filename);
     418    gsprintf(STDERR, "PDFPlugin::xpdftohtml_convert_post_process {CommonUtil.could_not_open_for_writing} ($!)\n", $output_filename);
    410419    die "\n";
    411420    }
  • main/trunk/greenstone2/perllib/strings.properties

    r32222 r32273  
    809809CommonUtil.block_exp:Files matching this regular expression will be blocked from being passed to any later plugins in the list.
    810810
     811CommonUtil.could_not_open_for_writing:could not open %s for writing
     812
    811813CommonUtil.desc:Base Utility plugin class that handles filename encoding and file blocking.
    812814
     
    11651167PDFPlugin.convert_to.paged_html:A series of HTML pages, one for each page. Each HTML page contains selectable text positionally overlaid on top of a screenshot of the PDF page background comprising any images, tables and drawings.
    11661168
    1167 PDFPlugin.desc:Plugin that processes PDF documents.
     1169PDFPlugin.deprecated_plugin:*************IMPORTANT******************\nPDFPlugin is being deprecated.\nConsider upgrading to the recommended PDFv2Plugin, which supports newer versions of PDFs.\nAlternatively, if you wish to retain the old style of conversion and are NOT relying on PDFBox,\nchange to PDFv1Plugin.\nIf you are using PDFBox then upgrade to PDFv2Plugin.\n*****************************************\n
     1170
     1171PDFPlugin.desc:Plugin that processes PDF documents using the older pdftohtml tool. Does not support newer PDF versions.
    11681172
    11691173PDFPlugin.nohidden:Prevent pdftohtml from attempting to extract hidden text. This is only useful if the -complex option is also set.
Note: See TracChangeset for help on using the changeset viewer.