2015-07-28 1 views
1

J'essaie d'imiter un code de production pour générer des Tiffs avec un sujet à des fins de test (IE dans Windows, clic droit, aller aux propriétés et l'onglet de détails il y a un sujet). Nous plaçons du texte que nous devons référencer plus tard dans le champ sujet. Le champ que nous utilisons est 0x9c9f qui, autant que je peux trouver est (tag Sujet utilisé par Windows, codé en UCS2)LibTiff.net ne met pas la balise Subject

Voici le code que je utilise pour générer la balise

public static void TagExtender(Tiff tif) 
    { 
     TiffFieldInfo[] tiffFieldInfo = 
     { 
      new TiffFieldInfo(TIFFTAG_SUBJECT, 256, 256, TiffType.BYTE, FieldBit.Custom, true, false, "XPSubject"), 
     }; 

     tif.MergeFieldInfo(tiffFieldInfo, tiffFieldInfo.Length); 

     //if (m_parentExtender != null) 
     // m_parentExtender(tif); 
    } 


    public static void GenerateTiff(string filename, int pages = 1, bool encrypt = false, string tag = null) 
    { 
     // Register the custom tag handler 
     if (m_parentExtender == null) 
     { 
      Tiff.TiffExtendProc extender = TagExtender; 
      m_parentExtender = Tiff.SetTagExtender(extender); 
     } 

     // Open the output image 
     using (Tiff output = Tiff.Open(filename, "w")) 
     { 
      //...other code to generate tiff 
       if (tag != null) 
       { 
        byte[] bytes = UnicodeStr2HexStr(tag); 
        output.SetField(TIFFTAG_SUBJECT, bytes.Length-1, bytes); 
       } 

       // Code to actually write the image .... 
       output.WriteDirectory(); 
      } 
      output.Close(); 
    } 

Fondamentalement, la tag (code sage) semble être dans le tiff mais la boîte de dialogue des propriétés de Windows ne l'affiche jamais. Quelque chose de spécial nécessaire pour le mettre en place?

Répondre

2

Vous transmettez un bytecount, mais définissez l'indicateur passCount sur false.

Si vous voulez passer le compte, utilisez ces lignes à leurs positions correctes:

// Your FieldInfo 
    new TiffFieldInfo((TiffTag)40095, -1, -1, TiffType.BYTE, FieldBit.Custom, true, true, "XPSubject") 
// Your Input 
    byte[] test = Encoding.Unicode.GetBytes("Test3"); 
    tiff.SetField((TiffTag)40095, test.Length, test);