首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将元数据存储在只有我的应用程序才能编辑的pdf中?

如何将元数据存储在只有我的应用程序才能编辑的pdf中?
EN

Stack Overflow用户
提问于 2017-04-05 12:52:08
回答 1查看 168关注 0票数 0

我在我的应用程序中实现了功能,允许用户通过使用pdfbox库绘制各种相邻的半圆来绘制云。我需要有关这些云的位置的信息,以检测用户的单击位置是否对应于一个cloud.Since,pdfbox库没有提供关于这些云位置的任何信息,我使用以下代码将它们的位置存储在pdf的元数据字段中(同时绘制云)。

代码语言:javascript
复制
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一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-10 06:55:25

下面是解决我问题的代码:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43231794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档