Apache PDFBox库是一个用于处理PDF文档的开源Java工具。该项目允许创建新的PDF文档,处理现有文档以及从文档中提取内容的功能。 Apache PDFBox还包括几个命令行实用程序。
当 pdf 在 PAC3 中运行时,显示“索引超出数组范围”之类的错误。并跳过所有检查?
即使有标签和没有标签也会发生此问题。并跳过 PAC3 的所有检查。如何解决pdf中的这个问题。但如果我在 adobe 中自动标记此页面,那么问题就解决了。我创建了 e...
我需要在给定我已经提取的特定坐标的情况下突出显示现有 PDF 中的一组单词。 我正在使用 Apache 的 pdfbox(最新版本 2.0.8)。 有一个示例文件...
在我的项目中,我需要合并几个pdf文档。每个文档仅包含一页以及多个可选内容组 (OCG)。许多 OCG 未激活并且在 pdf 视图中不可见...
使用 PDFMergerUtility 合并 PDF,而不丢失标签
我正在尝试使用 PDFMergerUtility (PDFBOX 2.0.10) 合并带标签的 PDF(已启用辅助功能)文件,但合并的文档不保留标签! 所有 PDF 均已标记。
PDFBox 3.2:PDF/UA 中图像标签的 PAC 中缺少边界框错误
我正在尝试使用 PDFBox 3.2 创建 PDF/UA 文档,并且我遵循了 @Tilman Hausherr 在这篇 Stack Overflow 帖子中建议的解决方案。我设法标记文本元素和图像,...
如何从PDFBox 2.0.2中的PDDocument中提取字体
我已经在以前的版本中看到了如何执行此操作,如下所示: 如何使用pdfbox提取文本内容的字体样式? 但我认为 getFonts() 方法现在已被删除。我想找回一个...
创建符合 PDF/UA 合规性的 PDF 时出现问题 - PAC 检查器显示“测试对象未标记”
我目前正在生成一个符合 PDF/UA 标准的 PDF 文件。我的主要目标是确保它符合辅助功能标准并通过 PAC(PDF 辅助功能检查器)工具。 亲...
我收到一份 A4 页的文档,每页有 8 个 A7 部分。 我需要从每个页面的每个 A7 区域中提取数据,因为它们是相关的。 有没有可能把8个A7中的每一个A4打碎然后去...
Apache pdfbox - 将 A4 页面拆分为 A7 部分
我收到一份 A4 页的文档,每页有 8 个 A7 部分。 我需要从每个页面的每个 A7 区域中提取数据,因为它们是相关的。 有没有可能把8个A7中的每一个A4打碎然后去...
PAC 2024 验证工具,给我那个错误。 元数据:PDF/UA 标识符丢失 我用 org.apache.pdfbox:pdfbox:3.0.2 如何为 PDDocument 设置标识符?
我有以下问题: 我想将 PDF/A-1A 文档转换为 PDF/A-3A。 原始文档经过 Arobat Reader Pro 验证,因此我可以假设它符合 PDF/A-1A 标准。 我尝试转换...
我有一个带标签的 PDF(符合 PDF-UA 标准),结构简单: 我需要添加注释: 我有一个带标签的 PDF(符合 PDF-UA 标准),结构简单: 我需要添加注释: <?xml version="1.0" encoding="UTF-8"?> <xfdf xmlns="http://ns.adobe.com/xfdf/"> <annots> <text color="#FFC333" date="D:20240425000000" flags="print,nozoom,norotate" opacity="0.600000" page="0" rect="43.086,707.79,63.086,732.79" title="ABC"> <contents-richtext> <body xmlns="http://www.w3.org/1999/xhtml"> <p dir="ltr">Sample comment</p> </body> </contents-richtext> <popup flags="nozoom,norotate" open="yes" page="0" rect="595.0,507.78998,790.0,632.79"/> </text> </annots> </xfdf> 在嵌套标签Annot中,在标签P中。像这样(我在 Adobe Acrobat 中手动制作): 我能够将 XFDF XML 导入 PDF: PDDocument document = PDDocument.load(new File("tagged.pdf")); FDFDocument fdfDoc = FDFDocument.loadXFDF(new File("annotation.xfdf")); List<FDFAnnotation> fdfAnnots = fdfDoc.getCatalog().getFDF().getAnnotations(); List<PDAnnotation> pageAnnotations = new ArrayList<>(); for (int i=0; i < fdfAnnots.size(); i++) { FDFAnnotation fdfannot = fdfAnnots.get(i); PDAnnotation pdfannot = PDAnnotation.createAnnotation(fdfannot.getCOSObject()); pdfannot.constructAppearances(); pageAnnotations.add(pdfannot); } document.getPage(0).setAnnotations(pageAnnotations); document.save(new File("tagged_with_annotation.pdf")); 但是 veraPDF 检查器输出: 注释(不包括子类型 Widget、PrinterMark 或 Link 的注释)应嵌套在 Annot 标签内 和 PDF 辅助功能检查器(PAC 工具)输出: 注释未嵌套在“Annot”结构元素内 正如预期的那样,因为我没有为导入的注释设置“annot”标签(和具体位置)。 此外,我还可以获得标签P对象: PDDocumentCatalog pdDocumentCatalog = document.getDocumentCatalog(); PDStructureTreeRoot pdStructureTreeRoot = pdDocumentCatalog.getStructureTreeRoot(); COSArray aDocument = (COSArray)(pdStructureTreeRoot.getK().getCOSObject()); COSObject oDocument = (COSObject) aDocument.get(0); COSArray aPart = (COSArray)oDocument.getItem(COSName.K).getCOSObject(); COSObject oPart = (COSObject) aPart.get(0); COSArray aSect = (COSArray)oPart.getItem(COSName.K).getCOSObject(); COSObject oSect = (COSObject) aSect.get(0); COSArray aP = (COSArray)oSect.getItem(COSName.K).getCOSObject(); COSObject oP= (COSObject) aP.get(0); 但我不明白如何编辑PDF中现有的标签树。 问题:如何使用PDFBox将现有标签树中的标签和注释添加到PDF中? 更新:示例 PDF 和 XFDF 此处。 这是我的第一次尝试。我没有 PAC 工具(或者我找不到它),所以我需要知道出了什么问题(如果有)。我已将注释放在数组的末尾Root/StructTreeRoot/K/[0]/K/[0]/K/[0]/K,在另一个文件中,它是数组中的第一项。 (COSArray 显然没有“插入”) PDStructureTreeRoot structureTreeRoot = doc.getDocumentCatalog().getStructureTreeRoot(); PDPage page = doc.getPage(0); PDAnnotation annotation = page.getAnnotations().get(0); COSArray aDocument = (COSArray) structureTreeRoot.getK(); COSDictionary oDocument = (COSDictionary) aDocument.getObject(0); COSArray aPart = oDocument.getCOSArray(COSName.K); COSDictionary oPart = (COSDictionary) aPart.getObject(0); COSArray aSect = oPart.getCOSArray(COSName.K); COSDictionary oSect = (COSDictionary) aSect.getObject(0); COSArray aP = oSect.getCOSArray(COSName.K); COSDictionary anDict = new COSDictionary(); // PDStructureElement anDict.setItem(COSName.S, COSName.ANNOT); anDict.setItem(COSName.P, aSect.get(0)); // assign aP but as ref PDObjectReference objRef = new PDObjectReference(); anDict.setItem(COSName.K, objRef); objRef.setReferencedObject(page.getAnnotations().get(0)); objRef.getCOSObject().setItem(COSName.P, anDict); //TODO check if needed in PDObjectReference API? objRef.getCOSObject().setItem(COSName.PG, page); //TODO check if needed in PDObjectReference API? aP.add(anDict); int parentTreeNextKey = structureTreeRoot.getParentTreeNextKey(); // -1, ignored here PDNumberTreeNode parentTree = structureTreeRoot.getParentTree(); Map<Integer, COSObjectable> numberTreeAsMap = getNumberTreeAsMap(parentTree); Set<Integer> keySet = numberTreeAsMap.keySet(); int maximum = keySet.stream().reduce(Integer::max).get(); annotation.setStructParent(maximum + 1); structureTreeRoot.setParentTreeNextKey(maximum + 2); numberTreeAsMap.put(maximum + 1, anDict); parentTree = new PDNumberTreeNode(PDParentTreeValue.class); parentTree.setNumbers(numberTreeAsMap); structureTreeRoot.setParentTree(parentTree); getNumberTreeAsMap 是 PDFMergerUtility 中的一个便捷方法 static Map<Integer, COSObjectable> getNumberTreeAsMap(PDNumberTreeNode tree) throws IOException { if (tree == null) { return new LinkedHashMap<>(); } Map<Integer, COSObjectable> numbers = tree.getNumbers(); if (numbers == null) { numbers = new LinkedHashMap<>(); } else { // must copy because the map is read only numbers = new LinkedHashMap<>(numbers); } List<PDNumberTreeNode> kids = tree.getKids(); if (kids != null) { for (PDNumberTreeNode kid : kids) { numbers.putAll(getNumberTreeAsMap(kid)); } } return numbers; }
使用 Java Apache PdfBox 在 PDF 模板中生成边框
在不久的将来我将开发一个PDF生成服务。这都是关于使用来自请求的数据填充一个简单的模板。 在我的研究过程中,我听说了 Apache PDFBox 和...
PDFbox 中的 PDF 字段无法在移动设备上打印(Android 通用 pdf 查看器问题)
我使用 pdfbox 生成 pdf 并设置一些字段。 下载的 pdf 缺少打印预览中的字段,并且不会在 ios 和 android 的默认 pdf 查看器中打印,但如果我安装 adobe
有时我们希望删除 PDF 文档的写保护/“加密”和数字签名,以便可以更改和重新签名文档。例如。因为原来的
无法使用 PDFBox 将 TIFF 图像添加到 PDF 中
我在尝试使用 PDFBox 3.0.3 创建包含多个 TIF 图像的 PDF 时遇到了一些问题。 :( 我尝试了几种不同的方法,但到目前为止都没有奏效。我基本上得到了
我有http://laws-lois.justice.gc.ca/PDF/A-8.8.pdf,我正在尝试使用有2列的PDFBox进行解析。 我希望解析文本以便将列分开,但是当我运行它时
pdfbox3.0.1在启动应用程序调用pdfbox api时生成大量警告消息
警告信息 2024-09-18 10:14:02.363 警告 -[]-[,,,,]-[http-nio-8080-exec-2] o.a.p.p.font.FileSystemFontProvider 651: 找到 2478 个新字体,字体缓存将被重新设置建成 2024-09-18 10:14:02.365
我正在尝试使用Java以结构化方式将表数据提取为表。 过去两年我一直在使用 pdfbox 和 tabula。 但问题是pdfbox返回的是pd中的所有数据...