Java 如何将两个图像合并为PDF

Java 如何将两个图像合并为PDF,java,pdf,itext,Java,Pdf,Itext,我有两张图片:fon.jpg(CMYK类型)和logo.png(透明背景)。 我想合并这些图像并保存到PDF File picture = new File("D://testpdf", "fon2.jpg"); File sourceLogo = new File("D://testpdf, "logo.png"); ... document = new Document(); writer = PdfWriter.getInstance(documen

我有两张图片:fon.jpg(CMYK类型)和logo.png(透明背景)。 我想合并这些图像并保存到PDF

    File picture = new File("D://testpdf", "fon2.jpg");
    File sourceLogo = new File("D://testpdf, "logo.png");
    ...
    document = new Document();
    writer = PdfWriter.getInstance(document, new FileOutputStream(tempFile));
    writer.setPDFXConformance(PdfWriter.PDFX1A2001);
    document.open();
    PdfContentByte cb = writer.getDirectContent();

    Image imageBG = Image.getInstance(picture.getAbsolutePath());
    PdfTemplate imageBGTemplate = cb.createTemplate(imageWidth, imageHeight);
    imageBGTemplate.addImage(imageBG, origWidth, 0, 0, origHeight, 0, 0);
    Image newImageBG = Image.getInstance(imageBGTemplate);

    Image logo = Image.getInstance(sourceLogo.getAbsolutePath());
    imageBGTemplate.addImage(logo,logo.getWidth(), logo.getHeight(),logoPosX,0,0,logoPosY);

    Image newImageBG = Image.getInstance(imageBGTemplate);

    cb.addImage(image);
    document.close();
但是有一个错误:
com.itextpdf.text.DocumentException:com.itextpdf.text.pdf.PdfXConformanceException:图像中不允许使用/SMask键。

您必须决定是使用透明图像还是想要pdf/X一致性。(SMask键指用于透明度的软遮罩的使用。)谢谢,我不需要透明度,我想要合并图像(徽标+背景)并添加到PDF/X-1。徽标是静态的,但背景是动态的。“我不需要透明度”-但你们看起来有透明度。“我想要合并图像(徽标+背景)”-iText不进行位图图像操作。
Image
类可以保存单个位图或表单XObject。合并后的表单XObject包含多个位图图像。如果确实要合并位图,请使用位图图像库和API进行合并,并将不带透明度的结果插入到PDF中。看来您必须决定是使用带透明度的图像,还是想要PDF/X一致性。(SMask键指用于透明度的软遮罩的使用。)谢谢,我不需要透明度,我想要合并图像(徽标+背景)并添加到PDF/X-1。徽标是静态的,但背景是动态的。“我不需要透明度”-但你们看起来有透明度。“我想要合并图像(徽标+背景)”-iText不进行位图图像操作。
Image
类可以保存单个位图或表单XObject。合并后的表单XObject包含多个位图图像。如果确实要合并位图,请使用位图图像库和API进行合并,并将结果插入到PDF中而不带透明度。