[Cascavel-pm] Conversao em PDF

Carlos Silva carlos.silva.gyn em gmail.com
Segunda Novembro 7 21:21:16 PST 2005


A parte do sokets funciona normalmente e pagina e baixana no diretorio
passado como parametro, o que nao estou conseguindo fazer e converter em
PDF, as bibliotcas a prinipio foram comatadas propositalemente.
 Nao posso fazer vams programas tem que ser feito tueo em um unico codigo..
 abaixo uma nova parte que aumentei no meu codigo pra fazer a conversao para
txt mas tb nao esta funcionando. Poderia me dar uma maozinha ???
 Obrigadoooo
  Carlos Silva

#!/usr/bin/perl

use IO::Socket;
#use PDF::FromHTML;
#use HTML::Parse;
#use PDF::Template;
#use HTML::Tagset;
#use PDF::Writer;
#use HTML::TreeBuilder;


$count = 0;
$TotalParametros = 0;
$Site = "www.faqs.org <http://www.faqs.org/>";
$HomeUsuario = "/home/vt_integrada_perl"; #diretorio onde vai ser baixado o
arquivo HTML
$NovoDir;
mkdir "/home/vt_integrada_perl"; #cria diretorio home/vt_integrada_perl onde
vai ser baixado as paginas HTML
foreach $arg(@ARGV) {
$count++;
}
if($count==0){
printf("Digite o nome do script e o numero das RFC separadas por espaco\n");
}
else{
$TotalParametros = $count;
}

for($count=0;$count<$TotalParametros;$count++){
$ListaDownloads[$count] = "/rfcs/rfc" . $ARGV[$count] . ".html";
$NovoDir = $HomeUsuario . "/" . $ARGV[$count];
$NovoArquivo = $NovoDir . "/" . $ARGV[$count] . ".html";
mkdir($NovoDir);
&BaixarPagina($ListaDownloads[$count], $NovoArquivo);
$ListaDownloads[$count] = "/rfcs/rfc" . $ARGV[$count] . ".html";
$NovoDir = $HomeUsuario . "/" . $ARGV[$count];
$NovoArquivo = $NovoDir . "/" . $ARGV[$count] . ".html";
# &convertePdf($ListaDownloads[$count], $NovoArquivo);
mkdir($NovoDir);
#perl -pe 's/\<.+?\>//g home/vt_integrada_perl/1020/1020.html;
&sub converte_html_txt



};

sub convert_html_txt converts html to txt with all characters protected
#usage:
#(cd ~/home/vt_integrada_perl/$NovoDir/$NovoArquivo ; ./converte_html_txt.pl
dasherlink1.html > teste.txt)
#( cd ~/website/dasher/english ; ./html2txt.pl converte_html_txt.pl >
teste.txt ) ; make dasherenglish

#eval "\$$1=\$2" while @ARGV && $ARGV[0]=~ /^(\w+)=(.*)/ && shift;

#while(<>){
s/\&/\&amp;/g;
s/\</\&lt;/g;
s/\>/\&gt;/g;
# print;
#}


sub convertePdf {
my $HTML = '/home/vt_integrada_perl/$NovoDir/$NovoArquivo';
my $PDF = '/home/vt_integrada_perl/$NovoDir/$NovoArquivo';
my $FONTE = '/usr/X11R6/lib/X11/fonts/truetype/SUSESans-Roman.ttf';

my $pdf = PDF::FromHTML->new( encoding => 'utf-8' );
$pdf->load_file($HTML);
$pdf->convert(
Font => $FONTE,
LineHeight => 10,
Landscape => 1,
);
$pdf->write_file($PDF);
}
sub BaixarPagina{
my $enderecosite = $_[0];
my $nmarquivo = $_[1];
my $port = "80";
my $strComando = "GET $enderecosite HTTP/1.1\nHost: $Site\nUser-Agent:
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.10) Gecko/20050725\n\n";

print $strComando;
my $sock = new IO::Socket::INET (
PeerAddr => $Site,
PeerPort => $port,
Proto => 'tcp',
);
die "Nao foi possivel conectar... $Site" unless $sock;
$sock->autoflush(1);

print $sock $strComando;

;

my $buf="";
while($line=<$sock>){
$buf.=$line;
}



close($sock);

# print $buf; exibe o conteudo html
open(SITE,">>$nmarquivo");
print SITE $buf;
close(SITE);
print "Gravado em $nmarquivo";

}


 Em 08/11/05, Alceu Rodrigues de Freitas Jr. <glasswalk3r em yahoo.com.br>
escreveu:
>
> Carlos Silva wrote:
>
> > Prezaados colegas,
> >
> > Estou tentando fazer uma conversao de arquivo HTMl para PDF e não
> > estou conseguindo.
> >
> > Esse script baixa uma ou mais paginas HTML passadas como parametro e
> > depois a transforma em PDF mas a conversão nao esta funcionando .
> >
> Você deixou alguns módulos comentados no seu código enviado... isso foi
> proposital?
> Você está usando sockets para pegar uma página... já tentou fazer a
> conversão local? Digo, antes de sair usando sockets, localmente seu
> script funciona?
> Tente fazer seu programa por partes, não de uma vez só. A maior
> dificuldade que vejo em usar socket é o script pegar o documento HTML e
> salvar no HD (ou em memória, se você tiver ela sobrando). Feito isso, o
> restante do seu script deverá funcionar.
> E por favor, não use IO::Socket a menos que você realmente precise... o
> LWP::Simple já mata seus problemas com uma facilidade muito maior.
>
> []'s
> Alceu
>
>
>
>
>
>
> _______________________________________________________
> Yahoo! Acesso Grátis: Internet rápida e grátis.
> Instale o discador agora!
> http://br.acesso.yahoo.com/
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20051108/d5daf695/attachment.html


Mais detalhes sobre a lista de discussão Cascavel-pm