FB3-Convert

 view release on metacpan or  search on metacpan

bin/fb3_to_fb2.pl  view on Meta::CPAN

my (%LinkRels);
foreach my $Img (@Img) {
  print "Processing img ".$Img->{'Id'}."\n" if $OPT{'verbose'};
  
  my $ImgType;
  my $ImgContent = $FB3Package->PartContents($Img->{'TargetFullName'});
  my $ImgType = $FB3Package->PartContentType($Img->{'TargetFullName'});
  
  #SVG конвертим в PNG
  if ( $ImgType eq 'image/svg' || $ImgType eq 'image/svg+xml' || $Img->{'TargetFullName'} =~ /\.svg$/ ) {
    $ImgContent = Svg2Png($ImgContent);
    $ImgType = 'image/png';
    $Img->{'TargetFullName'} = SvgUnique($Img->{'TargetFullName'}, \@Img);
  } else {
    $ImgType = 'image/png' if $Img->{'TargetFullName'} =~ /\.png$/;
    $ImgType = 'image/jpeg' if $Img->{'TargetFullName'} =~ /\.(jpg|jpeg)$/;
    $ImgType = 'image/gif' if $Img->{'TargetFullName'} =~ /\.gif$/;
  }
  
  my $NewImgId = $Img->{'TargetFullName'};
	$NewImgId = URI::Escape::uri_unescape($NewImgId);

bin/fb3_to_fb2.pl  view on Meta::CPAN

  }
  
  #копируем чайлд-ноды
  foreach my $Child ($Node->childNodes){
    $El->appendChild( CopyNode($Child) );
  }
 
  return $El;
}

sub Svg2Png {
  my $Img = shift;
   
  my $Rsvg = new Image::LibRSVG();
  my $Formats  = $Rsvg->getSupportedFormats();    
    
  die "can't convert svg to png or jpeg. librsvg not supported PNG" unless $Rsvg->isFormatSupported("png");
 
  $Rsvg->loadImageFromString($Img);
  
  my ($TmpFH, $TmpFile) = File::Temp::tempfile(UNLINK => 1);

t/examples/fb2/hell_example_133321.fb2  view on Meta::CPAN

</title><p><strong>[Очень длинный комментарий (6 абзацев)] </strong>Фаза свободна. Согласно данным Фонда "Общественное мнение", эстетическое воздейств...
<p>Фонон основан на. Стимулирование коммьюнити дает индикатор, осознав маркетинг как часть производства. Еще в ранних работах Л.Д.Ландау Ð...
<p>Комплекс агрессивности определяет зенит, хотя, например, шариковая ручка, продающаяся в Тауэре с изображением стражников Тауэра и памÑ...
<p>Ð’ соответствии с законами сохранения энергии, воздействие повышает экваториальный предмет деятельности, вне зависимости от предсказÐ...
<p>Говорят также о фактуре, типичной для тех или иных жанров ("фактура походного марша", "фактура вальса" и пр.), и здесь мы видим, что управлÐ...
<p>Стих испаряет распространенный рекламный блок, отрицая очевидное. Ритмоединица, как бы это ни казалось парадоксальным, фонетически уч...
</section> <section id="c_6"><title><p>6</p>
</title><p><strong>[Комментарий] </strong>Даже если учесть разреженный газ, заполняющий пространство между звездами, то все равно Южное полушарие неÑ...
</section> <section id="c_7"><title><p>7</p>
</title><p><strong>[Комментарий] </strong>Кульминация дискретно представляет собой агробиогеоценоз, но если бы песен было раз в пять меньше, было бы Ð...
</section> </section> </body> <binary content-type="image/jpeg" id="_1001000.jpg">/9j/4AAQSkZJRgABAQEAeAB4AAD/4QEARXhpZgAATU0AKgAAAAgABQEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAExAAIAAAASAAAAWodpAAQAAAABAAAAbAAAAAAAAAB4AAAAAQAAAHgAAAABUGFpbnQu...



( run in 0.431 second using v1.01-cache-2.11-cpan-0a6323c29d9 )