ITADN

Create porfolio

#81Pull Requestliamyalis 创建于 2025-10-02
L
liamyaliscommented
import os from PyPDF2 import PdfReader, PdfWriter, PdfMerger from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import landscape, inch from pdf2image import convert_from_path # === CONFIGURACIÓN === pdf_original = "PORFOLIO.pdf" # tu archivo original en la misma carpeta dpi_pdf = 300 # resolución final partes = 4 final_pdf = "Porfolio_Liam_Andino.pdf" # === DIVIDIR EL PDF EN PARTES IGUALES === reader = PdfReader(pdf_original) total_paginas = len(reader.pages) por_parte = total_paginas // partes part_files = [] for i in range(partes): writer = PdfWriter() start = i * por_parte end = (i+1) * por_parte if i < partes-1 else total_paginas for j in range(start, end): writer.add_page(reader.pages[j]) out_name = f"Porfolio_Liam_Andino_Parte{i+1}.pdf" with open(out_name, "wb") as f: writer.write(f) part_files.append(out_name) print(f"✅ Generada {out_name} con páginas {start+1}-{end}") # === CREAR PÁGINAS DE TEXTO (portada, perfil, índice, conclusión) === def crear_pagina_texto(nombre, lineas): c = canvas.Canvas(nombre, pagesize=landscape((17*inch, 11*inch))) c.setFont("Times-Roman", 36) y = 8*inch for linea in lineas: c.drawCentredString(8.5*inch, y, linea) y -= 1*inch c.showPage() c.save() crear_pagina_texto("Portada.pdf", ["Liam Y. Andino Cruz", "Universidad Politécnica de Puerto Rico"]) crear_pagina_texto("Perfil.pdf", [ "Perfil Profesional", "Soy un arquitecto en formación con experiencia en diseño técnico y conceptual.", "Me especializo en planos, detalles constructivos y conceptualización de proyectos.", "Domino AutoCAD, AutoCAD 3D y SketchUp." ]) crear_pagina_texto("Indice.pdf", ["Índice", "Secciones:", "Perfil Profesional", "Proyectos", "Conclusión y contacto"]) crear_pagina_texto("Conclusion.pdf", [ "Conclusión y Contacto", "Mi enfoque es diseñar soluciones arquitectónicas que integren técnica, funcionalidad y creatividad.", "✉️ Contacto: [liamandino@gmail.com](mailto:liamandino@gmail.com)" ]) # === CONVERTIR PARTES A IMÁGENES 300 dpi Y RECREAR PDFs LIMPIOS === pdf_parts_final = [] for idx, parte in enumerate(part_files, start=1): print(f"🔄 Procesando {parte}...") images = convert_from_path(parte, dpi=dpi_pdf) out_name = f"Porfolio_Liam_Andino_Parte{idx}.pdf" c = canvas.Canvas(out_name, pagesize=landscape((17*inch, 11*inch))) for img in images: img_path = f"temp_page.png" img.save(img_path, "PNG") c.drawImage(img_path, inch*0.5, inch*0.5, width=16*inch, height=10*inch, preserveAspectRatio=True, anchor="c") c.showPage() os.remove(img_path) c.save() pdf_parts_final.append(out_name) print(f"✅ Exportado {out_name} en 300 dpi limpio") # === UNIR TODO EN EL PDF FINAL === merger = PdfMerger() merger.append("Portada.pdf") merger.append("Perfil.pdf") merger.append("Indice.pdf") for part in pdf_parts_final: merger.append(part) merger.append("Conclusion.pdf") merger.write(final_pdf) merger.close() print(f"🎉 Portafolio final generado: {final_pdf}") b
合并状态:未合并 0 条评论