Sé que esta pregunta es antigua, pero tuve este problema recientemente y finalmente encontré una forma de hacerlo.
Esto se puede lograr usando Osgeo gdal
, que tiene un controlador PDF incluido. Básicamente puedes hacer algo como:
from osgeo import gdal
#Open your Unreferenced PDF
src = gdal.Open("originalFile.pdf")
Luego obtenga o calcule de alguna manera el Sistema de proyección y la Geotransformación que desea agregar al PDF. Por ejemplo, podemos extraerlos de un GeoTiff haciendo:
#Open the Tiff to obtain its data from
geoTiff = gdal.Open("someMap.tif")
#Obtain its Projection system and its Geotransform
coords = geoTiff.GetProjection()
gt = geoTiff.GetGeoTransform()
Finalmente, configure la proyección y la geotransformación en su PDF y luego cree una copia con el controlador PDF:
src.SetProjection(coords)
src.SetGeoTransform(gt)
#Instantiate a PDF driver and save your Referenced copy
pdf_driver = gdal.GetDriverByName("PDF")
dst = pdf_driver.CreateCopy("referencedFile.pdf", src, 1)
El resultado es un PDF georreferenciado para tener su esquina superior izquierda colocada en el lugar gt
usando el Sistema de proyección coords
. Esto se puede verificar abriendo el PDF en QGis o ArcGis, o bien usando el gdalinfo
comando en su PDF de referencia.