Thanks for the effort. I'll give it a try! Max
> On 24 Feb 2017, at 18:48, Tilman Hausherr <[email protected]> wrote: > > Am 24.02.2017 um 10:28 schrieb Max Rietmeijer | Add to Favorites: >> Hi Tilman, >> >> Thanx for the reaction. Our printing company depends in CMYK colors to make >> offset prints. We create letters for clients who (of course) are very keen >> on company (logo) colors printed in the right tones. These are always >> delivered to us in InDesign/Illustrator/... using CMYK colors. >> >> Converting images to a specific format is no problem for us, but we need a >> way of preserving CMYK colour information in the PDF. When exporting PDF's >> using InDesign this information is preserved. How would we go about using >> PDFBox? >> >> We tried twelvemonkeys, but their JPG codec either converts CMYK to RGB or >> creates an unusable image format. >> >> The attached image is a CMYK color based JPEG we should be able to include >> as is. > > The image didn't get through, but then I remembered I could simply copy a > JPEG from a PDF from my collection. So here's some quick code, you need the > twelvemonkeys library for it: > > try (PDDocument doc = new PDDocument()) > { > PDPage page = new PDPage(); > doc.addPage(page); > try (PDPageContentStream cs = new PDPageContentStream(doc, page)) > { > // using Root/Pages/Kids/[1]/Resources/XObject/I2200006 from > PDFBOX-2128-PORSCHE_CMYK > File f = new File("cmyk.jpg"); > > BufferedImage bim = ImageIO.read(f); > > PDImageXObject img = new PDImageXObject(doc, new > FileInputStream(f), > COSName.DCT_DECODE, bim.getWidth(), bim.getHeight(), > 8, PDDeviceCMYK.INSTANCE); > COSArray decode = new COSArray(); > decode.add(COSInteger.ONE); > decode.add(COSInteger.ZERO); > decode.add(COSInteger.ONE); > decode.add(COSInteger.ZERO); > decode.add(COSInteger.ONE); > decode.add(COSInteger.ZERO); > decode.add(COSInteger.ONE); > decode.add(COSInteger.ZERO); > img.setDecode(decode); > > cs.drawImage(img, 0, page.getMediaBox().getHeight() - > img.getHeight()/ 4, img.getWidth() / 4, img.getHeight() / 4); > } > doc.save(new File("cmyk.pdf")); > } > > Note that this code will work ONLY for CMYK Jpeg files. > > The decode array was in the original PDF, I don't know if this is needed for > all CMYK files. > > Tilman > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

