Blog

Notas de versión, análisis del renderizador e historias de la comunidad del proyecto gpdf.

gpdf team

Números de página, cabeceras y pies de página en PDFs Go con gpdf

Cómo añadir cabeceras, pies de página y 'Page X of Y' a PDFs en Go con gpdf: dos métodos del builder y un paginador de dos pasadas que resuelve los totales solo.

tutorialinternals
Taiki Noda

gpdf vs wkhtmltopdf vs Chromium: generación de PDF en 2026

wkhtmltopdf está archivado. Chromium consume 170 MB por petición. gpdf renderiza una página en 13 µs sin navegador. Comparación honesta para 2026.

comparisonbenchmarkmigration
Taiki Noda

¿Cómo anidar un Row dentro de un Col en gpdf?

No se puede — ColBuilder no tiene método Row en gpdf. La cuadrícula de 12 columnas es plana a propósito. Tres idiomas reemplazan los rows anidados.

recipetutorialtemplates
Taiki Noda

¿Cómo hago que una tabla abarque varias páginas?

No haces nada. Le pasas a gpdf una tabla con más filas de las que caben, y pagina el cuerpo y repite la cabecera en cada página automáticamente.

recipetutorialtemplates
Taiki Noda

¿Cómo mezclo dos fuentes en el mismo párrafo en gpdf?

Para mezclar fuentes en un párrafo en gpdf, usa c.RichText y pon template.FontFamily en cada span. c.Text solo aplica una fuente a toda la cadena.

recipetutorialcjk
Taiki Noda

Tablas en PDFs con Go: anchos, rayas zebra, saltos de página

Las tablas son la parte más difícil de un PDF en Go. gpdf colapsa anchos, rayas y la repetición del encabezado en cada página dentro de una sola llamada.

tutorialtemplatescomparison
Taiki Noda

De signintech/gopdf a gpdf: menos cálculos de coordenadas

signintech/gopdf funciona, pero cada celda, línea y encabezado es un cálculo (x, y). Esta guía mapea la API de gopdf a gpdf — el mismo Go, sin coordenadas.

migrationcomparisontutorial
Taiki Noda

¿Cómo escalo una imagen proporcionalmente para que quepa en una columna?

Pasa los bytes a c.Image y listo. gpdf escala a la columna manteniendo la proporción por defecto. Usa FitWidth o FitHeight cuando necesites un límite explícito.

recipetutorial
Taiki Noda

¿Cómo creo filas con rayas (cebra) en una tabla?

Pasa template.TableStripe a la llamada Table. gpdf pinta las filas alternas del cuerpo con el color que le des. Sin bucle de filas, sin estilos celda a celda.

recipetutorialtemplates
Taiki Noda

¿Cómo añado una fuente TrueType personalizada en gpdf?

Lee los bytes del TTF, regístralo con gpdf.WithFont y referencia el nombre de la familia. Funciona con cualquier TrueType — Inter, Roboto, fuentes de iconos.

recipetutorial
Taiki Noda

unipdf es AGPL o de pago. Cómo migrar a gpdf.

El unipdf de UniDoc obliga a AGPL v3 o a licencia comercial por desarrollador. Mapea la API creator de unipdf al gpdf — MIT, cero deps, sin clave.

migrationcomparisontutorial
Taiki Noda

Pensamiento Bootstrap para PDF: la rejilla de 12 columnas de gpdf

gpdf adopta la rejilla de 12 columnas de Bootstrap para componer PDFs. Por qué 12, qué conservamos del modelo web y qué descartamos sin pensar dos veces.

internalstemplatescomparison
Taiki Noda

¿Cómo defino el ancho de columnas en una tabla de gpdf?

Pasa template.ColumnWidths(...) a c.Table. Los valores son porcentajes del ancho de la Col padre. Suman 100 para cubrir todo; los valores finales que falten se reparten automáticamente.

recipetutorial
Taiki Noda

¿Cómo incrusto un PNG con transparencia en gpdf?

Pasa los bytes del PNG a c.Image. gpdf decodifica el canal alfa en un objeto SMask de PDF y los fondos transparentes se renderizan correctamente.

recipetutorial
Taiki Noda

¿Cómo uso negrita y cursiva juntas en gpdf?

Basta con pasar template.Bold() y template.Italic() al mismo span. Pero con fuentes TrueType hay que registrar las cuatro variantes: si falta BoldItalic, la búsqueda cae silenciosamente a la familia base.

recipetutorial
Taiki Noda

Genera una factura PDF en Go en menos de 50 líneas

Código completo y ejecutable para generar una factura PDF en Go — 50 líneas con gpdf, cero dependencias, sin Chromium, sin CGO. Incluye cabecera, tabla y total.

tutorialtemplates
Taiki Noda

¿Cómo uso Source Han Sans JP con gpdf?

Registra la variante TTF de Source Han Sans JP desde la release de GitHub de Adobe con gpdf.WithFont. Siete pesos, SIL OFL, mismos glifos que Noto Sans JP.

recipecjktutorial
Taiki Noda

Por qué gpdf es 10–30 veces más rápido que otras bibliotecas Go PDF

gpdf genera una página en 13 µs y un informe de 100 páginas en 683 µs. No es un truco de tuning: son tres decisiones arquitectónicas que se suman. Este artículo recorre el código.

benchmarkinternalscomparison
Taiki Noda

¿Por qué mi PDF muestra rectángulos (tofu) en lugar de japonés?

Los rectángulos vacíos en lugar de caracteres japoneses significan que el PDF no encontró glifos para esos code points. Cuatro causas y sus soluciones.

recipetroubleshootingcjk
Taiki Noda

¿Cómo uso IPAex Gothic en gpdf?

Registra ipaexg.ttf con gpdf.WithFont. IPAex Gothic trae solo un peso Regular bajo la IPA Font License: la negrita se sintetiza o se empareja con Mincho.

recipecjktutorial
Taiki Noda

¿Cómo funciona la cuadrícula de 12 columnas de gpdf?

La cuadrícula de 12 columnas de gpdf usa r.Col(span, fn) con span de 1 a 12. El ancho de columna es (span/12) de la fila. Sin breakpoints ni canalones, diseñada para PDF.

recipetutorialtemplates
Taiki Noda

go-pdf/fpdf también archivado. El stack Go PDF de 2026.

jung-kurt/gofpdf se archivó en 2021 y go-pdf/fpdf en 2025. Este es el stack Go PDF que usamos en 2026 — gpdf, los trade-offs y el porqué.

migrationcomparisonbenchmark
Taiki Noda

PDFs en japonés con Go: la guía definitiva de 2026

Cómo generar PDFs en japonés con Go en 2026 — fuentes, subconjuntos TrueType, kanji/kana/ASCII mezclados, y por qué no hacen falta CGO ni Chromium.

tutorialcjktroubleshooting
Taiki Noda

Comparativa de bibliotecas Go PDF 2026

Todas las bibliotecas Go PDF que siguen vivas en 2026, comparadas en 4 cargas de trabajo, con licencias, dependencias y estado de mantenimiento.

comparisonbenchmark
Taiki Noda

¿Cómo incrusto una fuente japonesa en gpdf?

Pasa los bytes del TTF a gpdf.WithFont al construir el documento. Tres líneas, subset embedding automático y sin CGO.

recipecjktutorial
Taiki Noda

¿Cómo uso Noto Sans JP con gpdf?

Registra el TTF static de NotoSansJP-Regular con gpdf.WithFont. No uses la variable font. gpdf subsetea los 17.000 glifos a menos de 40 KB por PDF.

recipecjktutorial
Taiki Noda

gofpdf está archivado. Guía para migrar a gpdf.

jung-kurt/gofpdf fue archivado en 2021 y go-pdf/fpdf en 2025. Guía para migrar a gpdf — Go puro, cero dependencias, soporte CJK nativo.

migrationcomparisontutorial