<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.electroniciens.cnrs.fr/index.php?action=history&amp;feed=atom&amp;title=CAO_%3A_KICAD_PDF_Schematic_Add_Bookmarks</id>
	<title>CAO : KICAD PDF Schematic Add Bookmarks - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.electroniciens.cnrs.fr/index.php?action=history&amp;feed=atom&amp;title=CAO_%3A_KICAD_PDF_Schematic_Add_Bookmarks"/>
	<link rel="alternate" type="text/html" href="https://wiki.electroniciens.cnrs.fr/index.php?title=CAO_:_KICAD_PDF_Schematic_Add_Bookmarks&amp;action=history"/>
	<updated>2026-06-11T20:31:41Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.electroniciens.cnrs.fr/index.php?title=CAO_:_KICAD_PDF_Schematic_Add_Bookmarks&amp;diff=5172&amp;oldid=prev</id>
		<title>David.picard : création de la page</title>
		<link rel="alternate" type="text/html" href="https://wiki.electroniciens.cnrs.fr/index.php?title=CAO_:_KICAD_PDF_Schematic_Add_Bookmarks&amp;diff=5172&amp;oldid=prev"/>
		<updated>2025-03-07T15:07:40Z</updated>

		<summary type="html">&lt;p&gt;création de la page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Bookmarks dans un schéma PDF ==&lt;br /&gt;
&lt;br /&gt;
Imprimer un schéma vers un fichier génère un PDF, mais sans bookmarks, ce qui rend la navigation fastidieuse.&lt;br /&gt;
&lt;br /&gt;
=== Script ===&lt;br /&gt;
&lt;br /&gt;
Le script Bash ci-dessous permet d&amp;#039;y remédier. Il peut s&amp;#039;exécuter nativement sur Linux et dans le terminal Git Bash sur Windows.&lt;br /&gt;
&lt;br /&gt;
Script &amp;lt;code&amp;gt;pdf-add-bkmk.sh&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
function usage()&lt;br /&gt;
{&lt;br /&gt;
    echo &amp;quot;Usage: $(basename $0) INPUT_PDF PAGES OUTPUT_PDF&amp;quot;&lt;br /&gt;
    echo &amp;quot;Add bookmarks to a PDF document&amp;quot;&lt;br /&gt;
    echo -e &amp;quot;  INPUT_PDF\tInput PDF file without bookmarks&amp;quot;&lt;br /&gt;
    echo -e &amp;quot;  PAGES\t\tBookmarks definition in a CSV file (see below)&amp;quot;&lt;br /&gt;
    echo -e &amp;quot;  OUTPUT_PDF\tOutput PDF file with bookmarks&amp;quot;&lt;br /&gt;
    echo -ne &amp;quot;\n  PAGES syntax:&lt;br /&gt;
    2-column CSV file, no header, separator = &amp;#039;,&amp;#039;: page title, bookmark level\n&lt;br /&gt;
    The page number depends on the order of the lines in the file.&lt;br /&gt;
    Example:&lt;br /&gt;
      Root,1                --&amp;gt; line 1 will be page 1&lt;br /&gt;
      A subsheet,2          --&amp;gt; line 2 will be page 2&lt;br /&gt;
      Another subsheet,2    --&amp;gt; line 3 will be page 3\n&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ $# -lt 3 ]; then&lt;br /&gt;
    echo &amp;quot;ERROR: missing arguments&amp;quot;&lt;br /&gt;
    usage&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ ! -f $1 ]; then&lt;br /&gt;
    echo &amp;quot;ERROR: file $1 does not exist&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ ! -f $2 ]; then&lt;br /&gt;
    echo &amp;quot;ERROR: file $2 does not exist&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
INPUT_PDF=$1&lt;br /&gt;
PAGES=$2&lt;br /&gt;
OUTPUT_PDF=$3&lt;br /&gt;
TMP_BOOKMARKS=/tmp/bookmarks.txt&lt;br /&gt;
TMP_DATA_ORIG=/tmp/data.txt&lt;br /&gt;
TMP_DATA_UPDATED=/tmp/data_updated.txt&lt;br /&gt;
&lt;br /&gt;
cat /dev/null &amp;gt; $TMP_BOOKMARKS&lt;br /&gt;
&lt;br /&gt;
# Parse CSV file and generate bookmark file:&lt;br /&gt;
pgNum=1&lt;br /&gt;
while IFS=, read -r pgTitle bmLevel&lt;br /&gt;
do&lt;br /&gt;
    echo -e &amp;quot;BookmarkBegin\nBookmarkTitle: $pgTitle\nBookmarkLevel: $bmLevel\nBookmarkPageNumber: $pgNum&amp;quot; \&lt;br /&gt;
        &amp;gt;&amp;gt; $TMP_BOOKMARKS&lt;br /&gt;
    ((pgNum++))&lt;br /&gt;
done &amp;lt; $PAGES&lt;br /&gt;
sed -i &amp;#039;s/\&amp;quot;//g&amp;#039; $TMP_BOOKMARKS&lt;br /&gt;
&lt;br /&gt;
# Generate PDF with bookmarks:&lt;br /&gt;
pdftk $INPUT_PDF dump_data output $TMP_DATA_ORIG&lt;br /&gt;
cat $TMP_DATA_ORIG $TMP_BOOKMARKS &amp;gt; $TMP_DATA_UPDATED&lt;br /&gt;
pdftk $INPUT_PDF update_info $TMP_DATA_UPDATED output $OUTPUT_PDF&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
# Copier/coller le code ci-dessus dans un fichier texte nommé &amp;lt;code&amp;gt;pdf-add-bkmk.sh&amp;lt;/code&amp;gt;.&lt;br /&gt;
Enregistrer le fichier sous &amp;lt;code&amp;gt;$HOME/bin&amp;lt;/code&amp;gt; sur Linux et dans un répertoire qui est dans la variable d&amp;#039;environnement PATH sur Windows.&lt;br /&gt;
# Sur Linux, rendre le script exécutable : &amp;lt;code&amp;gt;$ chmod a+x pdf-add-bkmk.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
# Installer [https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ PDFtk]. Sur Windows, ajouter son répertoire à la variable d&amp;#039;environnement PATH. Sur Debian-like : &amp;lt;code&amp;gt;$ sudo apt install pdftk-java&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Exemple ===&lt;br /&gt;
&lt;br /&gt;
Fichiers :&lt;br /&gt;
* schema.pdf : schéma imprimé au format PDF par KiCad&lt;br /&gt;
* pages.csv : noms et niveaux des bookmarks&lt;br /&gt;
* schema_bm.pdf : schéma PDF, les bookmarks en plus !&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ pdf-add-bkmk.sh schema.pdf pages.csv schema_bm.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;code&amp;gt;pages.csv&amp;lt;/code&amp;gt; a 2 colonnes. La première est le titre du bookmark et la seconde est le niveau des pages (subsheets) dans la hiérarchie du schéma.&lt;br /&gt;
Par exemple, dans le cas d&amp;#039;un schéma racine avec 2 sous-schémas :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Root,1&lt;br /&gt;
Microcontrôleur,2&lt;br /&gt;
Capteurs,2&lt;br /&gt;
Alimentation,2&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>David.picard</name></author>
	</entry>
</feed>