我有一个PDF文件,里面有海量的xmp元数据,当我用itext7处理它的时候,程序卡在语句var pdfdoclepdf=new pdffile(pdfader);
查看源代码,发现在Pdffile对象的构造函数中执行了open(null)方法,最后卡在了reader.pdfaconformancelevel=pdfaconformancelevel.getconformancelevel(xmpmatafactory. ParsefromBuff(xmp元数据));
并且没有避免它的选项,xmp元数据对我来说毫无用处。
有了itextSharp,基于PDF/A上的删除XMP元数据,我可以得到一个没有元数据的pdf文件。
PdfReader reader = new PdfReader(src);
PdfDictionary dict = reader.Catalog;
dict.Remove(PdfName.METADATA);
dict.Remove(PdfName.PROPERTIES);
reader.RemoveUnusedObjects();
PdfStamper stamper = new PdfStamper(reader, new FileStream(target, FileMode.Create, FileAccess.ReadWrite));
stamper.Close();
我试图创建PdfReader或PdfDocument的子类,试图干扰元数据的加载,但都失败了。
使用itext7,有没有办法避免加载元数据?或者有没有办法删除XMP元数据?
这就是如何覆盖PdfReader
并跳过元数据对象的读取。事实上,对象是被读取的,但我们读者的行为就像没有元数据一样,它不会告诉任何人它存在。
自定义PdfReader
实现:
private static class MetadataFreePdfReader extends PdfReader {
public MetadataFreePdfReader(String filename) throws IOException {
super(filename);
}
@Override
protected PdfObject readObject(PdfIndirectReference reference) {
PdfObject obj = super.readObject(reference);
if (obj instanceof PdfStream && PdfName.Metadata.equals(((PdfStream) obj).getAsName(PdfName.Type))) {
// skip metadata object
return null;
}
return obj;
}
}
这就是如何将重载实例传递给PdfDocument
:
PdfDocument pdfDocument = new PdfDocument(new MetadataFreePdfReader("C:/path/to/140mmX90mm-2000BGJCV1M.pdf"));
我正在寻找一种在InitState方法上加载异步数据的方法,在构建方法运行之前,我需要一些数据。我使用的是GoogleAuth代码,我需要执行build方法,直到流运行为止。 我的initState方法是: 如有任何反馈,我将不胜感激。
好的,所以我有一个小问题,扫描器前进了一条额外的线。我有一个文件,其中有许多行包含整数,每行由一个空格分隔。文件中的某个地方有一行没有整数,只有单词“done”。当发现完成时,我们退出循环并打印出小于每行中每个给定整数的最大素数整数(如果整数已经是素数,则不对其进行任何处理)。我们一直这样做,直到“完成”为止。 我的问题:假设文件包含6行,第6行是完成这个词。我的输出将跳过第1、3和5行。它只会返
我正在开发一个反应原生应用程序并使用Firebase fiRecovery作为集中式数据库。在将用户数据放在firest之前,我正在使用crypto js加密数据。现在我想在数据库中搜索,问题是数据已加密,当我再次尝试加密相同的数据时,crypto js会创建不同的加密数据。有没有可能在Firebase中搜索加密数据,而无需在移动应用程序中加载数据然后解密它?
问题内容: 有没有办法用TypeScript语言进行方法重载? 我想实现以下目标: 这是我不想做的一个例子(我真的很讨厌JS中重载hack的那一部分): 问题答案: 根据规范,TypeScript确实支持方法重载,但是它很笨拙,并且包含许多手动检查参数类型的工作。我认为这主要是因为在纯JavaScript中最接近方法重载的地方还包括检查,并且TypeScript尝试不修改实际的方法主体,以避免任何
问题内容: 我正在尝试为旧框架实施一些单元测试。我正在尝试模拟数据库层。不幸的是,我们的框架有些陈旧,没有很好地使用最佳实践,因此没有明确的关注点分离。我有点担心尝试模拟数据库层可能会使JVM加载大量甚至无法使用的类。 我不太了解类加载器,所以这可能不是问题。是否有办法在一个特定的ClassLoader加载的所有类中发挥最大作用,以证明引擎盖下发生了什么? 问题答案: 警告使用 将产生巨大的产出。
问题内容: 在我的不和谐机器人中,我有2个命令来赋予和创建角色。它们工作得很好,但是如果角色名称包含空格,那么我有问题。它将第二个单词计入第二个参数,使命令产生错误。 理想情况下,我应该能够执行类似的操作,但会收到“无效用户”错误。我有什么办法可以在角色名称中支持空格?提前致谢! 问题答案: 您有几种选择: 使用角色转换器并要求提及角色: 要求角色用引号引起来: 切换两个参数的位置,以使转换后的用