2013-07-02 36 views
9

Sto usando Acrobat XI ho cercato di output un file di testo come questoCome scrivere un file di testo in Acrobat JavaScript

var cMyC = "abc"; 
var doc = this.createDataObject({cName: "test.txt", cValue: cMyC}); 
this.exportDataObject({cName: "test.txt", nLaunch:0}); 

Questo è il lavoro, ma vorrei fornito un percorso fisso e nessun dialogo è un popup per richiedere all'utente di scegliere un percorso di salvataggio

C'è un modo per risolvere il problema? grazie

risposta

6

Tutte le funzioni JavaScript di Acrobat che scrivono un file sul disco locale dell'utente comportano un rischio per la sicurezza, pertanto sono state applicate alcune restrizioni al loro utilizzo. Queste funzioni includono doc.saveAs() e tutte le funzioni di esportazione dati, come doc.exportAsFDF().

Come si può leggere here:

Acrobat ci fornisce due modalità di funzionamento di questi funzioni - con un percorso e senza un percorso. Se nessun parametro percorso è fornito alla funzione, Acrobat visualizza una finestra di dialogo del browser file. La finestra di dialogo del browser file consente agli utenti di controllare il modo in cui i dati vengono salvati su loro sistemi. Se alla funzione viene fornito un percorso, non viene visualizzata alcuna finestra di dialogo e l'operazione viene gestita automaticamente, ovvero l'utente è non necessariamente consapevole del fatto che i dati sono stati salvati sul proprio disco rigido. Questo è un problema di sicurezza, quindi per utilizzare una di queste funzioni in modalità silenziosa , la funzione deve essere eseguita da un contesto privilegiato. Questo indica che il codice deve risiedere in una posizione attendibile. Ad esempio, il codice eseguito dalla finestra della console, un processo batch o un PDF certificato è privilegiato. Quando una di queste funzioni viene utilizzata con un parametro del percorso ed eseguita in un contesto non privilegiato, Acrobat genera un'eccezione . Il ragionamento alla base di questa limitazione è, se il codice non può essere considerato attendibile, quindi l'utente deve selezionare in modo specifico il percorso del file .

Un'altra restrizione sul salvataggio dei dati nel sistema dell'utente è che la specifica del percorso deve essere un percorso sicuro. Un percorso sicuro è uno che non punta a una posizione limitata sul disco rigido dell'utente o uno che potrebbe rappresentare un rischio per la sicurezza. Esempi di queste posizioni limitate sono la cartella di sistema e la cartella principale di qualsiasi disco rigido. Altre cartelle che potrebbero essere limitate dipendono dal sistema operativo e dalla sensibilità degli sviluppatori Acrobat. Nessuno dei due è ben documentato, quindi è meglio usare con attenzione queste funzioni.

A proposito di "percorsi sicuri", l'API Acrobat JS doc.saveASmethod documentation stati:

Acrobat 6.0 ha introdotto il concetto di un percorso sicuro per JavaScript metodi che scrivono i dati sul disco rigido locale sulla base di un percorso passava a da uno dei suoi parametri. Un percorso non può puntare a una cartella critica del sistema , ad esempio una directory root, windows o di sistema. Un percorso è inoltre soggetto ad altri test non specificati. Per molti metodi, il nome del file deve avere un'estensione appropriata per il tipo di dati che deve essere salvato da .Alcuni metodi potrebbero avere una restrizione di non sovrascrittura. Queste ulteriori restrizioni sono indicate nella documentazione. In genere, quando un percorso viene ritenuto non sicuro, viene generata un'eccezione NotAllowedError (vedere Errore oggetto) e il metodo non riesce.

Di sicuro non si può fare con il metodo exportDataObject, dato che non ha parametri path, come si può anche leggere here:

Il parametro "cName" è un ingresso richiesto e specifica lo specifico allegato al file che verrà esportato. Si noti che non vi è alcun parametro del percorso . Esiste infatti un input "cPath" per questa funzione, ma è non più valido. Se si tenta di utilizzare un percorso in questa funzione, l'errore è e genera un'eccezione. Non importa in quale contesto viene chiamata la funzione perché il parametro "cPath" è stato rimosso da per tutti gli usi.

Ulteriori riferimenti:

+0

Grazie per fornire informazioni! Ho provato a utilizzare Doc.exportAsText ma semplicemente non funziona. Per la precisione: 1) Come creare un oggetto di testo, come scriverlo nel file di testo? grazie – user782104

+0

Ho già provato a creare report, creare oggetti dati ma nessuno di essi può essere salvato in un file di testo ..... – user782104

4

Ecco un modo per output in un file di testo percorso fisso utilizzando doc.exportAsText:

// set up output text 
var TEMP_FIELD_NAME = "testHeader" 
var textValue = "test"; 
// add a temporary text field 
var f = this.addField(TEMP_FIELD_NAME, "text", 0, [30,30,100,20]); 
f.value = textValue; 
// export field name and value to defined file 
this.exportAsText({aFields: TEMP_FIELD_NAME, cPath: "test-text.txt"}); 
// remove text field 
this.removeField(TEMP_FIELD_NAME); 

Il file di testo risultante avrà due linee:

testHeader

prova

2

impossibile. Per motivi di sicurezza, il salvataggio automatico di un file non è consentito.

Come indicato nel SDK:

Beginning with Acrobat 6.0, if the parameter cDIPath is non-null, a NotAllowedError exception is thrown and the method fails. 
If cDIPath is not passed to this method, a file selection dialog box opens to allow the user to select a save path for the embedded data object.