{"id":19967722,"url":"https://github.com/creosb/virtual-pdf-library","last_synced_at":"2025-07-26T11:06:56.176Z","repository":{"id":170272600,"uuid":"421419937","full_name":"creosB/Virtual-pdf-library","owner":"creosB","description":"The Virtual PDF Library is an open-source, cross-platform application designed to streamline PDF document management across various devices. Developed as a personal project, it utilizes a modern tech stack comprising Flutter for the frontend, Django Rest Framework for the backend API, and Go for the server component.","archived":false,"fork":false,"pushed_at":"2024-12-11T09:34:37.000Z","size":193757,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-04T01:31:51.676Z","etag":null,"topics":["django","django-rest-framework","flutter","flutter-web","flutter-web-example","go","golang","intranet","intranet-site","pdf","pdf-viewer"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/creosB.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2021-10-26T12:41:41.000Z","updated_at":"2025-04-18T11:52:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"fe8dc5b1-551d-450f-ab47-dfebdbdfdac7","html_url":"https://github.com/creosB/Virtual-pdf-library","commit_stats":null,"previous_names":["creosb/virtual-pdf-library"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/creosB/Virtual-pdf-library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creosB%2FVirtual-pdf-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creosB%2FVirtual-pdf-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creosB%2FVirtual-pdf-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creosB%2FVirtual-pdf-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/creosB","download_url":"https://codeload.github.com/creosB/Virtual-pdf-library/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creosB%2FVirtual-pdf-library/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267155783,"owners_count":24044395,"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","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["django","django-rest-framework","flutter","flutter-web","flutter-web-example","go","golang","intranet","intranet-site","pdf","pdf-viewer"],"created_at":"2024-11-13T02:43:33.655Z","updated_at":"2025-07-26T11:06:56.165Z","avatar_url":"https://github.com/creosB.png","language":"Dart","funding_links":["https://www.buymeacoffee.com/creos"],"categories":[],"sub_categories":[],"readme":"\u003ch1 class=\"code-line\" data-line-start=0 data-line-end=1 \u003e\u003ca id=\"Virtual_PDF_Library_0\"\u003e\u003c/a\u003eVirtual PDF Library\u003c/h1\u003e\n\u003cp class=\"has-line-data\" data-line-start=\"1\" data-line-end=\"2\"\u003e\u003ca href=\"http://www.artistscompany.net\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/creosB/presentation/main/background.png\" alt=\"Artists Company\" title=\"Artists Company\"\u003e\u003c/p\u003e\n\u003ch2 class=\"code-line\" data-line-start=2 data-line-end=3 \u003e\u003ca id=\"Birok_teknolojiyi_kullanarak_sanal_pdf_ktphanesi_oluturdum_Bunun_sayesinde_istediiniz_gibi_onlineoffline_pdf_dosyalarn_saklayabilir_ve_rahata_ilem_yapabilirsiniz_2\"\u003e\u003c/a\u003eBirçok teknolojiyi kullanarak sanal pdf kütüphanesi oluşturdum. Bunun sayesinde istediğiniz gibi intranet pdf dosyalarını saklayabilir ve Google Drive, Dropbox, Onedrive üzerinden dosya alıp rahatça işlem yapabilirsiniz. Tek executable dosya ile erişim sağlanmasından dolayı alanında çok özel bir yere sahip olması ve bunu paylaşma isteğimden dolayı açık kaynak olarak sizlere sunuyorum.\u003c/h2\u003e\n\u003ch2 class=\"code-line\" data-line-start=3 data-line-end=4 \u003e\u003ca id=\"I_created_a_virtual_pdf_library_using_many_technologies_Thanks_to_this_you_can_store_onlineoffline_pdf_files_as_you_wish_and_operate_comfortably_3\"\u003e\u003c/a\u003eI created a virtual pdf library using many technologies. Thanks to this, you can store intranet pdf files as you wish, and you can receive files from Google Drive, Dropbox, Onedrive and process them comfortably. I present it to you as open-source because it has a very special place in its field due to access with a single executable file and I want to share it.\u003c/h2\u003e\n\u003ca href=\"https://www.buymeacoffee.com/creos\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\u003cp class=\"has-line-data\" data-line-start=\"5\" data-line-end=\"6\"\u003e\u003ca href=\"https://github.com/creosB/Virtual-pdf-library/releases/tag/Released\"\u003eReleased\u003c/a\u003e\u003c/p\u003e\n\u003ch1 class=\"code-line\" data-line-start=5 data-line-end=6 \u003e\u003ca id=\"zelikleri__Properties_5\"\u003e\u003c/a\u003eÖzelikleri / Properties\u003c/h1\u003e\n\u003cul\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"6\" data-line-end=\"8\"\u003eOnedrive, Google Drive, Dropbox ile aldığınız paylaşım linkini yükleme kısmından girdiğinizde otomatik olarak dönüştürüp dosyayı indirmenize ve yüklemenize olanak sunar.\u003cbr\u003e\n(When you enter the sharing link you get with OneDrive, google drive, dropbox, from the upload section, it automatically converts and allows you to download and upload the file.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"8\" data-line-end=\"10\"\u003eÇevrimiçi veya çevrimdışı fark etmeksizin çalışmaya devam eder.\u003cbr\u003e\n(It continues to work no matter online or offline.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"10\" data-line-end=\"12\"\u003eHer program oturumu için 10 dakika süresi vardır. Bu sürenin ardından otomatik olarak kapanır.\u003cbr\u003e\n(There are 10 minutes for each program session. After this time, it will turn off automatically.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"12\" data-line-end=\"14\"\u003eTüm işlemlerin çalışması main.exe’ye bağlanmıştır. Açtıktan sonra herhangi bir işlem gerektirmez ve direkt siteye girerek ulaşabilirsiniz.\u003cbr\u003e\n(All processes are dependent on main.exe. After opening, it does not require any action and you can access the site directly.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"14\" data-line-end=\"16\"\u003emain.exe açtıktan sonra localhost:8080 adresinden erişebilirsiniz. / After opening main.exe, you can access it from localhost:8080.\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"14\" data-line-end=\"16\"\u003eTek exe dosyası ile çalışmasını sağlamak için .vbs ve .bat kullandım. / I used .vbs and .bat to make it work with a single exe file. \u003c/li\u003e  \n\u003cli class=\"has-line-data\" data-line-start=\"16\" data-line-end=\"18\"\u003eAlt taraftan görsel olarak inceleyebilirsiniz. / You can visually inspect below\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch1 class=\"code-line\" data-line-start=18 data-line-end=19 \u003e\u003ca id=\"Grseller__Pictures_18\"\u003e\u003c/a\u003eGörseller / Pictures\u003c/h1\u003e\n\u003cp class=\"has-line-data\" data-line-start=\"19\" data-line-end=\"25\"\u003e\u003ca href=\"https://youtu.be/yXfIPOkvyQQ\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/creosB/Virtual-pdf-library/main/resim/virtual.png\" alt=\"Virtual\"\u003e\u003c/a\u003e\u003cbr\u003e\n\u003cimg src=\"https://github.com/creosB/Virtual-pdf-library/blob/main/resim/virtual.gif\" alt=\"virtualgif\" title=\"Virtual\"\u003e\u003cbr\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/creosB/Virtual-pdf-library/main/resim/resim1.png\" alt=\"mainpage\" title=\"Mainpage\"\u003e\u003cbr\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/creosB/Virtual-pdf-library/main/resim/resim2.png\" alt=\"uploadpage\" title=\"Upload Page\"\u003e\u003cbr\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/creosB/Virtual-pdf-library/main/resim/resim3.png\" alt=\"convert\" title=\"Convert Page\"\u003e\u003cbr\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/creosB/Virtual-pdf-library/main/resim/resim4.png\" alt=\"filelist\" title=\"File List\"\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch1 class=\"code-line\" data-line-start=25 data-line-end=26 \u003e\u003ca id=\"Bilmeniz_gerekenler__What_you_need_to_know_25\"\u003e\u003c/a\u003eBilmeniz gerekenler / What you need to know\u003c/h1\u003e\n\u003cul\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"26\" data-line-end=\"28\"\u003eDepolama ve api yaratımı kısmında \u003cstrong\u003edjango\u003c/strong\u003e kullanılmıştır. Backend klasöründen ulaşabilirsiniz.\u003cbr\u003e\n(\u003cstrong\u003eDjango\u003c/strong\u003e is used in the storage and API creation part. You can access it from the backend folder.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"28\" data-line-end=\"30\"\u003eServer \u003cstrong\u003egolang\u003c/strong\u003e ile kodlanmış ve otomatik olarak kapanması için 10 dakika oturum süresi verilmiştir. Oturum süresini değiştirmek için sadece \u003cstrong\u003eSource Code/web/server/main.go\u003c/strong\u003e içerisinden çarpım değerini değiştirmeniz yeterlidir.\u003cbr\u003e\n(The server is coded with \u003cstrong\u003egolang\u003c/strong\u003e and a session time of 10 minutes is given to shut down automatically. To change the session duration, you just need to change the product value in \u003cstrong\u003eSource Code/web/server/main.go\u003c/strong\u003e.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"30\" data-line-end=\"32\"\u003eWebsite kısmı \u003cstrong\u003eflutter framework\u003c/strong\u003e'ü kullanılarak geliştirilmiştir ve gerekli api bağlantıları yapılmıştır.\u003cbr\u003e\n(The website part has been developed using \u003cstrong\u003eflutter framework\u003c/strong\u003e and the necessary API connections have been made.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"32\" data-line-end=\"34\"\u003eDrive linklerini çevirme işlemi \u003cstrong\u003eSource Code/web/app/lib/api/driveapi.dart\u003c/strong\u003e içerisinden yapılmaktadır.\u003cbr\u003e\n(Converting drive links is done in \u003cstrong\u003eSource Code/web/app/lib/api/driveapi.dart\u003c/strong\u003e.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"34\" data-line-end=\"36\"\u003eÇevrimdışı çalışmasını sağlamak için \u003cstrong\u003ecanvaskit\u003c/strong\u003e ile çıktı alınmıştır eğer değişiklik yaparsanız html çıktısı ile otomatik geçişe bu sürümde izin verilmiyor. Çıktı almak için komut: \u003cstrong\u003eflutter build web --web-renderer canvaskit --release\u003c/strong\u003e\u003cbr\u003e\n(Printed with \u003cstrong\u003ecanvas kit\u003c/strong\u003e to make it work offline. If you make changes, automatic switching with HTML output is not allowed in this version. Command to output: \u003cstrong\u003eflutter build web --web-renderer canvaskit --release\u003c/strong\u003e)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"36\" data-line-end=\"39\"\u003eSiteye ulaşmak için local \u003cstrong\u003elocalhost:8080\u003c/strong\u003e / django kısmı için \u003cstrong\u003e127.0.0.1:8000\u003c/strong\u003e kullanmanız yeterlidir.\u003cbr\u003e\n(To reach the site, it is sufficient to use local \u003cstrong\u003elocalhost:8080\u003c/strong\u003e / for django part \u003cstrong\u003e127.0.0.1:8000\u003c/strong\u003e.)\u003cbr\u003e\n\u003cstrong\u003eALTERNATİF\u003c/strong\u003e\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"39\" data-line-end=\"40\"\u003e\u003cstrong\u003eVirtual-pdf-library/Final/WPy64-31001/\u003c/strong\u003e dosyası python kurulu olmasa bile çalışması için portable olarak ayarlanmıştır eğer django kurulu ise komut satırını açıp \u003cstrong\u003eVirtual-pdf-library/Final/backend/files_app/\u003c/strong\u003e klasörüne geldikten sonra \u003cstrong\u003epython \u003ca href=\"http://manage.py\"\u003emanage.py\u003c/a\u003e runserver\u003c/strong\u003e yazarak sunucuyu başlatabilirsiniz.\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"40\" data-line-end=\"44\"\u003ePDF dosyalarını saklamak ve kullanmak için \u003cstrong\u003euint8list\u003c/strong\u003e dönüşümü yapıldı.\u003cbr\u003e\n(Converted \u003cstrong\u003euint8list\u003c/strong\u003e to store and use PDF files.)\u003cbr\u003e\n(\u003cstrong\u003eOPTIONAL - NOT NECESSARY\u003c/strong\u003e)\u003cbr\u003e\n(\u003cstrong\u003eVirtual-pdf-library/Final/WPy64-31001/\u003c/strong\u003e file is set as portable to work even if python is not installed if Django is installed, open command line and \u003cstrong\u003eVirtual-pdf-library/Final/backend After coming to the /files_app/\u003c/strong\u003e folder, you can start the server by typing \u003cstrong\u003epython \u003ca href=\"http://manage.py\"\u003emanage.py\u003c/a\u003e runserver\u003c/strong\u003e.)\u003c/li\u003e\n\u003cli class=\"has-line-data\" data-line-start=\"44\" data-line-end=\"47\"\u003e\u003cstrong\u003eGörseller, tasarımlar ve modellemeler tamamen bana aittir.\u003c/strong\u003e\u003cbr\u003e\n(\u003cstrong\u003eImages, designs, and models are entirely my own.\u003c/strong\u003e)\u003cbr\u003e\n\u003ca href=\"https://www.artstation.com/artwork/3q9Q4g\" target=\"_blank\"\u003e\u003cimg src=\"https://www.artstation.com/assets/about/logo/logo-artstation-horizontal-cbbe936e68623842ca878651bfd9ceb3.png\" alt=\"ArtStation\" style=\"height: 130px !important;width: 300px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch1 class=\"code-line\" data-line-start=49 data-line-end=50 \u003e\u003ca id=\"Small_Explanation_49\"\u003e\u003c/a\u003eSmall Explanation\u003c/h1\u003e\n\u003cp class=\"has-line-data\" data-line-start=\"50\" data-line-end=\"52\"\u003e-PDF-\nWhen you drag or select the PDF file and upload it, it automatically converts to uint8list and then shows you a notification that it has been uploaded. After completing this process, you can delete the PDF file from the computer because your PDF is now in the database. Apart from these, if you enter the sharing link you received from Google Drive, Dropbox, or OneDrive into the program, it automatically converts it to a downloadable link and starts downloading it. After the download process is finished, you can drag and upload the file.\u003cbr\u003e\n\nIn the process of showing PDF, I convert the uint8list in the database in the database section and show it to the user without downloading it again. If the user wants to download it, he can download the converted version by pressing the download button.\n\n-EXE / Server-\nI use portable python so that it can work on computers that do not have python, so it helps me to access Django. On the server-side, it only runs by typing \"python manage.py runserver\" into the console to compile the website and run the API / Database part of Django. After the session time (10 minutes) expires, it closes everything and ends. Normally it will show you the cmd to run these commands. Therefore, you have to trade with your hand or close. With the .bat, .VBS I wrote in this program, can run the portable python + server without any need for them.\n\nPackages:\n-django\n-djangorestframework\n-djangeo-cors-headers\n-psycopg2-binary\n-pysqlite3\n\ndjango admin panel information\nusername: admin\nemail: admin@admin.com\npw: -izaqUt*lWr3f#FuC4L5\n\n\nNews that inspired me to do this:\nhttps://www.theverge.com/22684730/students-file-folder-directory-structure-education-gen-z\n\u003c/p\u003e\n\u003chr\u003e\n\u003ch1 class=\"code-line\" data-line-start=49 data-line-end=50 \u003e\u003ca id=\"License_49\"\u003e\u003c/a\u003eLicense\u003c/h1\u003e\n\u003chr\u003e\n\u003ch2 class=\"code-line\" data-line-start=51 data-line-end=52 \u003e\u003ca id=\"Herhangi_bir_yerde_paylamak_deiiklik_yapmak_iin_ncelikle_bana_ulanz_51\"\u003e\u003c/a\u003eHerhangi bir yerde paylaşmak, değişiklik yapmak için öncelikle bana ulaşınız.\u003c/h2\u003e\n\u003ch2 class=\"code-line\" data-line-start=52 data-line-end=53 \u003e\u003ca id=\"Please_contact_me_first_to_share_or_make_changes_anywhere_52\"\u003e\u003c/a\u003ePlease contact me first to share or make changes anywhere.\u003c/h2\u003e\n\u003ch2 class=\"code-line\" data-line-start=53 data-line-end=54 \u003e\u003ca id=\"Creative_Commons_Zero_v10_Universal_53\"\u003e\u003c/a\u003eCreative Commons Zero v1.0 Universal\u003c/h2\u003e\n\u003chr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreosb%2Fvirtual-pdf-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcreosb%2Fvirtual-pdf-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreosb%2Fvirtual-pdf-library/lists"}