linuxmint / xreader

A generic Document Reader
GNU General Public License v2.0
211 stars 59 forks source link

If one has zoomed in, then one cannot scroll to the next page #615

Open LinuxOnTheDesktop opened 11 months ago

LinuxOnTheDesktop commented 11 months ago

Distribution

Mint 21.2

Package version

3.8.2

Frequency

Always

Bug description

At some zoom resolutions - I am unsure just which - scrolling to the next page using, whether via , downwards arrow key, or touchpad scrolling, fails.

Steps to reproduce

1) Open any PDF document that has multiple pages. (Or so I believe. I can supply test documents.) 2) Zoom in - to, on the computer at issue, anything above approximately 50% (!). 3) Try to scroll.

Expected behavior

I expected to see the next page.

Additional information

The problem confounds and is serious if one needs to find information quickly. I resorted to Okular.

Cf. #187?

mtwebster commented 11 months ago

I could reproduce this, but only for certain pdf files.

Playing around with it it seems like the 'Continuous' option in the View menu will enable this. That's a per-document setting, and I'm not sure why some seem to have it enabled and some not (maybe the document can prefer it internally? Not sure).

Regardless, you should be able to enable Continuous mode, then Edit->Save current settings as default to keep this enabled moving forward. For existing documents you will likely need to enable them as you go, since opening them attaches the current default view metadata to the file.

LinuxOnTheDesktop commented 11 months ago

@mtwebster Thank you for your work. You seem to be saying that there is the following workaround for the problem.

Step 1) xreader -> View -> Continuous. Still: it seems one must have some (/any) document open in order to enable that option. So, really, there is Step 0) xreader -> open some document.

Step 2) xreader -> Edit -> Save current settings.

Step 3) By this stage, scrolling will work in any document not opened previously by xreader. To get scrolling working in any document that xreader has opened previously, open that document and repeat step 1.

I feel I must add that an alternative to all of the above is - from what I have seen thus far - this: sudo apt install okular.

mtwebster commented 11 months ago

I feel I must add that an alternative to all of the above is - from what I have seen thus far - this: sudo apt install okular.

I think that's a bit of an overreaction, but if you really have that many files you'd have to modify:

for i in *.pdf; do gio set "$i" "metadata::xreader::continuous" 1; done

This will set all pdf files in the current directory to continuous mode.

LinuxOnTheLaptop commented 11 months ago

I can confirm that on Linux Mint 21.2, Xreader version 3.8.2, the view – fit page width, it does not work continuous, only if we check/tick the box with continous. In the past versions, we had the opportunity to scroll without to check/tick the box. How can I implement the modify: for i in *.pdf; do gio set "$i" "metadata::xreader::continuous" 1; done :because I don't know where to put this change (I have no clue). I appreciate your help with the modify.

LinuxOnTheDesktop commented 11 months ago

@mtwebster : LinuxOnTheLaptop is not me!

@LinuxOnTheLaptop : one enters the command within a terminal; the command will operate only upon files within the current directory; to make the command recursive one would need to modify the command.

LinuxOnTheDesktop commented 10 months ago

Here is a Bash script that I wrote. It applies the scrolling fix to all PDFs within the home directory and all of that directory's subdirectories.

EDITED so as to not act upon links.

#!/usr/bin/env bash

# NAME          PDF_fix_scroll
# PURPOSE       Fix the scrolling in xreader (a.k.a. Document Reader), for all PDFs in $HOME.
# NEEDS         bash
#               an interative terminal
# ADAPTED FROM  https://github.com/linuxmint/xreader/issues/615#issuecomment-1671791368
# and           a couple of StackOverflow pages.

set -o nounset

function errorQuit {
    echo "Error: ${1}."
    exit 1
}

# $1 = directory
function traverse {
    local dir=${1}
    [[ -d ${1} ]] || errorQuit "Directory ${1} does not exist"
    local item
    for item in "${dir}"/*; do
        [[ -L ${item} ]] && continue
        if [[ -d "${item}" ]]; then
            echo "Entering directory <${item}>."
            traverse "${item}"
        elif [[ ${item} == *.pdf ]]; then
            echo -n "FIXING <${item}> .. "
            if gio set "${item}" "metadata::xreader::continuous" 1; then
                echo 'OK.'
            else
                echo 'PROBLEM.'
            fi
        fi
    done
}

function main {
    traverse "${HOME}"
    echo '=== DONE. ==='
}

main "$@"

# EOF
konsumlamm commented 10 months ago

Would it be possible to just automatically mark documents as continuous when opening them?

Webtest7 commented 8 months ago

(Control) (Page [Up : Down]) Seems to Work!

Esteemed Developers and Lurkers:
NOTE: Linux Mint 21.2 MATE 64-bit: Running on LiveMedia ROM.

I have minor vision impairment (I'm 80!) and use some magnification in Xreader. It was a big surprise that (Page Up) and (Page Down) only scrolls to the Top/Bottom of the CURRENT page. Somewhere in a web search I found a note that (Cntrl) (Page [Up : Down]) "Scrolls a bunch of pages" (???). Well, I tried it on my system and this shortcut robustly scrolls UP or DOWN ONE PAGE through my entire current 10 page document. For me, with a ROM system, that is much more convenient since I can't make persistent changes to Xreader.

Sincere BLESSINGS and THANKS to everyone who participates in making the Linuxverse possible! Art in Carlisle PA USA

MarjaE2 commented 6 months ago

If I turn Xreader to continuous mode, then paging down often leaves the bottom edge of one page and the top of another in view; is there a way to zoom in enough to read text, and page down, and get good page separation?

itsnoteasy commented 2 weeks ago

Would it be possible to just automatically mark documents as continuous when opening them?

Or if it is not desirable to break userspace to add a configuration file in /.config/xreader so that the motivated user can set a flag that enables continuous scrolling.