Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTION PS EN NOIR ET BLANC


Information sur la source

Catégorie :Texte Source .NET ( DotNet ) Classé sous : postscript, noir blanc, pdf Niveau : Débutant Date de création : 21/05/2008 Date de mise à jour : 21/05/2008 08:29:59 Vu : 2 626

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

Petit exe qui permet de convertir des fichiers PS en noir et blanc (le vectoriel, pas les images).

Pour info, le ps permet ensuite de créer du pdf. Je n'ais pas trouver de librairie gratuite qui convertisse du pdf en noir et blanc. Si quelqu'un en connait une d'ailleurs, sa m'intéresse.



 

Source

  • Module Module1
  • Public Sub main()
  • 'on va essayer sa :
  • 'il faut chercher : # # # rgb
  • 'et le changer pour : 0 0 0 rbg
  • 'une boucle devrai suffire, g des doute pour les image...
  • 'aller on adapte pour faire un exe :
  • 'args : Nomfichier1, nomFichier2 ...
  • 'verification qu'il y à des argument :
  • Dim f As String
  • If My.Application.CommandLineArgs.Count = 0 Then
  • disphelp()
  • Exit Sub
  • End If
  • 'recuperation du repertoire temporaire :
  • Dim temp As String = System.Environment.GetEnvironmentVariable("temp")
  • For Each f In My.Application.CommandLineArgs
  • If System.IO.File.Exists(f) Then
  • 'fichier temporaire :
  • Dim e As Integer
  • Dim temp_fich As String = temp & "\temp_ps" & e & ".ps"
  • e += 1
  • Dim li As New System.IO.StreamReader(f)
  • Dim lio As New System.IO.StreamWriter(temp_fich, False)
  • While Not li.EndOfStream
  • Dim t As String = li.ReadLine
  • If t Like "*rgb*" And Not t Like "*/rgb*" Then
  • 'If Not t Like "*0 0 0 rgb*" Then
  • 'bon la il faut faire une petite boucle...
  • 'on prend l'index de rbg :
  • Dim fi As Boolean = False
  • Dim ind As Integer = 0
  • While Not fi
  • t = net_line(t, t.IndexOf("rgb", ind))
  • If (t.LastIndexOf("0 0 0 rgb") + 9) <> (t.LastIndexOf("rgb") + 3) Then
  • ind = t.LastIndexOf("0 0 0 rgb") + 9
  • Else : fi = True
  • End If
  • End While
  • 'End If
  • End If
  • lio.WriteLine(t)
  • End While
  • lio.Close()
  • li.Close()
  • 'on copi le fichier
  • System.IO.File.Copy(temp_fich, f, True)
  • End If
  • Next
  • End Sub
  • Private Function net_line(ByVal l As String, ByVal i As Integer) As String
  • Dim ind As Integer = i
  • Dim ind2 = ind - 1
  • Dim rgbfini As Boolean = False
  • Dim pa As Integer = 0
  • While rgbfini = False
  • If (Char.IsNumber(l.Chars(ind2)) Or l.Chars(ind2) = " " Or l.Chars(ind2) = ".") And ind2 > 1 Then
  • If l.Chars(ind2) = " " Then
  • pa += 1
  • If pa = 4 Then Exit While
  • End If
  • Console.WriteLine(l.Chars(ind2))
  • ind2 -= 1
  • Else
  • Exit While
  • End If
  • End While
  • If ind - 1 <> ind2 Then
  • If l.Substring(ind2 - 1, ind + 2 - ind2) Like "* *" Then
  • l = l.Replace(l.Substring(ind2 + 1, (ind - ind2) + 2), " 0 0 0 rgb")
  • End If
  • End If
  • Return l
  • End Function
  • Sub disphelp()
  • Console.WriteLine("Utilisation :")
  • Console.WriteLine("Nom_du_premier_fichier nom_du_deuxieme_fichier...")
  • Console.WriteLine("")
  • Console.WriteLine("Les fichier sont ecrasés")
  • End Sub
  • End Module
Module Module1
    Public Sub main()
        'on va essayer sa : 
        'il faut chercher : # # # rgb
        'et le changer pour : 0 0 0 rbg

        'une boucle devrai suffire, g des doute pour les image...
        'aller on adapte pour faire un exe :
        'args : Nomfichier1, nomFichier2 ...

        'verification qu'il y à des argument :
        Dim f As String
        If My.Application.CommandLineArgs.Count = 0 Then
            disphelp()
            Exit Sub
        End If
        'recuperation du repertoire  temporaire :
        Dim temp As String = System.Environment.GetEnvironmentVariable("temp")


        For Each f In My.Application.CommandLineArgs

            If System.IO.File.Exists(f) Then
                'fichier temporaire :
                Dim e As Integer
                Dim temp_fich As String = temp & "\temp_ps" & e & ".ps"
                e += 1

                Dim li As New System.IO.StreamReader(f)
                Dim lio As New System.IO.StreamWriter(temp_fich, False)

                While Not li.EndOfStream
                    Dim t As String = li.ReadLine
                    If t Like "*rgb*" And Not t Like "*/rgb*" Then
                        'If Not t Like "*0 0 0 rgb*" Then
                        'bon la il faut faire une petite boucle...
                        'on prend l'index de rbg :
                        Dim fi As Boolean = False
                        Dim ind As Integer = 0
                        While Not fi
                            t = net_line(t, t.IndexOf("rgb", ind))
                            If (t.LastIndexOf("0 0 0 rgb") + 9) <> (t.LastIndexOf("rgb") + 3) Then
                                ind = t.LastIndexOf("0 0 0 rgb") + 9
                            Else : fi = True
                            End If
                        End While

                        'End If
                    End If
            lio.WriteLine(t)
                End While
                lio.Close()
                li.Close()

                'on copi le fichier 
                System.IO.File.Copy(temp_fich, f, True)
            End If
        Next



    End Sub

    Private Function net_line(ByVal l As String, ByVal i As Integer) As String

        Dim ind As Integer = i
        Dim ind2 = ind - 1
        Dim rgbfini As Boolean = False
        Dim pa As Integer = 0
        While rgbfini = False

            If (Char.IsNumber(l.Chars(ind2)) Or l.Chars(ind2) = " " Or l.Chars(ind2) = ".") And ind2 > 1 Then
                If l.Chars(ind2) = " " Then
                    pa += 1
                    If pa = 4 Then Exit While
                End If

                Console.WriteLine(l.Chars(ind2))

                ind2 -= 1
            Else
                Exit While
            End If

        End While

        If ind - 1 <> ind2 Then
            If l.Substring(ind2 - 1, ind + 2 - ind2) Like "* *" Then
                l = l.Replace(l.Substring(ind2 + 1, (ind - ind2) + 2), " 0 0 0 rgb")
            End If
        End If

        Return l
    End Function


    Sub disphelp()

        Console.WriteLine("Utilisation :")
        Console.WriteLine("Nom_du_premier_fichier nom_du_deuxieme_fichier...")
        Console.WriteLine("")
        Console.WriteLine("Les fichier sont ecrasés")

    End Sub

End Module

Conclusion

Pour utiliser le code, utiliser une nouvelle application VB.NET type console, puis coller le code dans le module.

Cette application est utiliser dans une chaine de convertion de fichier Dessin CATIA ver pdf, elle permet dans certain cas de sortir des plans en noir et blanc. Utilisé avec GostScript et une macros vb6(catvba).
 

Historique

21 mai 2008 08:29:31 :
MAJ
21 mai 2008 08:29:59 :
MAJ

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Comment partager un fichier PostScript (ou pdf) en VB6? [ par saebe ] Quelqu'un a une id&#233;e? StringBuffer et comment chercher un texte oubien il existe une dll?oubien est-it possible de faire quelque chose avec ghost lien telechargeable [ par gabimage ] bonjour, je souhaite savoir comment on fait sur flash pour mettre un lien qui quand on clik dessus permette a l internaute de telecharger un fichier( afficher et imprimer un fichier pdf de plusieurs pages [ par jytest ] Je suis d&#233;butant avec gros soucis.Deux questions svp.Comment ins&#233;rer du texte dans une feuille frame ?Comment&nbsp;imprimer directement un f Liens pour ouvrir une page d'un PDF [ par MYPHPSCRIPTER ] Bonjours tous le monde, Voila je ne sais pas si cela existe j'arrive pas a trouver. Je souhaite à partir d un lien ouvrir un PDF jusque là vous me di fichier pdf de plusieurs pages à imprimer [ par jytest ] Je suis d&#233;butant avec gros soucis avec pdfDeux questions svp.Comment&nbsp;imprimer directement un fichier pdf de plusieurs pagessur imprimante ?j Ouvrir un fichier PDF via Excel avec une macro [ par rmalotaux ] Bonjour,Je suis dans une feuille excel ou je vais int&#233;grer une liste ou une cellule de r&#233;f&#233;rence ou j'indiquerai le nom du fichier PDF Ouvrir un fichier PDF via Excel avec une macro [ par rmalotaux ] Bonjour,Je suis dans une feuille excel ou je vais int&#233;grer une liste ou une cellule de r&#233;f&#233;rence ou j'indiquerai le nom du fichier PDF Fichier au format PDF [ par jytest ] Je suis d&#233;butant.Je ne poss&#232;de pas bien l'impression.Qui veut bien m'aider ?J'ai un fichier pdf de plusieurs pages au format A4.J'ai besoin Help!!! Help!!! Help!!! Message box et PDF [ par cedric1981 ] Bonjour, je souhaite tranforme un fichier excel en PDF,j'ai trouve le code suivant qui fonctionne bien chez moi. 'Define the postscript and .pdf file utilisation d'un fichier pdf [ par jytest ] Au secours !!!N'y a-t-il pas une m&#233;thode simple.Tout ce que je veux c'est afficher le document pdf (compos&#233; de plusieurs pages au format A4)


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.