Voici un exemple approximatif qui fonctionne avec CF9. Il y a probablement des méthodes plus élégantes, mais cela devrait vous donner l'idée de base.
Remarque - L'IIRC CF8 utilise une version antérieure d'iText (1.4). CF9 utilise 2.1.0. Je suis donc relativement certain qu'il ne fonctionnera pas «tel quel» avec CF8. Si nécessaire, vous pouvez utiliser JavaLoader.cfc pour exécuter une version ultérieure.
Mise à jour: Modifié pour afficher une manière de définir une police, une taille et une couleur spécifiques. Les paramètres corrects varient en fonction de votre système, de la police souhaitée, de l'encodage, etc.
<cfscript>
inputPath = "c:\sourceFile.pdf";
outputPath = "c:\sourceFileWithLink.pdf";
try {
// initialize objects
pdfReader = createObject("java", "com.lowagie.text.pdf.PdfReader").init(inputPath);
outStream = createObject("java", "java.io.FileOutputStream").init(outputPath);
pdfStamper = createObject("java", "com.lowagie.text.pdf.PdfStamper").init(pdfReader, outStream);
// create a chunk with a link to www.google.com
chunk = createObject("java", "com.lowagie.text.Chunk").init("Go To Google");
chunk.setAnchor("http://www.google.com");
//////////////////////////////////////////
// Define embedded font
BaseFont = createObject("java", "com.lowagie.text.pdf.BaseFont");
Font = createObject("java", "com.lowagie.text.Font");
bf = BaseFont.createFont("c:/windows/fonts/Framd.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);
// Create the main font object (size 14)
Color = createObject("java", "java.awt.Color");
textFont = Font.init(bf, 14, Font.UNDERLINE, Color.RED);
// Apply the font to the chunk text
chunk.setFont(textFont);
//////////////////////////////////////////
// prepare to write the link onto the *first* page only
cb = pdfStamper.getOverContent(1); // first page
ct = createObject("java", "com.lowagie.text.pdf.ColumnText").init(cb);
ct.addElement(chunk);
// position towards bottom right of page
page = pdfReader.getPageSize(1);
llx = page.getRight()-200;
lly = page.getBottom();
urx = page.getRight();
ury = page.getBottom() + 36;
// initialize column dimensions
ct.setSimpleColumn(llx, lly, urx, ury);
// write the text
ct.go();
WriteOutput("Finished!");
}
finally
{
// cleanup
if (IsDefined("pdfStamper")) {
pdfStamper.close();
}
if (IsDefined("outStream")) {
outStream.close();
}
}
</cfscript>
Que voulez-vous dire par "texte". Le texte du lien, ou autre chose ..? – Leigh
oui, le texte du lien – Alain
Juste curieux, mais avez-vous essayé d'utiliser cfpdf action = "addWatermark" pour ajouter l'image? Puisque vous écrivez sur overContent de toute façon, c'est essentiellement la même chose. Il semble soutenir toutes les propriétés nécessaires: opacité, pages, premier plan et position. Ça vaut le coup de toute façon .. – Leigh