nextcloud / files_pdfviewer

:book: A PDF viewer for Nextcloud
GNU Affero General Public License v3.0
85 stars 43 forks source link

PdfViewer mishandles rotated images #295

Open Jaxom99 opened 3 years ago

Jaxom99 commented 3 years ago

How to use GitHub

Steps to reproduce

  1. Create a new presentation in LibreOffice, include a rotated .jpg photo on your slide.
  2. Export to PDF and upload it to your server
  3. Display the document in the PdfViewer app

Expected behaviour

The slides should display just as they do in the local pdf application, or even in the Firefox pdf view.

Actual behaviour

The rotated .jpg remains reversed in the slide, although all other elements are well in place.

Comments

I noticed that Nextcloud seems to use pdf.js v2.1, whereas the project is up to v2.6. And displaying the same document (retrieved from nextcloud) in Firefox ("file:///") does not display the error.

The same buggy behaviour appears on a NC 20 instance (where I only have a user account), which ships the same pdf.js version.

Server configuration

Operating system: Debian buster

Web server: Nginx

Database: mysql

PHP version: 7.3

Nextcloud version: 19.0.3

Updated from an older Nextcloud/ownCloud or fresh install: updated from 15

Where did you install Nextcloud from: server release

Signing status:

Signing status ``` PHP ne semble pas être configuré de manière à récupérer les valeurs des variables d’environnement. Le test de la commande getenv("PATH") retourne seulement une réponse vide. Veuillez consulter la documentation d'installation ↗pour savoir comment configurer PHP sur votre serveur, en particulier en cas d'utilisation de php-fpm. La limite de mémoire PHP est inférieure à la valeur recommandée de 512 Mo. MySQL est utilisée comme base de données mais ne supporte pas les caractères codés sur 4 octets. Pour pouvoir manipuler les caractères sur 4 octets (comme les émoticônes) sans problème dans les noms de fichiers ou les commentaires par exemple, il est recommandé d'activer le support 4 octets dans MySQL. Pour plus de détails, lisez la page de documentation à ce sujet ```

List of activated apps:

App list ``` Enabled: - accessibility: 1.5.0 - activity: 2.12.0 - calendar: 2.0.4 - cloud_federation_api: 1.2.0 - comments: 1.9.0 - contacts: 3.4.3 - contactsinteraction: 1.0.0 - dav: 1.15.0 - federatedfilesharing: 1.9.0 - federation: 1.9.0 - files: 1.14.0 - files_external: 1.10.0 - files_pdfviewer: 1.8.0 - files_rightclick: 0.16.0 - files_sharing: 1.11.0 - files_texteditor: 2.14.0 - files_trashbin: 1.9.0 - files_versions: 1.12.0 - firstrunwizard: 2.8.0 - logreader: 2.4.0 - lookup_server_connector: 1.7.0 - maps: 0.1.6 - music: 0.17.3 - nextcloud_announcements: 1.8.0 - notifications: 2.7.0 - oauth2: 1.7.0 - onlyoffice: 6.2.0 - password_policy: 1.9.1 - photos: 1.1.0 - privacy: 1.3.0 - provisioning_api: 1.9.0 - recommendations: 0.7.0 - serverinfo: 1.9.0 - settings: 1.1.0 - sharebymail: 1.9.0 - sharerenamer: 2.7.3 - support: 1.2.1 - survey_client: 1.7.0 - systemtags: 1.9.0 - text: 3.0.1 - theming: 1.10.0 - twofactor_backupcodes: 1.8.0 - user_ldap: 1.9.0 - user_usage_report: 1.3.3 - viewer: 1.3.0 - workflowengine: 2.1.0 Disabled: - admin_audit - encryption - files_videoplayer - gallery - richdocuments - unsplash - updatenotification ```

Nextcloud configuration:

Config report ``` { "system": { "passwordsalt": "***REMOVED SENSITIVE VALUE***", "secret": "***REMOVED SENSITIVE VALUE***", "trusted_domains": [ "localhost", "cloud.tchack.xyz" ], "datadirectory": "***REMOVED SENSITIVE VALUE***", "overwrite.cli.url": "https:\/\/cloud.tchack.xyz", "dbtype": "mysql", "version": "19.0.3.1", "dbname": "***REMOVED SENSITIVE VALUE***", "dbhost": "***REMOVED SENSITIVE VALUE***", "dbport": "", "dbtableprefix": "oc_", "dbuser": "***REMOVED SENSITIVE VALUE***", "dbpassword": "***REMOVED SENSITIVE VALUE***", "installed": true, "instanceid": "***REMOVED SENSITIVE VALUE***", "ldapIgnoreNamingRules": false, "ldapProviderFactory": "\\OCA\\User_LDAP\\LDAPProviderFactory", "updatechecker": false, "memcache.local": "\\OC\\Memcache\\APCu", "integrity.check.disabled": true, "logout_url": "https:\/\/tchack.xyz\/yunohost\/sso\/?action=logout", "maintenance": false, "loglevel": 0, "filelocking.enabled": true, "memcache.locking": "\\OC\\Memcache\\Redis", "redis": { "host": "***REMOVED SENSITIVE VALUE***", "port": "6379", "timeout": "0.0", "password": "***REMOVED SENSITIVE VALUE***" }, "app_install_overwrite": [ "calendar", "sharerenamer" ], "hashing_default_password": true, "allow_local_remote_servers": true } } ```

Are you using external storage, if yes which one: local and S3 storage (from Scaleway). The pdf document in question is in neither of these storages.

Are you using encryption: no

Are you using an external user-backend, if yes which one: LDAP

LDAP configuration (delete this part if not used)

LDAP config ``` +-------------------------------+--------------------------------------------+ | Configuration | | +-------------------------------+--------------------------------------------+ | hasMemberOfFilterSupport | 0 | | homeFolderNamingRule | | | lastJpegPhotoLookup | 0 | | ldapAgentName | | | ldapAgentPassword | *** | | ldapAttributesForGroupSearch | | | ldapAttributesForUserSearch | | | ldapBackupHost | | | ldapBackupPort | | | ldapBase | dc=yunohost,dc=org | | ldapBaseGroups | ou=groups,dc=yunohost,dc=org | | ldapBaseUsers | ou=users,dc=yunohost,dc=org | | ldapCacheTTL | 600 | | ldapConfigurationActive | 1 | | ldapDefaultPPolicyDN | | | ldapDynamicGroupMemberURL | | | ldapEmailAttribute | mail | | ldapExperiencedAdmin | 0 | | ldapExpertUUIDGroupAttr | | | ldapExpertUUIDUserAttr | | | ldapExpertUsernameAttr | uid | | ldapExtStorageHomeAttribute | | | ldapGidNumber | gidNumber | | ldapGroupDisplayName | cn | | ldapGroupFilter | objectClass=posixGroup | | ldapGroupFilterGroups | | | ldapGroupFilterMode | 0 | | ldapGroupFilterObjectclass | posixGroup | | ldapGroupMemberAssocAttr | uniqueMember | | ldapHost | localhost | | ldapIgnoreNamingRules | | | ldapLoginFilter | (&(|(objectclass=posixAccount))(uid=%uid)) | | ldapLoginFilterAttributes | | | ldapLoginFilterEmail | 0 | | ldapLoginFilterMode | 0 | | ldapLoginFilterUsername | 1 | | ldapMatchingRuleInChainState | unknown | | ldapNestedGroups | 0 | | ldapOverrideMainServer | | | ldapPagingSize | 500 | | ldapPort | 389 | | ldapQuotaAttribute | userquota | | ldapQuotaDefault | | | ldapTLS | 0 | | ldapUserAvatarRule | default | | ldapUserDisplayName | displayname | | ldapUserDisplayName2 | | | ldapUserFilter | objectclass=posixAccount | | ldapUserFilterGroups | | | ldapUserFilterMode | 0 | | ldapUserFilterObjectclass | posixAccount | | ldapUuidGroupAttribute | auto | | ldapUuidUserAttribute | auto | | turnOffCertCheck | 0 | | turnOnPasswordChange | 0 | | useMemberOfToDetectMembership | 1 | +-------------------------------+--------------------------------------------+ +-------------------------------+--------------+ | Configuration | s01 | +-------------------------------+--------------+ | hasMemberOfFilterSupport | 0 | | homeFolderNamingRule | | | lastJpegPhotoLookup | 0 | | ldapAgentName | | | ldapAgentPassword | *** | | ldapAttributesForGroupSearch | | | ldapAttributesForUserSearch | | | ldapBackupHost | | | ldapBackupPort | | | ldapBase | | | ldapBaseGroups | | | ldapBaseUsers | | | ldapCacheTTL | 600 | | ldapConfigurationActive | 0 | | ldapDefaultPPolicyDN | | | ldapDynamicGroupMemberURL | | | ldapEmailAttribute | | | ldapExperiencedAdmin | 0 | | ldapExpertUUIDGroupAttr | | | ldapExpertUUIDUserAttr | | | ldapExpertUsernameAttr | | | ldapExtStorageHomeAttribute | | | ldapGidNumber | gidNumber | | ldapGroupDisplayName | cn | | ldapGroupFilter | | | ldapGroupFilterGroups | | | ldapGroupFilterMode | 0 | | ldapGroupFilterObjectclass | | | ldapGroupMemberAssocAttr | uniqueMember | | ldapHost | | | ldapIgnoreNamingRules | | | ldapLoginFilter | | | ldapLoginFilterAttributes | | | ldapLoginFilterEmail | 0 | | ldapLoginFilterMode | 0 | | ldapLoginFilterUsername | 1 | | ldapMatchingRuleInChainState | unknown | | ldapNestedGroups | 0 | | ldapOverrideMainServer | | | ldapPagingSize | 500 | | ldapPort | | | ldapQuotaAttribute | | | ldapQuotaDefault | | | ldapTLS | 0 | | ldapUserAvatarRule | default | | ldapUserDisplayName | displayName | | ldapUserDisplayName2 | | | ldapUserFilter | | | ldapUserFilterGroups | | | ldapUserFilterMode | 0 | | ldapUserFilterObjectclass | | | ldapUuidGroupAttribute | auto | | ldapUuidUserAttribute | auto | | turnOffCertCheck | 0 | | turnOnPasswordChange | 0 | | useMemberOfToDetectMembership | 1 | +-------------------------------+--------------+ ```

Client configuration

Browser: Firefox 84.0.2

Operating system: Linux Debian Buster

Logs

Web server error log

No error mentionned

Nextcloud log (data/nextcloud.log)

Nextcloud log ``` {"reqId":"b5SIEcGTUpIyy4ZisI85","level":0,"time":"2021-01-25T12:38:22+00:00","remoteAddr":"109.11.122.196","user":"--","app":"no app in context","method":"GET","url":"/s/wTFQBGC7tBsWDXn","message":"Deprecated event type for OCA\\Files_Sharing::loadAdditionalScripts: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"pGsmRepSkNshKuiEluk3","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"no app in context","method":"GET","url":"/apps/files_sharing/publicpreview/wTFQBGC7tBsWDXn?x=1366&y=330&a=true&file=20210118_PresentationProjet_Impression.pdf&scalingup=0","message":"Deprecated event type for OCP\\IPreview:PreviewRequested: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"cwXa4LlAlseVf0drKqcp","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"no app in context","method":"GET","url":"/apps/files/","message":"Deprecated event type for OCA\\Files::loadAdditionalScripts: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"cwXa4LlAlseVf0drKqcp","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"no app in context","method":"GET","url":"/apps/files/","message":"Deprecated event type for OCA\\Files::loadAdditionalScripts: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"cwXa4LlAlseVf0drKqcp","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"no app in context","method":"GET","url":"/apps/files/","message":"Deprecated event type for OCA\\Files::loadAdditionalScripts: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"cwXa4LlAlseVf0drKqcp","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"no app in context","method":"GET","url":"/apps/files/","message":"Deprecated event type for OCA\\Files::loadAdditionalScripts: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"cwXa4LlAlseVf0drKqcp","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"no app in context","method":"GET","url":"/apps/files/","message":"Deprecated event type for OCA\\Files::loadAdditionalScripts: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"cwXa4LlAlseVf0drKqcp","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"no app in context","method":"GET","url":"/apps/files/","message":"Deprecated event type for OCA\\Files::loadAdditionalScripts: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"cwXa4LlAlseVf0drKqcp","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"no app in context","method":"GET","url":"/apps/files/","message":"Deprecated event type for OCA\\Files::loadAdditionalScripts: Symfony\\Component\\EventDispatcher\\GenericEvent","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} {"reqId":"cwXa4LlAlseVf0drKqcp","level":0,"time":"2021-01-25T12:38:25+00:00","remoteAddr":"109.11.122.196","user":"jaxom","app":"maps","method":"GET","url":"/apps/files/","message":"Could not find resource file \"/apps/maps/js/filetypes.js\"","userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0","version":"19.0.3.1"} ```

Browser log

Browser console log ``` Content Security Policy: Ce site (https://cloud.tchack.xyz) possède une politique Report-Only sans URI de rapport. CSP ne bloquera pas cette politique et ne pourra pas rapporter ses violations. Le cookie « SSOwAuthRedirect » a été rejeté car il a déjà expiré. wTFQBGC7tBsWDXn La ressource à l’adresse « https://cloud.tchack.xyz/ynh_portal.js » a été bloquée en raison d’un type MIME (« text/html ») incorrect (X-Content-Type-Options: nosniff). wTFQBGC7tBsWDXn La ressource à l’adresse « https://cloud.tchack.xyz/ynh_overlay.css » a été bloquée en raison d’un type MIME (« text/html ») incorrect (X-Content-Type-Options: nosniff). wTFQBGC7tBsWDXn Échec du chargement pour l’élément Githubissues.
  • Githubissues is a development platform for aggregating issues.