pdf2doi | python library/command-line tool | Document Editor library

 by   MicheleCotrufo Python Version: 1.6rc1 License: No License

kandi X-RAY | pdf2doi Summary

kandi X-RAY | pdf2doi Summary

pdf2doi is a Python library typically used in Editor, Document Editor applications. pdf2doi has no bugs, it has no vulnerabilities, it has build file available and it has low support. You can install using 'pip install pdf2doi' or download it from GitHub, PyPI.

Automatically associating a DOI or other identifiers (e.g. arXiv ID) to a pdf file can be either a very easy or a very difficult (sometimes nearly impossible) task, depending on how much care was placed in crafting the file. In the simplest case (which typically works with most recent publications) it is enough to look into the file metadata. For older publications, the identifier is often found within the pdf text and it can be extracted with the help of regular expressions. In the unluckiest cases, the only method left is to google some details of the publication (e.g. the title or parts of the text) and hope that a valid identifier is contained in one of the first results. The pdf2doi library applies sequentially all these methods (starting from the simplest ones) until a valid identifier is found and validated. Specifically, for a given .pdf file it will, in order,. Any time that a possible identifier is found, it is validated by performing a query to a relevant website (e.g., for DOIs and for arxiv IDs). The validation process returns raw BibTeX info when the identifier is valid. When a valid identifier is found with any method different than the first one, the identifier is also stored inside the metadata of the pdf file. In this way, future lookups of this same file will be able to extract the identifier with the first method, speeding up the search (This feature can be disabled by the user, in case edits to the pdf file are not desired). The library is far from being perfect. Often, especially for old publications, none of the currently implemented methods will work. Other times the wrong DOI might be extracted: this can happen, for example, if the DOI of another paper is present in the pdf text and it appears before the correct DOI. A quick and dirty solution to this problem is to look up the identifier manually and then add it to the metadata of the file, with the methods shown here (from python console) or here (from command line). In this way, pdf2doi will always retrieve the correct DOI in future requests, which can be useful when pdf2doi is used to automatize bibliographic procedures for a large number of files (e.g. via pdf2bib or pdf-renamer). Currently, only the format of arXiv identifiers in use after 1 April 2007 is supported.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              pdf2doi has a low active ecosystem.
              It has 53 star(s) with 8 fork(s). There are 1 watchers for this library.
              There were 2 major release(s) in the last 12 months.
              There are 2 open issues and 19 have been closed. On average issues are closed in 23 days. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of pdf2doi is 1.6rc1

            kandi-Quality Quality

              pdf2doi has no bugs reported.

            kandi-Security Security

              pdf2doi has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              pdf2doi does not have a standard license declared.
              Check the repository for any license declaration and review the terms closely.
              OutlinedDot
              Without a license, all rights are reserved, and you cannot use the library in your applications.

            kandi-Reuse Reuse

              pdf2doi releases are available to install and integrate.
              Deployable package is available in PyPI.
              Build file is available. You can build the component from source.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi has reviewed pdf2doi and discovered the below as its top functions. This is intended to give you an instant insight into pdf2doi implemented functionality, and help decide if they suit your requirements.
            • Reads parameters in config file
            • Converts the params to booleans
            • Converts parameters to Numb
            • Writes the INI file
            • Validate a DOI
            • Validate DOI using DOI
            • Validate the arXiv ID
            • Standardise a DOI identifier
            • Tries to extract the first n characters from the PDF file
            • Given a list of texts and a list of texts find the corresponding DOI
            • Perform a google search using Google search
            • Extract arXiv ID from text
            • Convert a PDF file to a DOI
            • Find a DOI from a PDF file
            • Convert a single file to DOI identifier
            • Adds an identifier to the target metadata
            • Add a key to a folder
            • Find the identifier in the pdfinfo dictionary
            • Get information about a PDF
            • Try to find a valid identifier for a given file
            • Find possible titles
            • Find the identifier in a file
            • Find the identifier in the PDF text extracted from the PDF
            • Saves pdf2doi results
            • Set a parameter
            • Removes all keys associated with the right click
            Get all kandi verified functions for this library.

            pdf2doi Key Features

            No Key Features are available at this moment for pdf2doi.

            pdf2doi Examples and Code Snippets

            pdf2doi,Usage,Command line usage
            Pythondot img1Lines of Code : 109dot img1no licencesLicense : No License
            copy iconCopy
            $ pdf2doi 'path/to/target'
            
            $ pdf2doi ".\examples" -v
            [pdf2doi]: Looking for pdf files in the folder D:\Dropbox (Personal)\PythonScripts\pdf2doi\examples...
            [pdf2doi]: Found 4 pdf files.
            [pdf2doi]: ................
            [pdf2doi]: Trying to retrieve a DOI  
            pdf2doi,Usage,Usage inside a python script
            Pythondot img2Lines of Code : 28dot img2no licencesLicense : No License
            copy iconCopy
            >>> from pdf2doi import pdf2doi
            >>> pdf2doi.config.set('verbose',False)
            >>> results = pdf2doi('.\examples')
            
            result['identifier'] = DOI or other identifier (or None if nothing is found)
            result['identifier_type'] = string sp  
            copy iconCopy
            $ pdf2doi  -install--right--click
            
            $ pdf2doi  -uninstall--right--click
              

            Community Discussions

            QUESTION

            WinUI list control that allows for dynamic item size, reordering, and virtualization
            Asked 2021-Jul-05 at 00:06

            I am trying to implement a document editor similar to Notion or Craft but in a WinUI/UWP application. Instead of using a "single-field" editor (like MS Word has), these apps show a vertical stack of content rows (so-called "blocks") that can contain text, media, link previews, LaTeX, etc. These rows can be rearranged with a :: handle on the side:

            So I've been looking for some list/stack control that:

            • Recycles the row views that are not visible (i.e. "virtualization" in the XAML terminology).
            • Allows to reorder rows by dragging and dropping them (single or multiple).
            • Automatically adjusts row heights based on their content growing or shrinking in height (due to the user's input or because the app's window resized horizontally and wrapped some content).

            Features I do not need: headers, columns, sorting, filtering. I have reviewed the following controls in WinUI 2.x and Windows Community Toolkit, but it looks like each of them lacks one or more of the required capabilities.

            ListView

            It seems to be the go-to control for the lists with drag'n'drop, but it can't resize the items dynamically. Also, its dragging uses the whole item area while I need to make it available only with a :: handle on the side.

            ItemsStackPanel

            A virtualization-supporting version of StackPanel, but, as far as I understand, panels are supposed to be used for simple layouting of child items and not for presenting long lists based on a data source.

            VariableSizedWrapGrid

            This is the only list/grid control that officially declares the support of variable-sized items, but at the same time, it does not support virtualization. However, I found a solution from 2013 that is based on pre-calculating the content size for invisible elements.

            ItemsRepeater

            A very basic control that does not provide virtualization on its own: "ItemsRepeater supports virtualization when attached to a host that supports virtualization."

            DataGrid

            A rather heavy control from WCT that seems to be the only one to dynamically resize cells depending on their content. Unfortunately, it does not allow row reordering (only sorting), so I can't use it either.

            Did I miss something? If not, I wonder which one would be the best to build upon. Thanks!

            ...

            ANSWER

            Answered 2021-Jun-30 at 06:55

            I have to say there is no control could fulfill all demands. In fact, the :: is used to control darg the specified item, you could achieve similar behavior in ListView control.

            The ListView allows you to easily reorder items inside a ListView by setting the CanReorderItems and AllowDrop properties to True.If you don’t want to allow the user to drag specific items, you could set the CanDragItems property to True, and add an event handler for the DragItemsStarting event. For the event handler, you can check any condition and then simply set the Cancel property of the event arguments to true if you want to cancel the dragging action. As follows:

            Xaml code:

            Source https://stackoverflow.com/questions/68183861

            QUESTION

            Getting the default document editor toolbar in Mac Catalyst
            Asked 2021-Feb-16 at 10:53

            I’ve just started porting my iPad app to the Mac using Catalyst. It’s a document editor and uses UIDocument. I’m trying to get the default toolbar behaviour for a document editor on macOS where there’s a dropdown to quickly name, tag, and move the document, and a subtitle that shows if the document has been edited. I can’t see any way to do this with Catalyst — is it possible?

            Thanks,

            Luke

            ...

            ANSWER

            Answered 2021-Feb-16 at 10:53

            A representative from Apple confirmed to me that this is not possible using Catalyst. In my opinion this makes Catalyst unsuitable for document based apps at the moment (Big Sur is currently the latest version of macOS).

            Source https://stackoverflow.com/questions/65614362

            QUESTION

            extract the edited text and hide the right side toolbar by default in syncfusion document editor component
            Asked 2020-Oct-29 at 11:34

            I am using ej2 sync fusion in my angular 7 application. How to extract the edited text in document editor component. and how to hide the right side toolbar on creation of the document editor component.

            ...

            ANSWER

            Answered 2020-Oct-29 at 11:34

            Reg. how to extract the edited text.

            To extract the whole document text in editor, you can either select the whole document by selectAll API from selection module and with text property from selection, you can get the selected text.

            Please refer the below sample code snippets

            //Selects the whole document.

            containerInstance.documentEditor.selection.selectAll()

            //To retrieve selected text

            containerInstance.documentEditor.selection.text

            You can also save the document as txt file in server-side and read the text file content to get the document text.

            Please refer the below documentation for saving the document content in server side

            https://ej2.syncfusion.com/angular/documentation/document-editor/export/#export-as-blob

            In the above documentation example, sample will be saved as RTF document. You can change the format to TXT and read the text content from text file.

            Reg. “how to hide the right-side toolbar on creation of the document editor component.”

            Yes, document editor provides option to hide the properties pane. Please set showPropertiesPane property to false in component wrapper

            Sample code snippet

            Source https://stackoverflow.com/questions/64552877

            QUESTION

            Google Drive API get AppProperties with API Key
            Asked 2020-Oct-01 at 12:28
            Question:

            Is it possible to access the appProperties field in a Google Drive document via an unauthenticated user (i.e., via API Key or other method rather than Oauth)?

            Background:

            I have an app that works as a live document editor. It authenticates users via OAuth and allows them to save those documents to their google drive, and later re-open them in my app (google file ids are saved in my database and will load the document text into my app). Create()-ing and Get()-ing these files works fine as long as the user is signed in, and I have the "appProperties" field storing a couple of additional key metadata items.

            As a next step, I would like to allow users to mark a document as "public view", and provide read-only access to their file, even for non-logged-in users. In my head, the flow would work as follows:

            1. User_A authenticates with OAuth and creates a document, saved to their google drive.
            2. User_A presses a button in my app, which sets the google document to a public sharing mode?
            3. App generates a "viewer" link that User_A can share with his friends.
            4. User_B does not have a Google account, but visits the "viewer link", and my app looks up the appropriate google document (using API key? since User_B is not logged in)
            5. Document is loaded into my app for viewing.

            This seems to mostly work; I can read the file metadata just fine using the API key, and even get the file contents. Side Note: Why do we need the API Key at all, given the quote on the google drive api page: "Note: Authorization optional."

            However, the "appProperties" field always returns empty when using the API key!

            Edit: After further searching I am just more confused. The closest answer I could find was from this related question here on stackoverflow:

            It's very simple. appPropperties is a private field and is available only to the application that added it.

            Based on this, it seems Google Drive is treating requests from my app API Key and requests from OAuth users on my app as two separate apps?

            Further, I would eventually like to allow users to collaborate on a single document, owned by one user. So instead of just providing a read-only "view" link, they could generate an "editor invitation" link that would allow an authenticated user (User_B gets a google account now) to be added as an authorized collaborator (but not simultaneous editing) on the original (User_A's) document. Is that even possible?

            Note I am using the Node.js google api.

            ...

            ANSWER

            Answered 2020-Oct-01 at 12:28
            This might be a bug:

            appProperties are app-specific properties attached to a file. Any call from this app should be able to access them. Therefore, I think calls from this app using an API key should be able to retrieve these properties.

            I could reproduce this behaviour: appProperties are populated when using OAuth, but not when using an API key, even though both are created from the same GCP project.

            I filed a bug:

            After researching this issue, I think this might be a bug. Therefore, I decided to file a bug on Issue Tracker:

            To anyone affected by this, I'd suggest to click the top-left star in order to keep track of this and to help prioritizing it.

            Reference:

            Source https://stackoverflow.com/questions/63889368

            QUESTION

            AvalonEdit: Getting Visual Position for IBackgroundRenderer
            Asked 2020-Jul-22 at 17:35

            In my AvalonEdit-based document editor, I am trying to add marker lines to the text view to indicate folds in the document, in a similar way to how Visual Studio joins the start and end of code block braces with dotted lines.

            I have something that produces the correct result if the document is scrolled to the very top, but it doesn't update correctly if the document is scrolled down. Specifically, the lines are drawn as if the text view wasn't scrolled at all, and was still at the top of the document. I suspect the problem has something to do with the TextViewPosition and GetVisualPosition lines, but I don't understand how to correctly get the adjusted visual position with scrolling.

            (To be clear, I have checked, and the Draw method is being called at the appropriate times to update the background, it's just that scrolling isn't accounted for when it does)

            What I have so far, is the following, on a class which implements IBackgroundRenderer:

            ...

            ANSWER

            Answered 2020-Jul-22 at 17:35

            GetVisualPosition is documented as:

            Returns: The position in WPF device-independent pixels relative to the top left corner of the document.

            To use it for painting, you'll want to subtract the scroll position from it:

            Source https://stackoverflow.com/questions/63022892

            QUESTION

            How to center object with CSS transform scale
            Asked 2020-Jun-17 at 07:26

            I'm trying to implement a zoom in/out functionality, just like you would have on a document editor like google docs or any word processor application. The problem I'm having is that I cannot keep the "document" centered and also be able to scroll all of its parts into view. Here is a small demonstration of the problem: https://codepen.io/liviu_vasut/pen/dyGbwwO

            ...

            ANSWER

            Answered 2020-Jun-02 at 09:47

            Actually, use the transform-origin: 0 0; and manually set the scrollbar to the center:

            Source https://stackoverflow.com/questions/62148727

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install pdf2doi

            Use the package manager pip to install pdf2doi. Under Windows, it is also possible to add shortcuts to the right-click context menu.

            Support

            Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            Install
          • PyPI

            pip install pdf2doi

          • CLONE
          • HTTPS

            https://github.com/MicheleCotrufo/pdf2doi.git

          • CLI

            gh repo clone MicheleCotrufo/pdf2doi

          • sshUrl

            git@github.com:MicheleCotrufo/pdf2doi.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link