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]