Recientemente he descargado un archivo de plantilla de hoja de vida para las páginas, que tiene algunas "formas" en ella y me gustaría añadir mis propios iconos como formas (para Github, StackExchange, etc), que no he encontrado ninguna docs más o menos.
He intentado importar un .eps
pero sólo llega como una imagen. Pages no importa .svg
s.
Mirado en
/Applications/Pages.app/Contents/Resources
Y encontró
-rw-r--r--@ 1 root wheel 4.9M Mar 17 2022 shape_library.json
Que está lleno de trazados vectoriales:
"178": {
"id": 178,
"shapePath": "M 478.593750 125.187500 C 416.293752 125.187500 399.593709 186.399994 399.593750 210.500000 C 399.593750 248.899999 422.693705 268.293742 435.593750 290.593750 C 437.793750 294.293750 434.706266 298.906298 430.406250 298.406250 C 350.606252 289.506250 305.412435 324.687501 274.312500 325.187500 C 256.412500 325.487500 227.393692 277.506254 204.093750 296.906250 C 187.893751 310.306250 184.693736 486.906254 314.593750 486.906250 C 444.393748 486.906250 485.500020 486.906250 485.500000 486.906250 C 485.500000 486.906250 595.406250 483.906311 595.406250 391.406250 C 595.406250 298.906250 539.406250 300.987528 539.406250 271.687500 C 539.406250 242.387499 591.606242 244.693736 595.406250 236.593750 C 599.606250 227.693750 582.312510 222.006271 582.312500 219.406250 C 582.312500 216.806250 600.106201 201.087508 595.406250 193.687500 C 590.906250 186.687500 582.187459 201.999990 556.187500 195.000000 C 553.487500 194.300000 551.512606 192.200014 550.812500 189.500000 C 545.912500 170.199999 536.193629 125.187523 478.593750 125.187500 Z M 478.593750 125.187500",
"localizationKey": "Rubber Duck_178",
"categories": {
"37": {
"position": 56
}
}
},
Pero es obvio que esto no está pensado para ser editado.
Pages no tiene un directorio en /Library/Application\ Support/
o ~/Library/Application\ Support/
.
¿Qué me estoy perdiendo?
ACTUALIZACIÓN
Basado en la respuesta de @grg, he encontrado mi camino en el db
que almacena las formas definidas por el usuario y espero hacer algunas actualizaciones allí.
- Entra en el
db
sqlite3 ~/"Library/Containers/com.apple.iWork.Pages/Data/Library/Application Support/com.apple.iWork.CloudKitStorage/com.apple.iWork.TSKCloudKitPrivateZone.db"
-
Mira a tu alrededor
sqlite> pragma table_info(TSDUserDefinedShapeLibraryShape); 0|identifier|TEXT|0||1 1|cloudKitMetadata|TEXT|0||0 2|needs_first_fetch|INTEGER|0|0|0 3|TSDUserDefinedShapeLibraryBezierPathStringKey|TEXT|0||0 4|TSDUserDefinedShapeLibraryName
sqlite> select identifier, TSDUserDefinedShapeLibraryNameKey from TSDUserDefinedShapeLibraryShape; E52A91BC-3774-45AE-B7A8-456EA04E4C0B|Envelope E19F63AC-23B4-4495-B401-A83544A7AF37|Globe 7C133FEE-8C55-45B5-BB6A-D7A264898555|Location 9B7722F5-8029-4454-A8CA-AE6202BB5CA6|triangle
-
Realizar una modificación
update TSDUserDefinedShapeLibraryShape set TSDUserDefinedShapeLibraryNameKey = "not a circle" where TSDUserDefinedShapeLibraryNameKey = 'triangle';
-
Confirmar actualización
sqlite> select identifier, TSDUserDefinedShapeLibraryNameKey from TSDUserDefinedShapeLibraryShape; 9B7722F5-8029-4454-A8CA-AE6202BB5CA6|not a circle
-
Salir y Reiniciar Páginas - el nombre actualizado no está.
Sin embargo, si actualizo el nombre en el nuevo nombre aparece de inmediato:
9B7722F5-8029-4454-A8CA-AE6202BB5CA6|treehouse
Así que parece que Pages está escribiendo en la base de datos en tiempo real, pero no leyendo de ella. Tal vez es el cloudkitMetadata que necesita cambiar. Tal vez no debería estar tratando de utilizar la aplicación de esta manera.
Seguridad
A copia de seguridad db
antes de hackearlo:
.sqlite ~/"Library/Containers/com.apple.iWork.Pages/Data/Library/Application Support/com.apple.iWork.CloudKitStorage/com.apple.iWork.TSKCloudKitPrivateZone.db" \
".backup 'iword_cloudkit_backup_file.sq3'"
Segunda actualización
Posiblemente debido a haberme desconectado de internet, mis cambios en la base de datos aparecen ahora tras reiniciar la aplicación Pages.
Ahora puedo ejecutar correctamente CRUD
comandos en la db y como funcionarán si se cumplen ciertas especificaciones:
-
location
debe ser un UUID con el formato correcto. No estoy seguro de qué formato es. Este sitio web sugiere que la aplicación está generando la versión 1 o 4. He intentado generar las mías propias y no parecen funcionar. Sólo puedoINSERT
si utilizo unlocation
generados previamente por la aplicación. -
Aún no estoy seguro de si estar conectado a Internet supone alguna diferencia.
-
En
TSDUserDefinedShapeLibraryBezierPathStringKey
necesita ser un Curva de Bézier . No es una ruta svg.
He intentado utilizar un herramienta para generar una curva de Bézier a partir de un trazado svg pero hasta ahora no de forma que se vea correctamente. En las pruebas he copiado y pegado las rutas del shapy_library.json
mencionado anteriormente.