HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [hylafax-users] pdfs...



Hello, 
In response so that Lee said, for the company I needed for an electronic
management for documents, of document to format pdf.  For that I wrote a
script in Perl which precisely converted the received fax of format tiff
to the format PS and format pd.
the file PS is intended for the edition on a printer and file pdf for
the electronic management of documents. 
 it is enough to modify script for another use. 
 Here for my small contribution.

Of which here script

#!/usr/bin/perl
#
#
#
#
#
#
#
require "bin/call_date";

use File::Copy;

$sendmail = "|/usr/sbin/sendmail";

$Path_image =
"/archives/fax/".substr($date,4,2).substr($date,6,2).substr($date,2,2).substr($date,0,2)."/";


      open( STDERR ,"|logger -itfaxrcvd")
         ||die "$0\[$$]: cannot open  logger $!\n";

           if (@ARGV > 0){

               $FILE = $ARGV[0];
               $DEVICE = $ARGV[1];
               $COMMID = $ARGV[2];
               $MSG = $ARGV[3];
               $CIDNUMBER = $ARGV[4];
               $CIDNAME = $ARGV[5];
            }
            else{
               print STDERR "Error not argument Transmitted to
Faxrcvd\n";
            exit;
            }

           open(ETCSETUP,"./etc/setup.cache")
             ||die "$0\[$$]: cannot open  etc/setup.cache $!\n";

               @setup = <ETCSETUP>;

           close(ETCSETUP);

           foreach $line (@setup){

            ($name,$value) = split(/=/,$line);

            $Item {$name} = $value;
            $Item {$name} =~ s/'//;
            $Item {$name} =~ s/'//;
            }

        chop ($Item{"TIFFBIN"});



        $fax2ps = $Item{"TIFFBIN"}."/fax2ps";
        $tiff2ps = $Item{"TIFFBIN"}."/tiff2ps";
        $ps2pdf = "/usr/bin/ps2pdf12";
        $tiffinfo = $Item{"TIFFBIN"}."/tiffinfo";

        $Lprinter_Lx = "lexmark";
        $Lprinter_Ir = "ir2200";
        $Lprinter_Epson = "Epson_C82";
	$Lprinter_HP5550 = "HP-5550";

         if ( $MSG) {

            $Message = "The received document could not be
delivered".$DEVICE." following ".$MSG;
            &send_mail;
            exit;

	  }



#------------- On cree le repertoire du jour s'il n'existe pas

          if (open(DIR,$Path_image)){

            &convert_ps;

	    }
            else{
                 mkdir($Path_image , 0744);
                 system("chmod 0777 ". $Path_image);
                 &convert_ps;
            }

exit;

sub convert_ps{


     ($file,$dummy) = split(/\./,$FILE);

     ($dummy,$file) = split(/\//,$file);


     $Nro_File = substr($file,3);
     $file = $Path_image.$file;




     $Info_File = "./tmp/Info_".$$;

        system("./bin/fax_convert ./$FILE >$Info_File");

        open(C,"$Info_File");
        @INFO = <C>;
        close(C);


     foreach $Param (@INFO){

        ($parametre,$value) = split(/=/,$Param);
         chop($value);
         $PARAM{"$parametre"} = $value;
      }

       system("$tiff2ps -a1 -O". $file.".ps ".$FILE." 2>/dev/null");


       &Include_Fax_Number(@bytes);

             if ($DEVICE eq "ttyS10"){
		      $Lprinter = $Lprinter_Epson;
              }
	      elsif ($DEVICE eq "ttyS7"){
		      $Lprinter = $Lprinter_HP5550;
	      }
	      else{
		      $Lprinter = $Lprinter_Lx;
	      }

	      system("/usr/bin/lpr-cups -P".$Lprinter." ".$file."_.ps"."\n");

       system("$ps2pdf -g".$PARAM{'GW'}."\\"."x".$PARAM{'GL'}."
-r".$PARAM{'RW'}."\\"."x".$PARAM{'RL'}." ".$file."_.ps"."
".$file.".pdf");

       system("chmod -R 777 $file.pdf");
       system("rm -f $Info_File $file.ps $file"."_.ps");
}

sub send_mail{

$DATA{'subject'}="Document reçu en Fax";
$DATA{'receiv'}="sopamii"."\@"."sopamii.fr";
$DATA{'mailaddr'}="Agent de Reception du Fax";
$boundary = $$;

         open( MAIL, "$sendmail ".$DATA{'receiv'} )
             ||die "$0\[$$]: ne peut ouvrir sendmail:
".$DATA{'receiv'}.": $!\n";

         print MAIL "Subject: $DATA{ 'subject' }\n";
         print MAIL "From:$DATA{'mailaddr'}";
         print MAIL "Reply-to:$DATA{'mailaddr'}\n";
	 print MAIL "To: ".$DATA{'receiv'}."\n";
	 print MAIL "MIME-Version: 1.0"."\n";
	 print MAIL "Content-Type: multipart/mixed;"."\n";
	 print MAIL " boundary="."\"".$boundary."\""."\r\n";
	 print MAIL "--".$boundary."\n";
	 print MAIL "Content-Type: text/plain; charset="."us-ascii"."\n";
	 print MAIL "Content-Transfer-Encoding: 8bit"."\r\n\r\n";
         print MAIL $Message."\r\n";
	 print MAIL "--".$boundary."\n";
}

sub Include_Fax_Number {

         my (@Mbytes) = @_;


           open(FAX_TMP,">$file"."_.ps");
           open(FAXPS,"$file".".ps");

$Quit = 0;
$Image_Find = 0;
$End_Of_Page = 1;

          while ( !($Quit) ){

	     if (!($Image_Find)) {
                  &Search_Entete;
               }
	     elsif (!($End_Of_Page)){
                  &Search_Page(@bytes);
		}

	  }
}
sub  Search_Entete{

           $line = <FAXPS>;
           while (substr($line,0,5) ne "image"  &&  substr($line,0,5) ne
"%%EOF"){

	     if (substr($line,0,11) eq "%ImageData:"){

                ($dumm1y,$dummy2,$format) =split(/ /,$line);

		    if (substr($format,0,1) < "2" ){

                        $type_code = "1";
                        ## require
                        require "bin/convert_Nro.pl";
		      }
                    else {
                        $type_code = "2";
                        ## require
                        require "bin/convert_Nro.pl";
                      }
	      }

              print FAX_TMP ($line);
              $line = <FAXPS>;

	    }

              print FAX_TMP ($line);
	   if (substr($line,0,5) eq "%%EOF"){
            $Image_Find = 1;
            $End_Of_Page = 1;
            $Quit = 1;
	    }
            else {
                  $Image_Find = 1;
                  $End_Of_Page = 0;

            }


}

sub Search_Page{
              my (@bytes) = @_;

$line_find = "";
$Index_Line = 0;
$Ok_Valid = 0;
$line_OK = "";
$Number_Read = 0;

            $line = <FAXPS>;
            chop($line);

            while (substr($line,0,3) ne "end"){

                  $line_find = $line_find.$line;

                 if (length($line_find) >"432")
                  {

                     $line_OK = substr($line_find,0,432);
                     $line_find = substr($line_find,432);

                     if ($Number_Read > "100")
                      {

                        while ($Index_Line <= $number_line &&
!($Ok_Valid))
                         {

                               substr($line_OK,$index_run,$index_lenght)
= $bytes[$Index_Line];

                               $Ok_Valid = 1;
                               $Index_Line = $Index_Line + 1;
		         }

                         $Ok_Valid = 0;
		      }
                     $Number_Read = $Number_Read + 1;
                     print FAX_TMP ($line_OK."\n");
		   }
                  $line = <FAXPS>;
                  chop($line);
		}

		  if(substr($line,0,3) eq "end"){
                    if (length($line_find) != "0"){
                      print FAX_TMP ($line_find."\n");
		    }
		  }
	
print FAX_TMP ($line."\n");
$End_Of_Page = 1;
$Image_Find = 0;

}


Le mar 09/08/2005 à 16:04, Lee Howard a écrit :
> Samir Faci wrote:
> 
> >I Want to have hylafax receive faxes by default in pdf format.  Is there 
> >anyway to do that?  I know I can setup FaxDispatch to email the files as 
> >pdfs.  But is there any way to have hylafax receive the files by default in 
> >pdf format? 
> >  
> >
> 
> No.  Fax communication commonly uses MH, MR, and MMR image data 
> compression formats.  Although it is true that you can put a PDF wrapper 
> around these, the "native" format of these compression types is 
> generally considered to be TIFF, although some other fax applications 
> will actually store these data formats "raw" onto disk.
> 
> Some HylaFAX features also depend on the TIFF tags that are stored in 
> the image files themselves, and although this information could (in 
> theory) be stored in a PDF, HylaFAX currently has no way to glean that 
> data from PDF markers, and no TIFF-to-PDF converter has been taught to 
> take the TIFF tag information and to store it in PDF markers.
> 
> So you *could* convert the files in the recvq from TIFF to PDF with 
> FaxDispatch, but you'd lose some valuable information from the TIFF 
> files and some parts of HylaFAX may not subsequently function as expected.
> 
> Lee.
> 
> ____________________ HylaFAX(tm) Users Mailing List _______________________
>   To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi
>  On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null
>   *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*
> 
> 


____________________ HylaFAX(tm) Users Mailing List _______________________
  To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi
 On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null
  *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*




Project hosted by iFAX Solutions