2010-11-03 7 views

Répondre

1

ne sais pas si cela fonctionne, mais voici ce que j'ai trouvé

Vous pouvez utiliser un fichier PDF vierge de la bonne taille de la page en tant que point de départ, puis superposition des segments PDF en position droite comme filigranes en utilisant DDX. Vous devez probablement aplatir le PDF après chaque filigrane a été ajouté.

http://www.houseoffusion.com/groups/cf-talk/thread.cfm/threadid:62109

ai pas testé le code, mais peut-être quelque chose comme ça?

<cfpdf name="resizedPdf" action="addwatermark" source="blank.pdf" copyfrom="image.pdf"> 
<cfpdf name="resizedPdfWithFooter" action="addfooter" source="resizedPdf" text="xyz"> 

voir <cfpdf> doc: http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7995.html

+0

Le PDF que j'ouvre est essentiellement un grand graphique. actuellement 8,5x11, le client veut ajouter un 3 "supplémentaire à la fin pour imprimer les détails ... –

+0

il peut encore fonctionner, commencer avec un fichier PDF vide 8,5 x 14? – Henry

+0

Ok, pas sûr si je fais mon résultat final clair . 1) J'ai un PDF 8,5x11 Je reçois du client 2) Je dois faire que PDF 8.5x14 3) Je dois ajouter un texte de bas de page que je dois ajouter que 3" fond Alors, que J'ai fait jusqu'ici (par votre conseil) est de créer un vide 8,5 x 14 PDF Je puis lire dans le PDF original et créer mon texte de pied de page. Mais avec Watermark dans DDX, je vois seulement comment superposer du texte sur un PDF existant, pas un contenu d'un autre PDF tel qu'il est dans mon original. Donc ce que je me retrouve avec 1 PDF final, mais avec 2 pages, 1 page qui est 8.5x11 avec le texte de pied de page et la deuxième page est le vide 8.5x14 –

2

Avertissement: Je sais très peu sur CF, mais un peu sur iText.

La réponse de Henry fonctionnera, mais elle pourrait être un peu plus efficace.

Vous voulez un PdfStamper. Changer la taille de la page n'est pas quelque chose qui est directement pris en charge à un niveau supérieur, vous devrez donc utiliser des appels d'objets pdf de bas niveau. Comme ceci:

final static float POINTS_PER_INCH = 72f; 
final static float INCHES_TO_ADD = 3f; 

PdfReader reader = new PdfReader(pdfPath); // throws 
PdfStamer stamper = new PdfStamper(reader, outputStream); // throws 

for (int curPageNum = 1; curPageNum <= reader.getNumberOfPages(); ++curPageNum) { 
    PdfDictionary pageDict = reader.getPageN(curPageNum); 
    // pdf rects are stored as [llx, lly, urx, ury]. 
    // X increases to the right, Y increases upward. 
    // Note that the origin doesn't have to be 0,0. 
    PdfArray mediaBox = pageDict.getAsArray(PdfName.MEDIABOX); 
    float curBottom = mediaBox.getAsNumber(1).floatValue(); 
    curBottom -= INCHES_TO_ADD * POINTS_PER_INCH; 
    mediaBox.set(1, new PdfNumber(curBottom)); 
} 

stamper.close(); // throws 

En plus de la boîte multimédia, vous pouvez également modifier le CropBox, en utilisant la même technique « obtenir le rect, régler le bas ». Notez qu'il existe plusieurs autres zones de page qui peuvent exister dans votre PDF et qui peuvent ou ne doivent pas être modifiées ... "boîte d'art", "zone de découpe", "boîte de fond perdu". J'en ai peut-être oublié un ou deux.

Cela entraînera presque certainement une valeur négative pour vos coordonnées Y en bas. Si votre fichier PDF est traité par un logiciel Less-Than-Good, cela pourrait poser problème. Ce serait un bug dans leur logiciel, pas ce processus. Cependant, si vous avez besoin de contourner un problème comme celui-ci, le code de Henry fera l'affaire, produisant des pages avec 0,0 comme le coin inférieur gauche. Adobe ne surveillera pas, pas plus qu'iText lui-même, même si le logiciel écrit en utilisant iText n'est peut-être pas aussi intelligent.

+0

Merci de vous être inscrit. Toujours bon d'apprendre de nouvelles façons d'utiliser iText de CF. – Leigh

Questions connexes