Giter Site home page Giter Site logo

bobld / caly Goto Github PK

View Code? Open in Web Editor NEW
21.0 2.0 4.0 6.94 MB

Caly Pdf Reader is a cross-platform pdf document reader application written in C#

License: GNU General Public License v3.0

C# 100.00%
aot-compatible application dotnet pdf pdf-reader pdf-viewer pdfpig portable-document-format reader

caly's Introduction

Caly Pdf Reader

About

Caly Pdf Reader is a cross-platform pdf document reader application written in C# (net8.0 with AOT), only using Avalonia & SkiaSharp + PdfPig for the UI / pdf rendering part. It is released under GPL-3.0 license.

Important

The development is currently in alpha.

Preview

image

Goal and Roadmap

The aim is to develop a C# cross-platform open source pdf reader/viewer application. Below is a table of the current progress:

Task Priority Progress Comment TODO
View pdf document High Done Performance to improve
Open many documents with tab system High Done Use Tabalonia Bugs to fix - see #11
Navigate and zoom document (go to page, zoom in/out, etc.) High Done Performance to improve
Text selection High Done Improve rendering by merging words into lines
Copy text selection to clipboard High Done
Search text High Done Improve word matching
Printing High Work in Progress See branch. Way more complicated than expected without using System.Drawing. See https://github.com/Zelenov/SharpIpp dotnet/maui#9931 https://devblogs.microsoft.com/xamarin/native-printing-with-android/
Run JavaScript embedded in a PDF Won't do Not started Use Jint
UI / UX Low Work in Progress How the app feels Need better colors, icons, transitions, etc.
OCR Low Not started Use RapidOCR onnx models, see RapidOcrNet
Table extraction Low Not started Use tabula-sharp or camelot-sharp

Windows, Linux, MacOS and mobile compatible

As of now, only the Windows, Linux and Android versions have been tested. Android version runs, but is not optimised for the platfotm. Better mobile support is planned, including iOS.

Contributions are welcome

Feel free to contribute to the project! You can also help Caly Pdf Reader by contributing to:

Clone and build

Caly Pdf Reader uses submodules, you will need to run the following after cloning it:

git submodule update --init --recursive

Caly Pdf Reader is a net8.0 application with Native AOT (ahead of time compilation) enabled. To publish the application, run the following (example for Windows):

dotnet publish -r win-x64 -c Release -f net8.0

caly's People

Contributors

bobld avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

caly's Issues

Bug with WindowNotificationManager creation

System.NullReferenceException: Object reference not set to an instance of an object.
   at Avalonia.Rendering.Composition.Compositor.RegisterForSerialization(ICompositorSerializable) + 0x8d
   at Avalonia.Rendering.Composition.CompositionVisual.set_Visible(Boolean) + 0x59
   at Avalonia.Rendering.Composition.CompositionVisual.InitializeDefaults() + 0x18
   at Avalonia.Visual.CreateCompositionVisual(Compositor) + 0x89
   at Avalonia.Visual.AttachToCompositor(Compositor) + 0x26
   at Avalonia.Visual.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs) + 0x166
   at Avalonia.Layout.Layoutable.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs) + 0x19
   at Avalonia.Controls.Control.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs) + 0x30
   at Avalonia.Visual.SetVisualParent(Visual) + 0xeb
   at Avalonia.Visual.SetVisualParent(IList, Visual) + 0x6c
   at Avalonia.Collections.AvaloniaList`1.NotifyAdd(T, Int32) + 0x72
   at Avalonia.Controls.Primitives.VisualLayerManager.get_AdornerLayer() + 0x1ca
   at Avalonia.Controls.Notifications.WindowNotificationManager.InstallFromTopLevel(TopLevel) + 0x1ef
   at Caly.Core.Views.MainWindow.OnLoaded(RoutedEventArgs) + 0xae
   at Avalonia.Controls.Control.<>c.<.cctor>b__69_0() + 0xe9
   at Avalonia.Threading.DispatcherOperation.InvokeCore() + 0x28a
   at Avalonia.Threading.DispatcherOperation.Execute() + 0x73
   at Avalonia.Threading.Dispatcher.ExecuteJob(DispatcherOperation) + 0x5d
   at Avalonia.Threading.Dispatcher.ExecuteJobsCore(Boolean) + 0xa4
   at Avalonia.Threading.Dispatcher.Signaled() + 0x41
   at Avalonia.Win32.Win32Platform.WndProc(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam) + 0x58
   at Caly!<BaseAddress>+0xe4993a

should i fix the dependencies problem?

image

I also noticed that there is a significant difference between the PDFPig version and the official version. Should I use the latest one or stick with this one?
image

Current page selected changes when switching tab documents

  • Open 2 docs, one with more pages than the other.
  • Get the document tab active for the doc with most pages and select the last page (doc 1).
  • Change tab to the other document (less pages, doc 2).
  • Switch back to doc 1-> The current selected page is last page of doc 2 +1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.