2017-03-12 2 views
0

J'ai un problème avec la génération d'un fichier PDF. J'ai incorporé la police en utilisant une carte de caractères/ToUnicode. Ensuite, j'ai écrit les identifiants de glyphes sous forme de flux de texte. La chose étrange est: Je peux sélectionner et copier le texte du PDF dans d'autres applications coller le texte. Cela fonctionne avec tous les caractères, même russe, grec, etc. Cependant, le texte ne s'affiche pas à l'écran.PDF n'affiche pas les caractères même si la police est intégrée et/ToUnicode est présent

Ci-dessous est la structure de mon PDF:

PDF Structure

Le PDF lui-même est disponible à l'adresse: https://drive.google.com/file/d/0B9J8lfyB3w2PX3R3N0dfT0VhRTA/view?usp=sharing

Si je considère PDF dans un navigateur (Firefox ou Chrome), le texte " Bonjour "apparaît. Si j'ouvre ce PDF dans Adobe Reader ou d'autres visionneuses de documents tels que xpdf ou la visionneuse de documents Linux, les glyphes n'apparaissent pas.

J'ai défini le codage sur Identity-H et créé une table/ToUnicode valide. J'ai mis la police en tant que CIDFontType0/(CIDFontType0C dans le FontDescriptor). Le FontFile3 contient une copie complète du fichier .otf de la police "Asimov", puisque je voulais intégrer la police complète.

Le spectateur PDF Linux me dit que la police est intégrée:

Settings

Je ne peux pas comprendre pourquoi le texte n'affiche pas. J'ai écrit le texte en recherchant l'identifiant de glyphe pour la police. Que dois-je faire pour que la police apparaisse?

+0

Quelle est la forme folle à côté de "bonjour"? http://i.imgur.com/7mdu8FE.png –

+0

Preflight signale des erreurs dans le profil ICC ... malheureusement plus de détails. Mais vous devriez vérifier cela en premier (il suffit de passer à un espace colorimétrique par défaut pour les tests). La valeur de PageMode est également invalide. –

+0

La table ToUnicode n'est pas pertinente, elle est uniquement utilisée lors de la copie/recherche du document. Il n'a aucune utilité lors du rendu des glyphes. – KenS

Répondre

0

Le problème était que j'ai compressé la police lors de l'enregistrement du document. Pour une raison quelconque, vous ne pouvez pas compresser le flux de polices ou le visualiseur PDF ne peut plus extraire les données. Dès que j'ai désactivé la compression sur le PDF, la police a réapparu.

+0

Affirmer que les * "réponses précédentes étaient incorrectes" * est assez dur. Les problèmes mentionnés existent même s'ils ne sont pas votre pire problème. Vous réclamez * "le FontBBox est OK pour une police incorporée" * qui n'est vrai que si les glyphes de la police n'ont que des parties remplies à y = 1327 ou si vous avez une bonne excuse pour le réclamer. Et les espaces de couleur incorrects sont également incorrects. – mkl

1

Votre (premier) problème est la définition et l'utilisation des espaces de couleur nommés DefaultGray, DefaultRGB et DefaultCMYK, ces noms ont des significations spécifiques.

Ces espaces sont utilisés pour mapper les couleurs définies dans DeviceGray, DeviceRGB et DeviceCMYK dans l'espace colorimétrique CIE, afin de gérer la couleur des définitions. Vous n'utilisez pas les espaces colorimétriques Default * directement. Le texte devient invisible parce que vous utilisez (en fait) le même espace colorimétrique deux fois, une fois directement en tant que DefaultCMYK, puis de nouveau pour mapper les valeurs CMJN résultantes dans CIE puis de nouveau en RVB (pour l'affichage).

Vous devriez soit;

  1. Définissez l'espace couleur DeviceCMYK etc au lieu de DefaultCMYK
  2. Appelez les espaces de couleur nommé autre chose que DefaultCMYK etc

Je pense aussi, comme Jan Slabon a déclaré, il y a quelque chose de mal avec la CPI profil que vous utilisez. Enfin, il semble que la police est également cassée, donc même lorsque vous corrigez l'espace colorimétrique (ce que j'ai fait en changeant le flux de contenu pour utiliser/DevcieCMYK) le texte ne s'affiche toujours pas avec Acrobat.

+0

Si la question concerne l'absence de glyphes de polices, le premier problème ne concerne pas la spécification de l'espace de couleurs. –

+0

Ni le texte ni le chemin n'apparaissent dans Acrobat, car la définition ColorSpace est incorrecte. Corrigez le ColorSpace et le chemin apparaît, puis la police cassée empêche le rendu du texte. Donc le ** premier ** problème est le ColorSpace, la police est le deuxième problème. – KenS

1

Le FontBBox dans le FontDescriptor semble incorrect: [0 1327 472912 1327]

472912 semble trop grand, mais ayant les mêmes valeurs pour les deuxième et quatrième entrées indiquerait que cette police n'a pas la hauteur.

Vous pouvez également envisager de définir les entrées Ascent, Descent et CapHeight sur des valeurs non nulles.