Hi, my library among others tries to convert from PDF/A-1 to A-3.
Now somebody reported (https://github.com/ZUGFeRD/mustangproject/issues/249, includes sample file) that errors are reported when validating the output but not when reporting the input. https://stackoverflow.com/questions/31209981/pdfbox-pdf-a-1a-to-pdf-a-3a suggests to remove incomplete CIDsets using the following code |private void removeCidSet(PDDocumentCatalog catalog) { COSName cidSet = COSName.getPDFName("CIDSet"); // iterate over all pdf pages for (Object object : catalog.getAllPages()) { if (object instanceof PDPage) { PDPage page = (PDPage) object; Map<String, PDFont> fonts = page.getResources().getFonts(); Iterator<String> iterator = fonts.keySet().iterator(); // iterate over all fonts while (iterator.hasNext()) { PDFont pdFont = fonts.get(iterator.next()); if (pdFont instanceof PDType0Font) { PDType0Font typedFont = (PDType0Font) pdFont; if (typedFont.getDescendantFont() instanceof PDCIDFontType2Font) { PDCIDFontType2Font f = (PDCIDFontType2Font) typedFont.getDescendantFont(); PDFontDescriptor fontDescriptor = f.getFontDescriptor(); if (fontDescriptor instanceof PDFontDescriptorDictionary) { PDFontDescriptorDictionary fontDict = (PDFontDescriptorDictionary) fontDescriptor; fontDict.getCOSDictionary().removeItem(cidSet); } } } } } } } | Is that the right approach? Then my issue is I'm on PDFBox 2.0: How do I upgrade the three lines starting with |if (fontDescriptor instanceof PDFontDescriptorDictionary) { | from PDFbox 1.8(?) to 2.0? Apparently PDFontDescriptorDictionary has been removed and I can't find a replacement, my code looks like this (and the strikethrough part will raise "cannot resolve" errors): COSName cidSet = COSName.getPDFName("CIDSet"); // iterate over all pdf pages for (Object object : doc.getPages()) { if (object instanceof PDPage) { PDPage page = (PDPage) object; PDResources res = page.getResources(); for (COSName fontName : res.getFontNames()) { try { PDFont pdFont = res.getFont(fontName); if (pdFont instanceof PDType0Font) { PDType0Font typedFont = (PDType0Font) pdFont; if (typedFont.getDescendantFont() instanceof PDCIDFontType2) { PDCIDFontType2 f = (PDCIDFontType2) typedFont.getDescendantFont(); PDFontDescriptor fontDescriptor = pdFont.getFontDescriptor(); if (fontDescriptor instanceof PDFontDescriptorDictionary) {PDFontDescriptorDictionary fontDict = (PDFontDescriptorDictionary) fontDescriptor; fontDict.getCOSDictionary().removeItem(cidSet); } } } } catch (IOException e) { e.printStackTrace(); } // do stuff with the font } } } Thanks and kind regards Jochen -- mit freundlichen Grüßen Jochen Stärk www.usegroup.de Huswertstraße 14 60435 Frankfurt Tel: (069)569940-20 Fax: (069)569940-19 Mobil: (0177)4512645