2011-08-06 3 views
0

Je dois ajouter quelques informations à un PDF (Trim Box attribue, en fait remplacer les proportions de Media Box avec Media Box et Trim Box), et je n'ai pas le support dans mon moteur PDF. J'ai donc découvert que je peux utiliser Notepad ++ pour ouvrir le PDF en tant que fichier texte et simplement ajouter les proportions de la Trim Box sous forme de chaîne et l'enregistrer. Maintenant, je veux le faire automatiquement avec vb.net. Quand j'utilise Stream Reader/Writer, le PDF est détruit et perd de l'information (Stream Reader ne lit pas tous les NUL, SOH, STX, etc.). J'ai essayé de lire le PDF en utilisant ReadAllBytes/WriteAllBytes et puis ça marche bien, mais je ne sais pas comment remplacer "Media Box ..." par "Media Box ... Trim Box ...". J'essaie d'utiliser IndexOf mais je ne peux rechercher qu'un seul octet, pas toute la chaîne. Je ne suis pas bon en binaire et c'est peut-être le problème :-). Quelqu'un at-il une meilleure façon de le faire ou comment puis-je rechercher ma chaîne "Media Box" en binaire?Remplacer le contenu en PDF "binaire" et enregistrer - vb.net

Merci!

/Georg

Répondre

0

si vous réussissez à obtenir le pdf dans une chaîne, regardez http://msdn.microsoft.com/en-us/library/8460tsh1(v=VS.90).aspx#Y1420 pour localiser les chaînes (sous) dans une chaîne

et je l'utiliser pour convertir les octets en chaîne:

À partir de mon éditeur, qui gère Ansi et Unicodefiles

 Dim buf(ssd.SrcLength - 1) As Byte 
     EditRdFile = ReadFile(ssd.SrcFileIx) 
     EditRdFile.Seek(ssd.SrcStart - 1, SeekOrigin.Begin) 
     EditRdFile.Read(buf, 0, ssd.SrcLength) 
     If CurrEdtSession.IsUnicode Then 
      Dim enc As System.Text.Encoding = New System.Text.UnicodeEncoding(False, True, True) 
      value = enc.GetString(buf) 
     Else 
      value = System.Text.Encoding.Default.GetString(buf) 
     End If 

Questions connexes