Вот пример, который работает с CF9. Есть, вероятно, более элегантные методы, но это должно дать вам основную идею.
Примечание. IIRC CF8 использует более раннюю версию iText (1.4). CF9 использует 2.1.0. Поэтому я относительно уверен, что он не будет работать «как есть» с CF8. При необходимости вы можете использовать JavaLoader.cfc для запуска более поздней версии.
Обновление: Изменено, чтобы показать один из способов определения определенного шрифта, размера и цвета. Правильные настройки будут различаться в зависимости от вашей системы, желаемого шрифта, кодировки и т. Д.
<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>
Что вы подразумеваете под «текстом». Текст ссылки, или что-то еще ..? – Leigh
да, текст ссылки – Alain
Просто любопытно, но вы попробовали использовать cfpdf action = "addWatermark", чтобы добавить изображение? Так как вы все равно пишете над overContent, это по сути то же самое. Кажется, он поддерживает все необходимые свойства: непрозрачность, страницы, передний план и положение. Стоит кадр в любом случае .. – Leigh