es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Establecer CalRGB al aplicar la representación visual durante la firma de PDF utilizando iText.

Estoy utilizando iText 7 para firmar digitalmente documentos PDF.
El siguiente código se utiliza para aplicar la representación visual:

var vai = new VisualAppearanceImages(parameter, documentToSign, ImageScale);
PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
appearance.SetPageNumber(documentToSign.SignatureField.SignaturePage);
Rectangle pr = new Rectangle(documentToSign.SignatureField.SignaturePositionX,
    documentToSign.SignatureField.SignaturePositionY, documentToSign.SignatureField.Width,
    documentToSign.SignatureField.Height);
appearance.SetPageRect(pr);
        //Set the image (jpeg)
        image = GetVisualRepresentationImage();
appearance.SetRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC);
ImageData imageData = ImageDataFactory.Create(image);
appearance.SetSignatureGraphic(imageData);

El problema es que debo firmar un documento pdf/A1b que no tiene el OutputIntent establecido.
La firma en sí es válida, pero el documento ya no es un pdf/A1b válido.

Análisis pdf/A de la salida de Foxit Phantom:

PDF/A requiere que tan pronto como se utilice DeviceGray, DeviceRGB o DeviceCMYK, se debe incluir un OutputIntent con un perfil de destino.

La representación visual tiene DeviceRGB establecido, lo que provoca el problema ya que no se establece ContentIntent en el pdf.

Supongo que establecer CalRGB en lugar de DeviceRGB para la representación visual podría resolver este problema.

Pregunta: ¿Es posible agregar la representación visual y establecer CalRGB en lugar de DeviceRGB mediante iText?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en el problema descrito, parece que la representación visual de la firma está causando problemas con la conformidad PDF/A1b del documento. Una solución propuesta es establecer el espacio de color de la representación visual en CalRGB en lugar de DeviceRGB, lo que podría resolver el problema.

    Para implementar esta solución en iText 7, se puede utilizar el siguiente fragmento de código:

    PdfDictionary dict = new PdfDictionary();
    dict.Put(PdfName.ColorSpace, PdfName.CalRGB);
    appearance.SetNormalAppearance(new PdfDictionary(), new PdfStream(imageData.GetImageBytes()), null);
    appearance.SetPageRect(pr);
    appearance.SetPageNumber(documentToSign.SignatureField.SignaturePage);
    appearance.SetRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC);
    

    Aquí, se crea un objeto PdfDictionary para establecer el espacio de color en CalRGB. A continuación, se establece la apariencia normal de la firma con los datos de imagen en el espacio de color CalRGB. Finalmente, se establecen las otras configuraciones de apariencia (rectángulo de página, número de página, modo de representación) como antes.

    Al utilizar este enfoque, debería ser posible agregar la representación visual y establecer el espacio de color en CalRGB en iText 7.

Comments are closed.