Rendere un documento immodificabile e chiavi di processo

  • Creatore
    Topic
  • #94628
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Ciao,
      esiste un modo per bloccare la compilazione di un sorgente e rendere il documento composto non più modificabile?
      Avrei la necessità di garantire che al termine del ciclo di produzione il documento composto non possa più essere modificato pur rimanendo accanto al rispettivo sorgente con uso d’archivio.

      Per il momento mi regolo in questo modo:
      Inserisco delle chiavi con un timestamp all’inizio del sorgente tramite uno script in Lua che funziona all’interno di TeX Works. Per esempio posso trovare questo in un sorgente:
      `% 03/06/2014::08:55:25 :: COPY FROM Lotto 1
      % 03/06/2014::08:58:51 :: END

      % 06/06/2014::09:09:34 :: PROT :: CLOSED`
      Inoltre, cancello tutti i file ausiliari lasciando solo il sorgente ed il pdf.

      Devo ancora mettere a punto la lista delle chiavi, ma è chiaro che quando trovo scritto ‘CLOSED’ significa che il documento non può più essere modificato perché esso è stato stampato, firmato e protocollato.

      Credo sia un’iteressante questione.
      Se qualcuno vuole, può anche indicarmi suggerimenti per le chiavi da usare per il processamento.
      Grazie.
      R.

    Visualizzazione 4 filoni di risposte
    • Autore
      Risposte
      • #94629
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Dipende da cosa vuoi farne.
          Se il documento da rendere immodificabile resta sui tuoi calcolatori, e questi sono di tipo UNIX (Linux,MacOS X) puoi togliere con chmod l’attributo w sia a te stesso sia a chiunque altro.
          Ma ho il sospetto che poi potresti avere degli ignghippi; certo se poi vuoi modificare il documento per qualsiasi motivo, devi prima rimettere l’attributo w almeno a te stesso. Sulle macchine Windows, forse ora con win7 o Win 8 c’è qualche possibilità, ma non la conosco; con i sistemi operativi precedenti di sicuro esisteva la possibilità di mettere/togliere l’attributo W ai file mediante il comando (pseudo)DOS da terminale ATTRIB, ma siccome non vi era la distinzione fra system, owner, group, others e simili, chiunque poteva schiodare il file.

          Se vuoi che il PDF sia immodificabile fuori dei tuoi calcolatori bisogna che ti munisci di programmi ad hoc che riescono sia a schiodare sia a inchiodare i file PDF. Io non me ne sono mai procurato uno, ma so che esistono anche di gratuiti. Le security che si possono impostare con Adobe Acrobat Professional sembra ce possano essere schiodate anche da un dilettante, ma non ho mai avuto la passione degli hacker, non ho la certezza di quanto affermo.

        • #94630
          robitex
          Amministratore del forum
            Up
            0
            Down
            ::


            Ciao Claudio.
            Lavoro (piuttosto devo lavorare) su Windows XP 🙂

            Pensavo a qualche primitiva per pdftex che fermasse la compilazione se inserita nel sorgente (non vorrei manipolare gli attributi dei file).
            In questo modo gestisco completamente tramite direttive nel sorgente il processo di produzione che viene completamente tracciato, dalla creazione del file fino all’emissione ufficiale del documento.

            Le cose che interessano un documento possono essere di due tipi: eventi e status.
            Quando compio un’azione su di esso genero un evento (per esempio la correzione di un titolo), mentre lo status determina il punto in cui mi trovo nella produzione del documento (per esempio la fase iniziale o l’emissione).
            Conviene semplificare al massimo queste codifiche perché siano effettivamente utili e stabilire quando e cosa fare per tracciare le modifiche.
            A volte, applico questo chiavi anche a singole parti del sorgente senza una regola fissa.
            Sono sempre stato un po’ maniaco di codifiche sui documenti…

            Per ora il progetto di specifiche è questo:
            `
            :: INIT -> costruzione del file
            :: CLOSED -> il documento è stato emesso
            :: SIGNED -> il documento è stato firmato in modo completo
            :: PROT -> il documento è stato protocollato
            :: VERSIONED -> il documento ha cambiato versione per una modifica importante
            :: MODIFIED -> la versione corrente è stata modificata`
            Grazie.
            R.

          • #94631
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Non ho capito bene, ma mi pare che potresti intelligentemente usare con un argomento adeguato il comando \pdfinclusionerrorlevel descritto nella pagina 31 del documento pdftex-a.pdf che leggi di default usando texdoc pdftex. In questa sezione di documento sono descritti molti comandi primitivi di pdftex; cercando bene si trovano cose che di solito non usiamo mai, se non altro perché non sono disponibili nel programma tex di Knuth ma non si possono usare con il programma latex né con xelatex, perché l’interprete non è pdftex. (be’, ora lo è per latex, anche se viene prodotto il file dvi, ma non lo è per xelatex).

              Vedi tu se questo comando ti può servire.
              Ciao
              Claudio

            • #94632
              Up
              0
              Down
              ::


              Per impedire la compilazione puoi dare un’occhiata al codice del TeX Book, ma quello non impedisce di modificare il sorgente e quindi di rimuovere la limitazione.

            • #94633
              robitex
              Amministratore del forum
                Up
                0
                Down
                ::


                Lo so, sono un genio!
                🙂
                `\newcommand\closed{%
                \AtBeginDocument{%
                \ClassError{myclass}{Closed document}
                {This document cannot be modified}}}`
                🙂

                R.

            Visualizzazione 4 filoni di risposte
            • Devi essere connesso per rispondere a questo topic.

            Go to top