OVH Cloud OVH Cloud

pb de format

12 réponses
Avatar
remy
bonjour

il y a une raison valable qui justifie
le fait de ne pas trouver ni dans fpo apache ni dans itext
un filtre qui permette de lire les images d'un pdf

dans gimp ils font comment
j'ai un tableau de byte et je veux une "image" gif jpeg bnp
avec un boot de code histoire de faire serrieux sous itext
l'on envoie pas beaucoup sur ce groupe
le filtre s'appelle CCITTFaxDecode




import java.awt.*;
import java.io.*;
import javax.swing.*;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import com.lowagie.text.pdf.codec.*;

import com.lowagie.text.pdf.PdfObject;
import java.util.*;


public class TestLecturePdf {


public static PdfReader pdf;
public static int nbDic =0;
public static RandomAccessFileOrArray file;

public static void main(String[] args)
{

String name = args[0];


try {

pdf=new PdfReader(name);
file=new RandomAccessFileOrArray(name);
System.out.println(pdf.getInfo()+" "+pdf.getPdfVersion());

PdfDictionary dic=pdf.getCatalog();

for(int i=1;i<pdf.getNumberOfPages();i++)
{
dic=pdf.getPageN(i);
nbDic=0;
System.out.println("################ page "+i+" ################");
lectureDic(dic);

}



}
catch(IOException ioe)
{
System.err.println(ioe.getMessage());
}


}

public static void lectureDic(PdfDictionary dic)throws IOException
{
PdfName key;
Object obj;
nbDic++;
System.out.println("*******DIC********"+nbDic);
System.out.println(dic.getKeys());
for (Iterator it = dic.getKeys().iterator(); it.hasNext();)
{

key= (PdfName)it.next();
obj= (Object)pdf.getPdfObject(dic.get(key));

if (obj instanceof PRStream)
{
PdfObject filter =
pdf.getPdfObject(((PRStream)obj).get(PdfName.FILTER));
getStreamBytes((PRStream)obj,file,pdf);


}





if( obj instanceof PdfDictionary )
{
lectureDic((PdfDictionary)obj);
}
}
}



public static byte[] getStreamBytes(PRStream stream,
RandomAccessFileOrArray file,PdfReader pdf) throws IOException
{

PdfReader reader = stream.getReader();
PdfObject filter = pdf.getPdfObject(stream.get(PdfName.FILTER));
byte b[];
if (stream.getOffset() < 0)
{
b = stream.getBytes();
}
else {
b = new byte[stream.getLength()];

file.seek(stream.getOffset());
file.readFully(b);

}

ArrayList filters = new ArrayList();

if (filter != null) {
if (filter.isName())
filters.add(filter);
else if (filter.isArray())
filters = ((PdfArray)filter).getArrayList();
}
ArrayList dp = new ArrayList();
PdfObject dpo = pdf.getPdfObject(stream.get(PdfName.DECODEPARMS));
if (dpo == null || (!dpo.isDictionary() && !dpo.isArray()))
dpo = pdf.getPdfObject(stream.get(PdfName.DP));

if (dpo != null) {
if (dpo.isDictionary())
dp.add(dpo);
else if (dpo.isArray())
dp = ((PdfArray)dpo).getArrayList();
}



String name;
for (int j = 0; j < filters.size(); ++j)
{
name =
((PdfName)PdfReader.getPdfObject((PdfObject)filters.get(j))).toString();
if (name.equals("/FlateDecode") || name.equals("/Fl"))
{
b=null;
}
else if (name.equals("/CCITTFaxDecode"))
{
System.out.println("a faire CCITTFaxDecode ");
System.out.println("taille "+b.length);
}
}


return b;

}

}











--
des conneries j'en ai dites oui oui je vous assure...
mais elles n'engagent que votre perception
remy

2 réponses

1 2
Avatar
Alain Labarthe
Le 22-09-2005, Manuel Leclerc écrivait:

Donc le troll "sécurité des logiciels gratuits maintenus
et distribués par des bénévolos-charlots" bouge encore.



C'est pas un troll mais une évidence un charlot qui développe que ce
soit en libre ou pas est un danger.

Je ne vois pas où est la révélation.

--
pick et pick et colle au gramme

Avatar
Manuel Leclerc

Manuel Leclerc écrivait:

Donc le troll "sécurité des logiciels
gratuits maintenus et distribués par des
bénévolos-charlots" bouge encore.


C'est pas un troll mais une évidence un charlot
qui développe que ce soit en libre ou pas est
un danger.

Je ne vois pas où est la révélation.


La révélation, je vais te la faire : Mozilla, c'est
un truc gratuit financé on ne sait pas trop comment
par on ne sait trop qui, mais c'est pas grave, c'est
LIBRE !

Bilan, les coréens ils ont eu Moz avec un virus, vu
que ceux qui se sont sortis les doigts du culs pour
distribué le truc dans leurs langues, il se trouve que
se sont des grosses nouilles en sécurité.

Tu as là par l'exemple la raison fondamentale qui
fait dire "c'est gratuit, ça cache quelque chose"
variante "vous en avez pour votre argent".

Enfin, bon. Je dis ça mais c'est pour causer. Je
n'utilises plus que FireFox depuis un moment et
j'en suis trés content, pour l'instant.

--
This type of modern life
Is it for me?
This type of modern life
Is it for free?


1 2