2010-08-09 9 views
4

J'ai des rapports convertis en PDF. Certains de ces rapports ont des informations manquantes simplement parce que nous ne les suivons pas. J'ai créé un autre PDF avec le shell du rapport et placé des contrôles de champs d'entrée sur celui-ci. Je voudrais savoir s'il existe un moyen d'appliquer le PDF shell au PDF converti afin que les utilisateurs puissent entrer des informations dans ces champs vides sans avoir à les imprimer et les écrire à la main? Je l'ai fait manuellement via Adobe Acrobat Pro 9.3 en appliquant le PDF généré au shell PDF en tant que couche. J'ai fait autant fouiner avec iTextSharp concernant couches, mais je n'ai toujours rien trouvé qui a fonctionné.iTextSharp ajoute un fichier PDF préexistant en tant que calque à un autre fichier PDF

Nous vous remercions d'avance!

+0

Qu'en est-il de l'utilisation d'iTextSharp pour «dessiner» les informations textuelles sur les PDF «convertis» plutôt que d'essayer de superposer deux pages PDF ensemble? –

Répondre

2

1) Les calques ne fonctionneront pas avec les champs. Les calques PDF font partie du contenu de la page. Les champs de formulaire, comme toutes les annotations, flottent au-dessus de la page. 2) Cela étant dit, vous pouvez masquer et révéler les champs de formulaire à l'aide d'Acrobat/Reader JavaScript. L'objet « doc » est généralement « ce » points sur le terrain et à l'entrée de la page, afin de montrer un champ donné, il est juste:

var fld = this.getField("fieldName"); 
fld.hidden = false; 

Il y en a plusieurs endroits différents, vous pouvez ajouter JS à un fichier PDF. Divers événements de champ, événements de page et événements de document. Vous pouvez également définir l'action d'une couche sur un JavaScript. Heck vous pouvez définir l'action d'un signet à javascript au lieu d'une action "aller là-bas".

Notez que les couches sont appelées «groupes de contenu facultatifs» (OCG) dans PDF tech-speak. Si vous vraiment voulez créer une couche, il semble que ce serait quelque chose comme ceci:

// layer implements PdfOCG 
PdfLayer layer = new PdfLayer("MyLayer", writer); 

PdfContentByte cb = getAContentByteFromSomewhere(); 

cb.beginLayer(layer); // takes PDFOCG object 

/* draw stuff to be part of that layer */ 

cb.endLayer(); 

Il y a un certain nombre d'exemples sur le site iText correspondant à « iText En action, 2ème édition » (I ne soyez pas payé, l'auteur est un ami). The aforementioned examples can be found here. Cela vaut la peine d'être répété: Les champs ne peuvent pas faire partie d'un OCG (couche). Ils peuvent cependant être scriptés pour agir comme ils le sont.

Questions connexes