Sobre la creación de PDF de Fly con soporte de PNG de profundidad de color de 16 bits en PHP
-
24-09-2019 - |
Pregunta
Estoy tratando de crear documentos PDF en la marcha en una aplicación, es decir, un usuario hace clic en un enlace y se les muestra un documento PDF con algún texto y algunas imágenes.
Actualmente estoy usando FPDF V1.6 (http://www.fpdf.org/) que admite PNG de 24 bits (verdadero color), pero el problema que tengo es que esta es una aplicación heredada y hay 1000 de PNG de profundidad de color de 16 bits que FPDF no admite y no puedo simplemente convertirme debido a otras partes de las aplicación usando estas imágenes.
Las únicas soluciones que veo son:
- Convierta la imagen PNG de 16 bits sobre la mosca e inscríbela en el PDF.
- Encuentre una nueva clase de clase PDF que aceptará PNG de profundidad de color de 16 bits.
¿Alguien tiene alguna idea?
Solución
Tal vez podrías intentar usar TCPDF (Nunca lo usé con PNG de 16 bits, pero debería ser fácil de probarlo).
Otros consejos
Arreglado con esto en Python:
def fix_16_bit_depth_not_supported(raw_image_path):
"""
fix
RuntimeError: FPDF error: 16-bit depth not supported: test.png
"""
new_file, filename = tempfile.mkstemp(suffix='.png')
os.close(new_file)
i = cv2.imread(raw_image_path, cv2.IMREAD_UNCHANGED)
img = np.array(i, dtype=np.float32)
convert = img / 255.
cv2.imwrite(filename, convert)
return filename