L'extraction de données /Filtre /FlateDecode PDF flux en PHP
Je ne peux pas déchiffrer les données dans le flux comme:
56 0 obj
<< /Length 1242 /Filter /FlateDecode >>
stream
x]êΩnƒ Ñ{ûbÀKq¬æ\âê¢....(whole binary is omitted)
endstream
endobj
J'ai essayé d'isoler le contenu binaire (x]êΩnƒ Ñ{ûbÀKq¬æ\âê¢....
) dans un fichier et dans une chaîne binaire. Le décodage de la fonction gzinflate($encripted_data)
m'envoie l'erreur de décodage, et je pense que cela se produit parce que le contenu encodé pas "dégonflé" ou alors.
Dans le PDF Référence v 1.7 (six édition), sur une page 67, j'ai trouvé la description de /FlateDecode filtre: ...Décompresse les données sont codées à l'aide de la librairie zlib/dégonfler la méthode de compression, de reproduire le texte original ou des données binaires
J'ai besoin de vrais brutes solution, aka fonction php ou/et de l'algorithme de quoi faire avec cette "\FlateDecoded" flux".
Merci!
- Avez-vous besoin de cette fonction pour les objets sélectionnés uniquement ou pour tous les cours d'eau (et de tous les systèmes de compression)?
- Chers Kurt! Je vais être heureux de savoir comment faire face à tout type de filtres comme: ASCIIHexDecode, ASCII85Decode, LZWDecode, RunLengthDecode, CCITTFaxDecode, JBIG2Decode, DCTDecode, JPXDecode, la Crypte, mais dans la vraie vie, FlateDecode est le plus utilisé dans les fichiers PDF qui a été produit par "imprimer vers PDF..."-s))), et maintenant, j'ai vraiment besoin de traiter avec ce filtre unique.
- Vous dites " je pense que cela se produit parce que le contenu encodé n'est pas "dégonflé" ou si". -- C'est pourquoi je vous ai donné le soupçon sur
qpdf
dans ma réponse. Vous pouvez l'utiliser (au moins) afin de vérifier ou falsifier vos propres efforts, même si elle s'avère ne pas être répondre à vos besoins directs. Aussi votre56 0 obj
-objet peut être n'importe quoi. Si vous ne dites pas d'où dans le document PDF, il est référencé en tant que56 0 R
il n'y a aucun moyen de savoir si c'est un profil ICC, une police, une image, une page de contenu ou d'autre chose... - Chers Kurt! Peut-être qpdf est la bonne solution pour mon travail, comme ça, mais malheureusement, qpdf est la "coquille" de ligne de commande ou de la solution. N'est pas mon cas. Bitte verzeih mir! Danke für die Hinweise!
Vous devez vous connecter pour publier un commentaire.
Puisque vous n'avez pas à savoir si vous avez besoin d'accéder à un flux décompressé seulement ou si vous avez besoin de tous les flux décompressé, je vais vous proposer une simple ligne de commande de l'outil qui le fait dans un aller pour le PDF complet: Jay Berkenbilt de
qpdf
.Exemple de ligne de commande:
out.pdf
peuvent être inspectées dans un éditeur de texte (uniquement les profils ICC incorporés, les images et les polices peuvent encore être binaire).qpdf
automatiquement ré-ordonner les objets et l'affichage de la syntaxe PDF de façon normalisée (et de vous dire dans un commentaire ce que les ID d'objet de la décompression de l'objet a).Si vous avez besoin de re-compresser le fichier de nouveau (peut-être après que vous l'avez édité), il suffit d'exécuter cette commande:
(Vous pouvez voir quelques message d'avertissement, indiquant que l'utilitaire a été de tenter de réparer un fichier endommagé....)
qpdf
est multi-plateforme et disponible à partir de Sourceforge.--object-streams=disable
vraiment nécessaire? Ne serait-il pas préférable de garder sa valeur par défaut, "preserve"?Jingle bells! Jingle bells!...
gzuncompress()
- la solutionDepuis longtemps, mais quelqu'un pourrait trouver utile. Dans ce cas:
<< /Longueur 1242 /Filtre /FlateDecode >> tous vous avez besoin est de passer les isolés chaîne binaire (donc en gros, tout ce qui est entre "flux" et "endstream") à la librairie zlib.décompresser:
Toutefois, si vous avez/DecodeParms dans votre fichier PDF, objet devenu compliqué. Vous aurez besoin de l' /Prédicteur de la valeur et de colonnes nombre. Mieux utiliser PyPDF2 pour cela.
stream
etendstream
sauf l'attaque et de fuite EOL marqueurs.j'ai simplement utilisé
de jpod /source forge
et il fonctionne bien
les octets sont directement à partir du fichier pdf