{"id":16149343,"url":"https://github.com/mavaddat/jpdfbookmarks","last_synced_at":"2025-10-28T03:32:13.872Z","repository":{"id":75022259,"uuid":"115833168","full_name":"mavaddat/jpdfbookmarks","owner":"mavaddat","description":"Create and edit bookmarks on existing PDF files.","archived":false,"fork":false,"pushed_at":"2020-11-10T07:26:33.000Z","size":12537,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-20T09:26:07.525Z","etag":null,"topics":["pdf","pdf-document-processor"],"latest_commit_sha":null,"homepage":"http://flavianopetrocchi.blogspot.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mavaddat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-31T00:25:40.000Z","updated_at":"2024-09-27T18:42:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"5a920c9d-8edf-48a4-9d1b-3fca895f4407","html_url":"https://github.com/mavaddat/jpdfbookmarks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mavaddat%2Fjpdfbookmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mavaddat%2Fjpdfbookmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mavaddat%2Fjpdfbookmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mavaddat%2Fjpdfbookmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mavaddat","download_url":"https://codeload.github.com/mavaddat/jpdfbookmarks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238590608,"owners_count":19497350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pdf","pdf-document-processor"],"created_at":"2024-10-10T00:38:46.567Z","updated_at":"2025-10-28T03:32:12.626Z","avatar_url":"https://github.com/mavaddat.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jpdfbookmarks\n\nCopyright (c) 2008 2009 2010 [Flaviano Petrocchi](mailto:flavianopetrocchi@gmail.com)\nexcept where differently indicated in source code.\n\nCopyright © 2020 [Mavaddat](/../../../)\n\nLicense: GNU General Public License version 3\n\n- [Author's Blog](http://flavianopetrocchi.blogspot.com/)\n- [GitHub Repo](https://github.com/mavaddat/jpdfbookmarks)\n\nFor licence information read [COPYING](/COPYING) file, read the dependencies section in\nthis README for the licenses and copyright of the open source libraries used\nby this project.\n\n## Table of Contents\n\n1. [DESCRIPTION](#description)\n2. [DEPENDENCIES](#dependencies)\n3. [HOW TO INSTALL AND UNINSTALL](#how-to-install-and-uninstall)\n4. [HOW TO EXECUTE](#how-to-execute)\n5. [HOW TO BUILD](#how-to-build)\n6. [HOW TO PACKAGE](#how-to-package)\n7. [HOW TO HELP](#how-to-help)\n\n## DESCRIPTION\n\nThis software allows you to create and edit bookmarks on existing pdf files.\n\n## DEPENDENCIES\n\nThis software requires a Java Runtime Environment version 6 or later for\ninformation on how to install one on your system, or to check if you already\nhave it, go to [Java.com](http://www.java.com) or search your system's software\nrepositories. It uses the following libraries distributed in the lib folder\nwhich are copyright of their respective authors:\n\n### Apache Commons CLI\n\n[Copyright 2001-2009 The Apache Software Foundation](http://commons.apache.org/cli/)\n[Apache License Version 2.0, January 2004](http://www.apache.org/licenses/)\n\n### iText-2.1.7\n\n[Copyright 1999, 2000, 2001, 2002 by Bruno Lowagie.](http://www.lowagie.com/iText/)\n[GNU LIBRARY GENERAL PUBLIC LICENSE Version 2 \\(or later version\\)](http://www.gnu.org/licenses/)\n\n### Bouncy Castle Crypto APIs\n\n[Copyright (c) 2000 - 2009 The Legion Of The Bouncy Castle](http://www.bouncycastle.org)\n[Adaptation of the MIT X11 License](http://www.bouncycastle.org/licence.html)\n\n### JPedal\n\n[\\(C\\) Copyright 1997-2008, IDRsolutions and Contributors.](http://www.jpedal.org)\n[GNU Lesser General Public License Version 2.1 \\(or later version\\)](http://www.gnu.org/licenses/)\n\n[Icons are from the \"Tango Desktop Project\"](http://tango.freedesktop.org/Tango_Desktop_Project)\n\n## HOW TO INSTALL AND UNINSTALL\n\nI have decided not to provide installers any more, this is because I want to\ndedicate more time on development than on deployment, this could change in the\nfuture especially if someone else wants to help maintaining packages for specific\nplatforms. For the time general purpose archives are distributed with binaries\nand scripts for all systems.\n\nDownload the zip or tar.gz archive of the latest version from GitHub\n(https://github.com/mavaddat/jpdfbookmarks) and extract the folder\njpdfbookmarks-x.x.x to a position on your drive.\nInside that folder you have both the windows executables and the Linux scripts\nto launch the application.\n\nIMPORTANT: this software requires a Java Runtime Environment version 6 or later\nfor information on how to install one on your system, or to check if you already\nhave it, go to http://www.java.com or search your system's software\nrepositories.\n\n### Install Uninstall On Linux\n\nYou should extract the folder in a path without spaces and check if the scripts\nhave execution permissions and if they don't use the following command:\n\n```bash\n chmod +x jpdfbookmarks jpdfbookmarks_cli\n chmod +x link_this_in_linux_path.sh link_this_in_linux_path_cli.sh\n```\n\nThe jpdfbookmarks and jpdfbookmarks_cli scripts are intended to be used from the\ninstallation folder, so supposing you have extracted the folder to\n/home/user/jpdfbookmarks and you are working in the folder /home/user/documents\nyou can launch the program with the full path to the script\n/home/user/jpdfbookmarks/jpdfbookmarks --help\n\nThis is not particularly efficient so I suggest to create links to start the\nprogram in a folder on your PATH environment variable like /usr/local/bin for\nexample with the root commands:\n\n```bash\ncd /usr/local/bin\nln -s /home/user/jpdfbookmarks/link_this_in_linux_path.sh jpdfbookmarks\n```\n\nor\n\n```bash\nln -s /home/user/jpdfbookmarks/link_this_in_linux_path_cli.sh jpdfbookmarks_cli\n```\n\nNow you are able to run jpdfbookmarks from any position just typing jpdfbookmars\nor to create a launcher icon in any desktop easily.\nThe only difference between the *_cli (command-line-interface) version and the\nother script is that the cli version does not use a splash screen so it's more\ntailored to be used inside a terminal, choose what you prefer to link.\n\nTo uninstall on linux just delete the extracted folder and delete the link in\nthe PATH folder if you created it with the command:\n\n$rm /usr/local/bin/jpdfbookmarks\n\n### Install Uninstall On Windows\n\nTo launch the graphical user interface of the program on Windows double click\njpdfbookmarks.exe, the program can take the pdf file to open as an argument to\nfacilitate shell integration. To use the program on the command-line use the\nother executable jpdfbookmarks_cli.exe, if you use often the command prompt I\nsuggest you to add the jpdfbookmarks-x.x.x folder to the PATH environment\nvariable, you can easily find instructions on how to accomplish this on the web.\n\nTo uninstall just delete the extracted folder and cancel the path to the same\nfolder from the PATH environment variable if you added it.\n\n### Install Uninstall Universal\n\nFor all the systems you can launch the program after you have extracted the\nfolder with:\n\n```bash\n java -jar /full/path/jpdfbookmarks/jpdfbookmarks.jar\n```\n\nit's important to provide the full path to the jpdfbookmarks.jar file.\n\nOn many systems also double clicking on jpdfbookmarks.jar will work to launch\nthe application.\n\n## HOW TO EXECUTE\n\nHere follows a short help on the jpdfbookmarks parameters.\n\n```cmd\nusage: jpdfbookmarks [--dump | --apply \u003cbookmarks.txt\u003e --out \u003coutput.pdf\u003e |\n                     --help | --version] [input.pdf]\n```\n\nTo launch the graphic interface invoke without parameters or pass a pdf file you\nwant as parameter. On Windows the command line program must be called with\njpdfbookmarks_cli.exe while the graphic interface must be called with\njpdfbookmarks.exe.\n\n| Parameter (-‍brev,-‍-‍longform) | Description |\n|-|-|\n| -a,--apply | Apply bookmarks from the file bookmarks.txt to a pdf file passed as argument and save it to a new pdf file specified with --out output.pdf. |\n| -d,--dump | Extract bookmarks from a PDF file passed as argument and print them to standard output. |\n| -h,--help | Print this message. |\n| -i,--indentation | String to use as indentation string (default valueis the tab character) , must be different from the title and page number separator (default value '/') and from the attributes separator (default value ','). |\n| -o,--out | Output PDF file --out file.pdf or -o file.pdf. Use with the --apply option. |\n| -p,--page-sep | String to be use between title and page number (default value is '/'), must be different from attributes separator (default value ',') and from indentation string (default value is the tab character). |\n| -t,--attributes-sep | String to be use between the bookmark attributes (default value is ','), must be different from the title and page number separator (default value '/') and from indentation string (default value is the tab character). |\n| -v,--version | Version number. |\n\nIn the bookmarks.txt file each line is a bookmark and the hierarchy is made by\ntab characters \u0026Tab; (not spaces),in the format \u003cTitle of bookmark/target\npage[,FitType,TopOffset,LeftOffset] like the following example:\nChapter 1/23\n\u0026Tab;Para 1.1/25,FitWidth,96\n\u0026Tab;\u0026Tab;Para 1.1.1/26,FitHeight,43\nChapter 2/30,TopLeft,120,42\n\u0026Tab;Para 2.1/32,FitPage.\nIt is also possible to use an extended format to specify the text style, the\ncolor and the open or close state of the bookmark, like the following example:\nPara 1.1/25,Red,bold,italic,open,FitWidth,96 or\nPara 1.1/25,Green,noBold,noItalic,closed,FitWidth,96\n\n## HOW TO BUILD\n\nMy development environment is the JDK 6, I use the [VS Code](../../microsoft/vscode) version 1.52 but you can build jpdfbookmarks on the command line using ant if you prefer.\nVS Code has very good git integration if you use this IDE I recommend\nit, otherwise download an appropriate git client for your system, I will\nfirst guide you to build the program in VS Code and then on the command line.\n\nFrom the VS Code menu choose \"View ➡ Command Pallet ➡ Git ➡ Clone\" and on the dialog\nthe repository URL to enter is:\n\n`https://github.com/mavaddat/jpdfbookmarks.git`\n\nclick next and you will get to the following another panel, choose trunk as the\nrepository folder and check \"Skip \"trunk\" and checkout only its content\", choose\nthe local folder, for example:\n\nC:\\Users\\username\\Documents\\VS CodeProjects\\jpdfbookmarks\n\nand check \"Scan for VS Code Projects after Checkout\", then click Finish.\nWait for the download to finish and then you will get a message box, click on\n\"Open Project ...\" and on the opened dialog select the project\njpdfbookmarks_core, check \"Open Required\" and click Open.\n\nRun the project in VS Code with F5 key or with the appropriate Run menu item.\n\nIf you prefer using the command line download the current source with the\ncommand:\n\n ```bash\n git clone https://github.com/mavaddat/jpdfbookmarks.git\n```\n\nenter the directory containing the main project with:\n\n ```bash\n cd jpdfbookmarks/jpdfbookmarks_core\n```\n\nbuild the project with:\n\n ```bash\n ant jar\n```\n\nexecute the program with:\n\n ```bash\n java -jar dist/jpdfbookmarks.jar\n```\n\n## HOW TO PACKAGE\n\nI have decided not to provide installers for jpdfbookmarks but only archives\ncontaining binaries, the reason is that I prefer spending my time programming\nand solving bugs on the code, creating installers for different platforms is\nnot an easy task and I hope someone will offer his help to create state of the\nart packages for specific systems.\n\nTo create the archives there are two scripts in the Packaging folder,\npackager.bat if you are in Windows, and packager.sh if you are on Linux.\n\n### Packaging On Windows\n\nThe packager.bat batch script depends on 7zip software to create the archives,\nyou must modify the script to use it on your system, find the line:\n\nSET PATH7ZIP=\"D:\\LiberKey\\Apps\\7Zip\\App\\7-Zip\"\n\nand substitute the path with the 7zip installation folder on your system, than\nsimply run the batch file after you have built jpdfbookmarks to create the\nzip and tar.gz archives.\n\n### Packaging On Linux\n\nRun the packager.sh script with:\n\n```bash\n sh packager.sh\n```\n\n## HOW TO HELP\n\nThere are really many ways to help a small GPL project like this, here I give\nsome hints but feel free to offer any other idea you have.\n\n- [report bugs](/issues);\n- correct bugs submitting [pull requests](/pull);\n- write documentation or tutorials;\n- write translations of the program or of the documentation;\n- create better icons;\n- suggest new features;\n- create Installers;\n...\n\nFor more instructions and information go to [my blog](http://flavianopetrocchi.blogspot.com/)or to [GitHub](https://github.com/mavaddat/jpdfbookmarks) please post your comments and bug\nreports.\n\nI hope this will help you getting your job done, let me know.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmavaddat%2Fjpdfbookmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmavaddat%2Fjpdfbookmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmavaddat%2Fjpdfbookmarks/lists"}