Domanda

Ho bisogno di aggiungere del testo formattato a un campo modulo PDF utilizzando iTextSharp e io non riesco a capirlo. Questo è il modo Attualmente sto impostando i campi, ma alcune parti del testo inserito dovrà essere in grassetto o hai qualche formattazione.

stamper.AcroFields.SetField("fieldName", "fieldValue")
stamper.FormFlattening = True

Ho visto altrove che dovrei essere in grado di inserire un po 'di XML che include le informazioni di formattazione, invece, ma non ho idea di che cosa questo xml dovrebbe essere simile.

Ecco la sezione da quella pagina che mi porta a credere che quello che voglio è possibile:

  

Ancora francobolli il codice XML effettivo   in campo e il lettore non   renderlo testo ricco di timbrato   PDF.

E la risposta a lavorare a questo:

  

Per funzionare dovrete chiamare   AcroFields.setGenerateAppearances (false).   Si noti che le versioni più vecchie Reader non lo fanno   generare le apparenze.

Che cosa dovrebbe questo xml assomigliare, o c'è un altro modo per ottenere questo?

È stato utile?

Soluzione

Qualche tempo fa, ho aggiunto la possibilità di iText per impostare il valore di testo ricco di un campo. Non ho aggiunto alcun codice di rendering per questo backup.

Ciò significa che l'unico modo per vedere il valore che è ricca attraverso un visualizzatore di PDF che lo sostiene (Reader / Acrobat). Al fine per loro sapere che hanno bisogno di ricostruire tutte le apparenze di campo, si deve chiamare acroFields.setGenerateAppearances(false). Questo disabilita la generazione l'aspetto di iText, e invece chiede che il visualizzatore di PDF farlo per voi.

Se si desidera appiattito rich text interamente all'interno iText [Sharp] si sta andando ad avere a che fare qualcosa di irregolare:

  1. Disegna il testo ricco in una pagina PDF in un documento separato. Le dimensioni di questa pagina deve corrispondere alla dimensione del campo. Salvarlo fuori (un flusso di memoria va bene).
  2. Aggiungi un nuovo PushbuttonField, impostato su LAYOUT_ICON_ONLY. Utilizzare lo stesso riquadro di delimitazione del campo di testo originale. Impostare il colore di sfondo del pulsante per null (trasparente).
  3. Crea una PdfImportedPage della pagina ricchi di testo e impostare la pagina importati per essere l'icona del nuovo PushbuttonField (template).
  4. Unico livello.

dolorosa, ma efficace.

Si può fare # 1 con HTMLWorker e utilizzare il vostro originale rich text / HTML come input.

In realtà, probabilmente si potrebbe ottenere un po 'più efficiente con una HTMLWorker l'alimentazione di un oggetto ColumnText per rendere il codice HTML nello stesso documento, piuttosto che uno nuovo, quindi scriverlo e leggerlo nuovamente. Improvvisare una PdfTemplate da DirectContent qualsiasi vecchia pagina con il rettangolo di selezione appropriata.

Che sarebbe molto meno schifo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top