我在我的应用程序中实现了功能,允许用户通过使用pdfbox库绘制各种相邻的半圆来绘制云。我需要有关这些云的位置的信息,以检测用户的单击位置是否对应于一个cloud.Since,pdfbox库没有提供关于这些云位置的任何信息,我使用以下代码将它们的位置存储在pdf的元数据字段中(同时绘制云)。
PDDocumentCatalog catalog = doc.getDocumentCatalog();
PDMetadata pdMetaData = catalog.getMetadata();
// Code to append new metadata to previous stored meta data.
java.io.InputStream newData = new java.io.ByteArrayInputStream(Encoding.UTF8.GetBytes(newMetaData));
PDMetadata newPDMetadata = new PDMetadata(doc, newData, false);
catalog.setMetadata(newPDMetadata);我将位置数据存储在元数据field.And中,当要存储新的位置数据时,我提取以前的元数据并添加与新云location.And对应的新的xml标记,再次将xml存储在pdf的元数据field.But中,这种方法的问题是,如果用户使用其他pdf编辑器,可能会在元数据字段中存储一些数据,则会覆盖pdf的元数据字段。是否有一种方法可以将元数据存储在pdf中作为键值pair.So,它只能由知道对应数据的密钥的人编辑,就像网站存储cookie一样。
发布于 2017-04-10 06:55:25
下面是解决我问题的代码:
int pageNum = 0;
PDPage page = (PDPage)doc.getDocumentCatalog().getAllPages().get(pageNum);
COSName markupMetadataElement = COSName.getPDFName(Key);
COSDictionary dictionary = page.getCOSDictionary();
COSString newCosString = new COSString(newMetaData);
dictionary.setItem(markupMetadataElement, newCosString);https://stackoverflow.com/questions/43231794
复制相似问题