Convertir les pdf en byte[] et vice versa avec pdfbox
J'ai lu la documentation et les exemples, mais je vais avoir un moment difficile de la mettre tous ensemble. Je suis juste en train de prendre un test de fichier pdf, puis de le convertir en un tableau d'octets, puis prendre le tableau d'octets et de les convertir dans un fichier pdf, puis créer le fichier pdf sur le disque.
Il n'a probablement pas beaucoup d'aide, mais c'est ce que j'ai obtenu jusqu'à présent:
package javaapplication1;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class JavaApplication1 {
private COSStream stream;
public static void main(String[] args) {
try {
PDDocument in = PDDocument.load("C:\\Users\\Me\\Desktop\\JavaApplication1\\in\\Test.pdf");
byte[] pdfbytes = toByteArray(in);
PDDocument out;
} catch (Exception e) {
System.out.println(e);
}
}
private static byte[] toByteArray(PDDocument pdDoc) throws IOException, COSVisitorException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
pdDoc.save(out);
pdDoc.close();
} catch (Exception ex) {
System.out.println(ex);
}
return out.toByteArray();
}
public void PDStream(PDDocument document) {
stream = new COSStream(document.getDocument().getScratchFile());
}
}
Le format PDF est un tableau d'octets, il suffit de lire un fichier binaire et c'est tout. Mais peut-être vous voulez dire quelque chose de différent?
Pour une raison quelconque, quand je convertir un fichier PDF au tableau d'octets, puis retour à la PDF, lorsque j'essaie d'ouvrir le PDF nouvellement créé il dit qu'il est corrompu. J'ai donc décidé d'utiliser pdfbox pour l'éviter. Est-il possible de sauter pdfbox et faites-le et obtenir un fichier pdf de retour?
Quel est votre but ultime? Je ne vois pas auto-suffisante à l'utilisation de la conversion de PDF de tableau d'octets et à l'arrière.
Eh bien, je suis en essais pour voir si je peux stocker un fichier PDF dans une base de données. Je sais que le système de fichier doit être utilisé pour le stockage, mais je tiens à le stocker dans une base de données de toute façon. La seule façon que je peux faire, c'est si c'est sous la forme d'un byte[] tableau
Juste de le lire le flux de fichier et c'est tout. Je vois vraiment pas de raisons, il ne devrait pas travailler.
Pour une raison quelconque, quand je convertir un fichier PDF au tableau d'octets, puis retour à la PDF, lorsque j'essaie d'ouvrir le PDF nouvellement créé il dit qu'il est corrompu. J'ai donc décidé d'utiliser pdfbox pour l'éviter. Est-il possible de sauter pdfbox et faites-le et obtenir un fichier pdf de retour?
Quel est votre but ultime? Je ne vois pas auto-suffisante à l'utilisation de la conversion de PDF de tableau d'octets et à l'arrière.
Eh bien, je suis en essais pour voir si je peux stocker un fichier PDF dans une base de données. Je sais que le système de fichier doit être utilisé pour le stockage, mais je tiens à le stocker dans une base de données de toute façon. La seule façon que je peux faire, c'est si c'est sous la forme d'un byte[] tableau
Juste de le lire le flux de fichier et c'est tout. Je vois vraiment pas de raisons, il ne devrait pas travailler.
OriginalL'auteur ThreaT | 2013-07-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser Apache commons, ce qui est essentiel dans tout projet java de l'OMI.
Ensuite, vous pouvez utiliser FileUtils's
readFileToByteArray(File file)
etwriteByteArrayToFile(File file, byte[] data)
.(voici commons-io, qui est l'endroit où FileUtils: http://commons.apache.org/proper/commons-io/download_io.cgi )
Par exemple, j'ai juste essayé ce ici et il a fonctionné à merveille.
Même avec FileUtils? Je l'utilise beaucoup avec beaucoup de fichiers différents, y compris certains pdf et jamais eu de problème avec ça ):
Avez-vous des vieux code que vous pourriez coller la démontrant, par hasard?
Mise à jour du code avec le code de l'épreuve j'ai couru tout à l'heure ici et travaillé (à l'exception de "/exemple/chemin" qui a été un véritable chemin de)
Pas de problème, l'ami, nous sommes là pour aider les uns les autres 😀 Content d'avoir pu aider.
OriginalL'auteur Doodad