Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

154
Visualizações
Conversión de imágenes a pdf de tamaño A4 usando swift

Quiero convertir una matriz UIImage en un archivo pdf. El tamaño de página del archivo PDF debe ser A4. Probé con PDFKIT pero el resultado no es el adecuado.

Lo que quiero:

  1. Tamaño de página A4
  2. La imagen debe estar centrada y escalada en la página (la dimensión de las imágenes de matriz no es idéntica)

Lo que probé:

 func makePDF(images: [UIImage])-> PDFDocument? { let pdfDoc = PDFDocument() for (index,image) in images.enumerated() { let resizedImage = resizeImage(image: image, targetSize: PDFPageSize.A4) guard let cgImage = resizedImage?.cgImage else { return pdfDoc } let uiimage = UIImage(cgImage: cgImage, scale: image.scale, orientation: .up) if let pdfPage = PDFPage(image: uiimage) { let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi pdfPage.setBounds(page, for: PDFDisplayBox.mediaBox) pdfDoc.insert(pdfPage, at: index) } } return pdfDoc } func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage? { let size = image.size let widthRatio = targetSize.width / size.width let heightRatio = targetSize.height / size.height var newSize: CGSize if(widthRatio > heightRatio) { newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio) } else { newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio) } let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height) UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0) image.draw(in: rect) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage }

Mi salida es:

  1. Falta la imagen
  2. Imagen recortada
  3. No en la posición central

mi salida

Mi salida de deseo es:

Salida de mi deseo

¿Cómo puedo hacer esto?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Primero tienes que entender por qué ves lo que ves, y esto explica que hasta cierto punto:

PDFKit PDFView sistema de coordenadas agregar UIImage a PDF Center iOS Swift

Dado que el origen del PDF está en la parte inferior izquierda, cuando agrega algo, se agregará al final de la página, por lo que sus imágenes están en la parte inferior.

Lo que probablemente deba hacer para solucionar esto es lo siguiente:

  1. El graphics context debe ser del tamaño de la página PDF, no de la imagen.
  2. Centras tu imagen dentro del contexto gráfico.
  3. Añade esta imagen a tu página de pdf

Aquí están las modificaciones que haría a su función de cambio de tamaño:

 func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage? { let size = image.size let widthRatio = targetSize.width / size.width let heightRatio = targetSize.height / size.height var newSize: CGSize if(widthRatio > heightRatio) { newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio) } else { newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio) } // Calculate the centerX and centerY let centerX = (targetSize.width - newSize.width) / 2.0 let centerY = (targetSize.height - newSize.height) / 2.0 // The rect of the image should be based on the center calculations let rect = CGRect(x: centerX, y: centerY, width: newSize.width, height: newSize.height) // The graphics context should be created with the page dimensions UIGraphicsBeginImageContextWithOptions(targetSize, false, 1.0) // The rest remains the same image.draw(in: rect) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage }

Y creo que obtendrá el resultado deseado de las imágenes centradas en las páginas PDF:

UIImage agregado a PDFPage PDFKit centrado en iOS Swift

Inserte UIImage en PDF usando PDFKit centrado en iOS Swift

Actualizar

Para alterar la calidad de la imagen generada, intente jugar con el parámetro de scale de la función UIGraphicsBeginImageContextWithOptions .

Puede pasar 2.0 para aumentar la escala a 2 veces o pasar 0 para usar la resolución del dispositivo.

UIGraphicsBeginImageContextWithOptions(targetSize, false, 0.0)

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda