Announcement

Collapse
No announcement yet.

Stdin/Stdout und Pdf

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Stdin/Stdout und Pdf

    Hallo!

    Ich habe eine Konsolenanwendung in C# die folgendes machen soll:

    über Cmd soll das programm aufrufbar sein und mit Hilfe der Stdin/Stdout soll eine PDF-Datei ein/ausgelesen und signiert werden.

    also <Prog> < <PDF-Datei> > <signiertePDF-Datei>

    Das signieren mache ich mit Hilfe von itextsharp allerdings benötigt er ein PDFreader und ich kann die Stdin nicht so einfach convertieren.

    vielleicht übersehe ich auch nur das wesentliche

    daher suche ich alternativen und google war bisher nicht sehr kooperativ

    gruß

  • #2
    Hallo und wilkommen im Forum,

    stdin und stdout werden in .net so nicht verwendet. Das ist/war C++.

    Über die Befehlszeile kannst du deinem Programm den Pfad zur Pdf mitgeben und das Programm liest dann mit den Methoden der File-Klasse den Inhalt ein - zB mit [highlight=c#]byte[] pdfData = File.ReadAllBytes("pfad zur PDF");[/highlight].

    Das Übergeben des Dateinames per Befehlszeile bzw. dessen Auslesen im Program ist auch ganz einfach:
    [highlight=c#]
    static void Main(string[] args)
    {
    string pdfFileName = args[0]; // wenn es das erste Argument ist
    }
    [/highlight]
    Auf eine Fehlerprüfung habe ich hier der Einfachheithalber verzichtet.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      das soll ich ja nicht so machen
      es soll keine parameter geben oderso

      sonst hätte ich es so gemacht

      ich kann infos so ja als string nehmen
      und wenn ich ihn wieder ausgebe auf diesem wege übernimmt er sogar alles nötige
      müsste ich nur den zwischenweg umschreiben.

      aber ich habe gehofft das es noch eine "einfachere" möglichkeit gibt

      Comment


      • #4
        Hallo,

        noch einfacher gehts ja gar nicht

        über Cmd soll das programm aufrufbar sein und mit Hilfe der Stdin/Stdout
        Ich verstehe das so:
        :> MeinProgramm.exe PdfDatei.pdf

        Und genau nach diesem Schema funktionieren eigentlich alle Tools dieser Art...

        Gib mal ein Beispiel wie du dir das vorstellst.



        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          also gut in der cmd wird zb folgendes eingegeben

          Programm.exe < PDF1 > PDF2

          damit wird das programm gestartet und der inhalt von PDF1 als Standardeinabe dem Programm übergeben.

          anhand dieser daten soll eine signierte PDF erzeugt werden die dann mit der Standardausgabe in die zur verfügunggestellte/erzeugten PDF übergeben.

          diese PDF soll natürlich signirt sein

          bis jetzt ist mein gedankengang so:

          ich lese es ein wie beschrieben
          erzeuge eine pdf mit den daten
          signiere diese
          und nehme den inhalt der pdf (wo auch die signatur bei ist) und schreibe sie raus

          Comment


          • #6
            Hallo,

            Programm.exe < PDF1 > PDF2
            Aha, jetzt versteh ich was du willst.

            Benutze dazu die Console-Klasse mit den Methoden
            [highlight=c#]
            Stream in = Console.OpenStandardInput();
            Steram out = Stream out = Console.OpenStandardOutput();
            [/highlight]


            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              ich kann nicht glauben das ich ganze zeit diese methoden übersehen habe -.-

              manchmal sieht man den wald vor lauter bäume eben nicht!!

              ich denk das war genau das was ich brauchte

              danke
              Zuletzt editiert von Exil; 28.07.2010, 13:04.

              Comment


              • #8
                Welchen PdfReader verwendest du denn?

                bye,
                Helmut

                Comment


                • #9
                  pdfreader is halt das standard ding

                  ich will nix neues aufmachen

                  für das zertifikat nehme ich momentan alle zum raussuchen halt

                  aber das anscheinend auch nicht gewünscht
                  also wie komme ich nun auf ein spezielles zertifikat?

                  [highlight=c#]
                  X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(
                  col,
                  "Zertifikate",
                  "Das Signaturzertifikat auswählen",
                  X509SelectionFlag.SingleSelection);
                  [/highlight]
                  der part müsste ja nur umgeschrieben werden.

                  ach ja ich soll das ja auch noch in die app.config reinschreiben

                  (das doof praktikant zu sein )

                  Comment


                  • #10
                    Originally posted by Exil View Post

                    pdfreader is halt das standard ding
                    Was meinst du damit? Ich verwende sharpDevelop und da gibt es nichts mit PDFReader

                    bye,
                    Helmut

                    Comment


                    • #11
                      [highlight=c#]
                      PdfReader reader = new PdfReader(Input);
                      [/highlight]

                      für mich ist das eben der standard

                      ich benutze VS2010

                      Comment


                      • #12
                        ich such mir nun damit das Zertifikat raus was ich brauche

                        [highlight=c#]
                        X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
                        certStore.Open(OpenFlags.ReadOnly);

                        X509Certificate2Collection col = certStore.Certificates;

                        X509Certificate2 signCertifcate = null;

                        foreach (X509Certificate2 c in col)
                        {
                        if (c.Subject.Contains(Properties.Settings.Default.CN ))
                        {
                        signCertifcate = c;

                        break;
                        }
                        }
                        [/highlight]

                        und wer wissen will wo diese stehen oder wie man sie verwalten will
                        verwalten:
                        certmgr.msc unter Start im Suchfeld eingeben
                        Speicherort:
                        %UserProfile%\AppData\Roaming\Microsoft\SystemCert ificates\My\Certificates

                        gruß

                        Comment


                        • #13
                          Hallo,

                          Originally posted by Exil View Post
                          [highlight=c#]
                          PdfReader reader = new PdfReader(Input);
                          [/highlight]
                          welcher Verweis ist dazu notwendig? Mir ist nichts bekannt dass diese Klasse im FX exisitert (das soll aber nicht heißen dass es nicht möglich ist )


                          mfG Gü
                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                          Comment


                          • #14
                            ich habe vergessen das ich ja die itextsharp.dll benutze
                            da ist die mit bei
                            Zuletzt editiert von gfoidl; 29.07.2010, 10:57. Reason: Fullquote entfernt

                            Comment


                            • #15
                              Okay, danke, dann werde ich mir das Ganze auch mal ansehen - klingt nämlich sehr interessant!

                              bye,
                              Helmut

                              Comment

                              Working...
                              X