Existe-t-il un champ dans lequel les fichiers PDF spécifient leur encodage?
Je comprends qu'il est impossible de déterminer l'encodage des caractères de toute stringform données juste en regardant les données. Ce n'est pas ma question.
Ma question est: Est-il un champ dans un fichier PDF où, par convention, le schéma de codage est spécifié (par exemple: UTF-8)? Ce serait quelque chose d'à peu près similaire à <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
en HTML.
Je vous remercie beaucoup à l'avance,
Blz
source d'informationauteur blz | 2012-05-18
Vous devez vous connecter pour publier un commentaire.
Un rapide coup d'oeil à la Spécification PDF semble suggérer que vous pouvez avoir de codage différents à l'intérieur d'un fichier PDF. Jetez un oeil à la page 86. Ainsi, un PDF de la bibliothèque avec une sorte d'accès de bas niveau doit être en mesure de vous fournir avec le codage utilisé pour une chaîne de caractères. Mais si vous voulez juste le texte et ne se soucient pas de l'intérieur des codages utilisés je suggère de laisser la bibliothèque prendre soin de conversions pour vous.
PDF utilise des "nommé" les personnages, dans le sens où un personnage est un nom et pas un code numérique. Le caractère "a" a du nom de "un", le caractère "2" est le nom de "deux" et le signe de l'euro qui a le nom "euro", pour donner quelques exemples. PDF définit un peu "standard", "base" encodages (nommé "WinAnsiEncoding", "MacRomanEncoding" et un peu plus, ne me souviens pas exactement), un codage être un one-to-one correspondance entre les noms des personnages et des valeurs d'octets (oui, seulement de 0 à 255). Exact, les valeurs normatives pour ces encodages prédéfinis sont dans la spécification PDF. Tous ces codages utiliser les valeurs ASCII pour les caractères US-ASCII, mais ils diffèrent dans la hausse des valeurs d'octets.
Un fichier PDF peut définir de nouveaux encodages en prenant une "base" d'encodage (par exemple, WinAnsiEncoding) et la redéfinition de quelques octets, donc un PDF auteur peut, par exemple, de définir un nouvel encodage nommé "MySuperbEncoding" comme WinAnsiEncoding mais avec l'octet de valeur 65 changé pour signifier le caractère "ntilde" (cette définition va à l'intérieur du fichier PDF), puis de spécifier que certaines chaînes dans le fichier d'utiliser le codage "MySuperbEncoding". Dans ce cas, une chaîne de caractères contenant des valeurs d'octets 65-66-67 signifierait caractères "ñBC" et non pas "ABC". Et notez que je veux dire caractères, rien à voir avec les glyphes ou des polices. Différentes chaînes de caractères dans le fichier PDF peut utiliser des codages différents (cela fournit un moyen pour l'utilisation de plus tan 256 caractères dans le fichier PDF, même si chaque chaîne est définie comme une séquence d'octets, et un octet correspond toujours à un seul personnage).
Donc, la réponse à votre question est: caractères dans un fichier PDF peut bien être codé en interne dans une ad-hoc codage fait sur place pour le fichier PDF. PDF les analyseurs doivent faire les substitutions appropriées lorsque nécessaire. Je ne sais pas PDFMiner mais je suis surpris qu'il (être un PDF de l'analyseur) donne des valeurs incorrectes, comme la spécification est très clair sur la façon dont cela doit être interprété. Il EST possible d'obtenir toutes les informations nécessaires à partir du fichier PDF, mais, comme Mattias dit, il pourrait être un gros projet et je pense qu'un programme nommé PDFMiner faire exactement ce genre de travail.