IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

[PDF] [TIFF] conversion d'un PDF en TIFF


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Par défaut [PDF] [TIFF] conversion d'un PDF en TIFF
    bonjour,

    comme vous l'aurez compris dans mon titre je souhaite faire une conversion PDF vers TIFF. apres de longues recherches sans succes (FOP, JAI, ITEXT, JPEDAL), je me tourne vers ma communauté de developpeur preferee en esperant trouver des reponses.

    merci a tous.

  2. #2
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Par défaut
    ne poursuivant mes recherches j'ai trouvé un bout de code dont je me suis fortement inspirer.
    je vous le met a votre disposition, ca peut surement aider certain d'entre nous.
    par contre la qualité, par rapport au fichier PDf d'origine, si vous avez des suggestions pour ameliorer ce point, je vous invites a poster vos commentaires.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    import java.awt.Desktop;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Iterator;
     
    import javax.imageio.IIOImage;
    import javax.imageio.ImageIO;
    import javax.imageio.ImageWriteParam;
    import javax.imageio.ImageWriter;
    import javax.imageio.stream.ImageOutputStream;
     
    import org.jpedal.PdfDecoder;
     
    public class PdfToTiff {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		File inputPdfFile = new File("result11286.pdf");
    		InputStream is;
    		FileOutputStream fos = null;
    		byte[] b;
    		try {
    			is = new FileInputStream(inputPdfFile);
    			b = toByteArray(is);
    			is.close();
    			File out = new File("out.tiff");
    			fos = new FileOutputStream(out);
    			fos.write(PDFToImageMultiPage(b, "tiff"));
    			fos.close();
    			openFile(out);
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	}
     
    	private static void openFile(File fileToOpen) {
    		if (Desktop.isDesktopSupported()) {
    			if (Desktop.getDesktop().isSupported(Desktop.Action.OPEN)) {
    				try {
    					Desktop.getDesktop().open(fileToOpen);
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    	}
     
    	public static byte[] PDFToImageMultiPage(byte[] bai, String imageType) {
    		byte[] out = null;
    		try {
    			PdfDecoder decoder = new PdfDecoder();
    			decoder.openPdfArray(bai);
    			if (decoder.isFileViewable()) {
    				ByteArrayOutputStream baos = new ByteArrayOutputStream();
    				ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
    				boolean foundWriter = false;
    				Iterator writerIter = ImageIO
    						.getImageWritersByFormatName(imageType);
    				while (writerIter.hasNext() && !foundWriter) {
    					foundWriter = true;
    					ImageWriter writer = (ImageWriter) writerIter.next();
    					writer.setOutput(ios);
    					ImageWriteParam param = writer.getDefaultWriteParam();
    					param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    					String[] comp = param.getCompressionTypes();
    					for (int i= 0; i< comp.length; i++) {
    					System.out.println(comp[i]);
    					}
    					param.setCompressionType("ZLib");
    					param.setCompressionQuality(0.8f);
    					writer.prepareWriteSequence(null);
    					for (int i = 0; i < decoder.getPageCount(); i++) {
    						int pageNumber = i + 1;
    						BufferedImage image = decoder
    								.getPageAsImage(pageNumber);
    						IIOImage iioImage = new IIOImage(image, null, null);
    						writer.writeToSequence(iioImage, param);
    					}
    					writer.endWriteSequence();
    					ios.flush();
    					writer.dispose();
    					ios.close();
    					out = baos.toByteArray();
    				}
    				if (!foundWriter) {
    					throw new RuntimeException(
    							"Error: no writer found for image type '"
    									+ imageType + "'");
    				}
    			}
    			decoder.closePdfFile();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return out;
    	}
     
    	// Method reads from an InputStream and returns a byteArray
    	private static byte[] toByteArray(InputStream in) throws IOException {
    		if (in == null) {
    			return null;
    		}
    		OutputStream buffer = new ByteArrayOutputStream();
    		byte[] transfer = new byte[1024];
    		int count = 0;
    		while (count != -1) {
    			count = in.read(transfer);
    			if (count > 0) {
    				buffer.write(transfer, 0, count);
    			}
    		}
    		return ((ByteArrayOutputStream) buffer).toByteArray();
    	}
     
    }

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jaoued Voir le message
    ne poursuivant mes recherches j'ai trouvé un bout de code dont je me suis fortement inspirer.
    je vous le met a votre disposition, ca peut surement aider certain d'entre nous.
    par contre la qualité, par rapport au fichier PDf d'origine, si vous avez des suggestions pour ameliorer ce point, je vous invites a poster vos commentaires.
    http://download.java.net/media/jai-i...e-summary.html

    augmenter la résolution de l'image de sortie…
    si vous ne changez pas les meta data concernant la résolution, il y a fort à parier que par défaut elle est à quelque chose comme 72 dpi…

  4. #4
    Membre averti
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Par défaut
    merci JeitEmgie,

    j'ai pas mal etudier la doc de jai. mais j'arrive toujours pas a changer les metadata. aurais tu un exemple qui me permetrait de l'adapter a ma situation ?

    merci.

Discussions similaires

  1. Conversion .odt vers .pdf
    Par alaincnes dans le forum Documents
    Réponses: 7
    Dernier message: 19/10/2010, 01h34
  2. [COM] Conversion WORD vers PDF sous PHP sans COM ?
    Par pdtor dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 31/01/2007, 22h27
  3. Problème conversion .rep en .pdf
    Par ruru9 dans le forum Deski
    Réponses: 9
    Dernier message: 07/12/2006, 16h48
  4. [FOP] conversion XML en PDF sous JBuilder10
    Par belassel_z dans le forum APIs
    Réponses: 1
    Dernier message: 09/06/2006, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo