2010-11-03 28 views

回答

1

不知道,如果它的工作原理,但這裏是我的發現

您可以使用適當的 頁面大小的空白PDF作爲起點,然後 覆蓋在右 位置的PDF段爲使用DDX的水印。您 可能需要在添加每個水印 之後將PDF平整。

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

沒有測試的代碼,但也許這樣的事情?

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

看到<cfpdf> DOC:http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7995.html

+0

我打開的PDF基本上是一個大圖形。目前8.5x11,客戶想在底部添加一個額外的3「來打印詳細信息... – 2010-11-03 17:53:03

+0

它可能仍然工作,從8.5x14空白PDF開始? – Henry 2010-11-03 18:01:05

+0

好吧,不知道我是否讓我的最終結果清晰。 1)我有一個8.5x11 PDF我從客戶 2接收),我需要做出PDF 8.5x14 3)我需要添加一些頁腳文本,我需要在底部3" 這麼加,什麼我已經完成了(根據您的建議)創建一個空白的8.5x14 PDF 然後,我閱讀原始PDF並創建我的頁腳文本。但對於DDX中的Watermark,我只能看到如何將文本疊加到現有的PDF上,而不是來自另一個PDF中的內容(如我的原始文件中的內容)。 所以我最終得到的是1個最終的PDF,但有2頁,1頁是8.5×11的頁腳文本和第2頁是空白的8.5x14 – 2010-11-03 18:42:12

2

警告:我不是很瞭解CF,但相當多的關於iText的。

亨利的答案會起作用,但它可能會更有效一些。

你想要一個PdfStamper。更改頁面大小不是直接在更高級別上支持的,因此您必須使用低級別的pdf對象調用。就像這樣:

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 

除了媒體中,您可能還需要修改裁剪框,使用相同的「得矩形,調整底」技​​術。請注意,您的PDF中可能存在多個其他頁面框,可能需要或可能不需要修改...「藝術框」,「修剪框」,「流血框」。我可能已經忘記了一兩個。

這幾乎肯定會導致底部Y座標[s]的負值。如果您的PDF是由軟件的一小部分處理,這可能是一個問題。這將是他們軟件中的一個錯誤,而不是這個過程。但是,如果你需要解決這樣的問題,亨利的代碼將做到這一點,產生0,0作爲左下角的頁面。雖然使用iText編寫的軟件可能不那麼精明,但Adobe不會眨眼睛,iText本身也不會。

+0

感謝您的支持。始終善於學習使用CF中的iText的新方法。 – Leigh 2010-11-03 20:00:18

相關問題