現有的PDF的每一頁到目前爲止,所有的例子似乎涉及添加元數據,同時創建一個新的文件。我想採用現有的PDF並使用壓模向每個頁面的XMP添加一個GUID我如何XMP元數據添加到使用iTextSharp的
1
A
回答
1
在PDF上下文中最常見的XMP用法是當您爲從文檔引用的整個文檔添加XMP流時PDF的根詞典(又名目錄)。
但是,如果你諮詢PDF規範,您注意到XMP可以在許多其他對象的PDF裏面的環境中使用,頁面級是其中之一。如果你看看這個規範,你會發現/Metadata
是頁面字典中的一個可選鍵。它期望對XMP流的引用。
如果要使用iText從頭開始創建PDF文檔,則不會找到添加此元數據的特定方法,但可以使用PdfWriter
中提供的通用addPageDictEntry()
。您將通過PdfName.METADATA
作爲關鍵字並引用已添加到PdfWriter
作爲值的流。
你的問題是不是從頭開始創建PDF,但有關修改現有的PDF。在這種情況下,你還需要頁面字典。這是很容易獲得這些詞典:
PdfReader reader = new PdfReader(src);
int n = reader.getNumberOfPages();
PdfDictionary page;
for (int p = 1; p <= n; p++) {
page = reader.getPageN(p);
// do stuff with the page dictionary
}
這個片段拍攝來回Rotate90Degrees
例子。在這個例子中,我們來看看/Rotate
進入這是一個數字:
PdfNumber rotate = page.getAsNumber(PdfName.ROTATE);
你需要尋找的/Metadata
進入,這是一個流:
PRStream stream = (PRStream) page.getAsStream(PdfName.METADATA);
也許這流null
,在這種情況下,你需要添加一個/Metadata
條目顯示在AddXmpToPage例如:
// We create some XMP bytes
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmpWriter xmp = new XmpWriter(baos, new PdfDictionary());
xmp.close();
// We add the XMP bytes to the writer
PdfIndirectObject ref = stamper.getWriter().addToBody(new PdfStream(baos.toByteArray()));
// We add a reference to the XMP bytes to the page dictionary
page.put(PdfName.METADATA, ref.getIndirectReference());
如果存在XMP流,則需要保留它並向其中添加一些內容。
這是你如何獲得XMP字節:
byte[] xmpBytes = PdfReader.getStreamBytes(stream);
您對這些字節執行你的XML魔術,產生的一個新的名爲byte[]
newXmpBytes。你有這樣的這些新字節替換原始字節:
stream.setData(newXmpBytes);
所有這些操作都在駐留在PdfReader
對象現有的文件來完成。現在,您可以堅持這樣的變化:
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();
reader.close();
相關問題
- 1. 使用itextSharp設置XMP數據5.3.3
- 2. 如何使用itextsharp將動態數據添加到pdf標頭
- 3. 使用javascript閱讀jpeg xmp元數據
- 4. 如何使用XMP修改Sharepoint文檔的元數據?
- 5. 自定義架構到XMP元數據
- 6. 將XMP元數據嵌入到PDF
- 7. IOS:將XMP元數據添加到AAC編碼的m4a文件的好方法?
- 8. 如何將xmp填充到/元數據條目的PDF頁面
- 9. 我如何使用提交提交html <xmp>數據到MySQL使用onsubmit
- 10. 在瀏覽器中使用javascript,如何將xmp元數據嵌入到jpeg中?
- 11. 如何將圖像添加到使用webmatrix的iTextSharp中的表格單元格
- 12. 如何添加二進制imges從數據庫到PDF使用ItextSharp
- 13. 如何使用ActiveState的dom包將數據添加到元素
- 14. 使用iTextSharp添加WMF到PDF
- 15. 使用itextsharp添加書籤到pdf
- 16. 如何添加元數據到maven pom
- 17. 如何創建使用iTextSharp添加到PDF文件的按鈕?
- 18. 如何使用iTextSharp將表格添加到現有的pdf
- 19. 刪除PDF/A上的XMP元數據
- 20. iTextSharp - 如何將PDFPRow添加到PDFPTable?
- 21. 使用iTextSharp將表格元素添加到表格
- 22. itextsharp - 使用右對齊斜體文本添加到PdfPTable單元
- 23. 的Javascript:我如何添加X元素添加到數組
- 24. 如何使用VBA將數據驗證添加到單元格
- 25. 如何使用iTextSharp添加一個空白頁到PDF?
- 26. 如何更改圖像中的XMP Toolkit元數據
- 27. 如何編輯可可中的EXIF,IPTC和XMP元數據?
- 28. 如何保留Objective C中的XMP元數據?
- 29. 如何使用PHP讀取JPG格式的XMP數據?
- 30. 添加元數據到jsTree
太感謝你了(總偷懶的問題,我知道),但我怎麼添加元數據條目。不能保證每個頁面實際上都具有元數據條目。再次感謝 – Rahul 2015-02-10 09:01:54
我正在更新我的問題。 – 2015-02-10 11:05:51