nextcloud / nextcloud/files_pdfviewer

PDF Viewer corrupts font size.

Open
#1,208 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage bug
Dominant language
JavaScript
Stars
108
Forks
61
Avg merge
2d 9h
Merged PRs (30d)
29

Description

How to use GitHub
  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Steps to reproduce
  1. Edit a pdf file with embedded proprietary fonts with Nextcloud's PDF Viewer.
  2. Download and edit the file again with Acrobat Web Extension or any other PDF app.
Expected behaviour

The font size should be the same when you edit the file with another app.

Actual behaviour

The font size is different on the edited forms using PDF Viewer:

Image

Server configuration

Web server: Apache

Database: PostgreSQL

PHP version: 8.3

Nextcloud version: 30.0.10

List of activated apps
Enabled:
  - activity: 3.0.0
  - admin_audit: 1.20.0
  - announcementcenter: 7.1.1
  - bruteforcesettings: 3.0.0
  - cfg_share_links: 7.0.1
  - checksum: 1.2.6
  - circles: 30.0.0
  - cloud_federation_api: 1.13.0
  - comments: 1.20.1
  - contactsinteraction: 1.11.0
  - dav: 1.31.1
  - federatedfilesharing: 1.20.0
  - federation: 1.20.0
  - files: 2.2.0
  - files_downloadactivity: 1.18.1
  - files_downloadlimit: 3.0.0
  - files_external: 1.22.0
  - files_pdfviewer: 3.0.0
  - files_reminders: 1.3.0
  - files_sharing: 1.22.0
  - files_trashbin: 1.20.1
  - files_versions: 1.23.0
  - files_zip: 2.1.0
  - firstrunwizard: 3.0.0
  - guests: 4.2.0
  - logreader: 3.0.0
  - lookup_server_connector: 1.18.0
  - memories: 7.5.2
  - metadata: 0.22.0
  - nextcloud-aio: 0.7.0
  - nextcloud_announcements: 2.0.0
  - notifications: 3.0.0
  - notify_push: 1.1.0
  - oauth2: 1.18.1
  - onlyoffice: 9.8.0
  - password_policy: 2.0.0
  - photos: 3.0.2
  - previewgenerator: 5.8.0
  - privacy: 2.0.0
  - provisioning_api: 1.20.0
  - quota_warning: 1.21.0
  - recommendations: 3.0.0
  - registration: 2.7.0
  - related_resources: 1.5.0
  - serverinfo: 2.0.0
  - settings: 1.13.0
  - sharebymail: 1.20.0
  - skyprint: 0.1.7
  - socialsharing_email: 3.3.0
  - socialsharing_facebook: 3.3.0
  - socialsharing_telegram: 3.3.0
  - socialsharing_twitter: 3.3.0
  - support: 2.0.0
  - survey_client: 2.0.0
  - systemtags: 1.20.0
  - text: 4.1.0
  - theming: 2.6.0
  - twofactor_admin: 4.8.0
  - twofactor_backupcodes: 1.19.0
  - twofactor_nextcloud_notification: 4.0.0
  - twofactor_totp: 12.0.0-dev
  - twofactor_webauthn: 2.1.0
  - user_migration: 7.0.1
  - user_status: 1.10.0
  - viewer: 3.0.0
  - weather_status: 1.10.0
  - webhook_listeners: 1.1.0-dev
  - welcome: 1.2.1
  - workflowengine: 2.12.0
Disabled:
  - app_api: 4.0.6 (installed 4.0.0)
  - dashboard: 7.10.0 (installed 7.9.0)
  - encryption: 2.18.0
  - suspicious_login: 8.0.0
  - user_ldap: 1.21.0
Nextcloud configuration
{
    "system": {
        "one-click-instance": true,
        "one-click-instance.user-limit": 100,
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "check_data_directory_permissions": false,
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "overwritehost": "REMOVED",
        "overwriteprotocol": "https",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "localhost",
            "REMOVED"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "skeletondirectory": "\/mnt\/ncdata\/skeleton",
        "dbtype": "pgsql",
        "version": "30.0.10.1",
        "overwrite.cli.url": "REMOVED",
        "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***",
        "maintenance": false,
        "loglevel": 3,
        "log_type": "file",
        "logfile": "\/var\/www\/html\/data\/nextcloud.log",
        "log_rotate_size": 10485760,
        "log.condition": {
            "apps": [
                "admin_audit"
            ]
        },
        "preview_max_x": 512,
        "preview_max_y": 512,
        "jpeg_quality": 60,
        "enabledPreviewProviders": {
            "1": "OC\\Preview\\Image",
            "2": "OC\\Preview\\MarkDown",
            "3": "OC\\Preview\\MP3",
            "4": "OC\\Preview\\TXT",
            "5": "OC\\Preview\\OpenDocument",
            "6": "OC\\Preview\\Krita",
            "7": "OC\\Preview\\Movie",
            "8": "OC\\Preview\\PDF"
        },
        "enable_previews": true,
        "upgrade.disable-web": true,
        "mail_smtpmode": "smtp",
        "trashbin_retention_obligation": "auto, 30",
        "versions_retention_obligation": "auto, 30",
        "activity_expire_days": 30,
        "simpleSignUpLink.shown": false,
        "share_folder": "\/Shared",
        "one-click-instance.link": "https:\/\/nextcloud.com\/all-in-one\/",
        "upgrade.cli-upgrade-link": "https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/2726",
        "updatedirectory": "\/nc-updater",
        "maintenance_window_start": 100,
        "allow_local_remote_servers": true,
        "davstorage.request_timeout": 86400,
        "htaccess.RewriteBase": "\/",
        "dbpersistent": false,
        "auth.bruteforce.protection.enabled": true,
        "ratelimit.protection.enabled": true,
        "files_external_allow_create_new_local": true,
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "preview_imaginary_key": "***REMOVED SENSITIVE VALUE***",
        "mail_sendmailmode": "smtp",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "587",
        "mail_smtpauth": 1,
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "default_phone_region": "MX",
        "default_locale": "es_MX",
        "default_language": "es_MX",
        "memories.gis_type": 2,
        "twofactor_enforced": "true",
        "twofactor_enforced_groups": [
            "admin"
        ],
        "twofactor_enforced_excluded_groups": [],
        "memories.db.triggers.fcu": true,
        "memories.exiftool": "\/var\/www\/html\/custom_apps\/memories\/bin-ext\/exiftool-amd64-musl",
        "memories.vod.path": "\/var\/www\/html\/custom_apps\/memories\/bin-ext\/go-vod-amd64",
        "memories.vod.ffmpeg": "\/usr\/bin\/ffmpeg",
        "memories.vod.ffprobe": "\/usr\/bin\/ffprobe",
        "memories.vod.external": true,
        "memories.vod.connect": "nextcloud-aio-memories:47788",
        "documentation_url.server_logs": "https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/5425",
        "onlyoffice": {
            "jwt_secret": "***REMOVED SENSITIVE VALUE***",
            "jwt_header": "AuthorizationJwt"
        },
        "forbidden_filename_basenames": [
            "con",
            "prn",
            "aux",
            "nul",
            "com0",
            "com1",
            "com2",
            "com3",
            "com4",
            "com5",
            "com6",
            "com7",
            "com8",
            "com9",
            "com\u00b9",
            "com\u00b2",
            "com\u00b3",
            "lpt0",
            "lpt1",
            "lpt2",
            "lpt3",
            "lpt4",
            "lpt5",
            "lpt6",
            "lpt7",
            "lpt8",
            "lpt9",
            "lpt\u00b9",
            "lpt\u00b2",
            "lpt\u00b3"
        ],
        "forbidden_filename_characters": [
            "<",
            ">",
            ":",
            "\"",
            "|",
            "?",
            "*",
            "\\",
            "\/"
        ],
        "forbidden_filename_extensions": [
            " ",
            ".",
            ".filepart",
            ".part"
        ],
        "data-fingerprint": "1c2ec01766ca042fe66a0304c277810b",
        "DOMAIN": "REMOVED"
    }
}
Browser

Browser name: Brave Browser

Browser version: 1.78.97

Operating system: Ubuntu 25.04

Browser log
Insert your browser log here, this could for example include:
a) 
index.mjs:54 could not invoke event listener TypeError: Cannot read properties of undefined (reading '$props')
    at Ie.setPresets (TypeFilter.ts:127:30)
    at Ie.reset (TypeFilter.ts:123:14)
    at filters.ts:83:24
    at index.mjs:52:9
    at Array.forEach (<anonymous>)
    at s.emit (index.mjs:49:14)
    at o.emit (index.mjs:25:14)
    at h (index.mjs:93:12)
    at o.showView (Navigation.vue:120:13)
    at o.beforeMount (Navigation.vue:95:14)
(anonymous) @ index.mjs:54
cfg_share_links-regRenameLink.mjs?v=bbf7cfd0-7:2 CfgShareLinks: RenameLink init
cfg_share_links-regNewLink.mjs?v=bbf7cfd0-7:3 CfgShareLinks: NewLink init
session-heartbeat.js:83 session heartbeat polling started
cfg_share_links-regRenameLink.mjs?v=bbf7cfd0-7:2 CfgShareLinks: Registering rename action
/apps/notifications/js/style-CmLvDuwV.chunk.mjs:1 
            
            
           Failed to load resource: the server responded with a status of 404 ()
/apps/activity/js/index.chunk.mjs:1 
            
            
           Failed to load resource: the server responded with a status of 404 ()
sidebar.js:55 Uncaught (in promise) TypeError: Failed to fetch dynamically imported module: https://(REMOVED)/apps/activity/js/ActivityTab-DKdzW-XP.chunk.mjs
content-script.js:104 Failed to get subsystem status for purpose Object
/apps/files_pdfviewer/js/pdfjs/web/locale/locale.json?v=3.0.0:1 
            
            
           Failed to load resource: the server responded with a status of 404 ()
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
app.js:1502 PDF 414e9e1afbd7cfe209b61abf3e37795c [1.4 Acrobat Distiller 15.0 (Windows); modified using iTextSharp™ 5.5.3 ©2000-2014 iText Group NV (AGPL-version) / -] (PDF.js: 4.0.189 [50f52b43a])
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
files_pdfviewer/:1 Uncaught (in promise) SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue in the files_pdfviewer app with a PDF containing embedded proprietary fonts, then inspect the PDF.js 4.0.189 integration and the browser log around app.js. Compare the edited form with Acrobat Web Extension or another PDF app. Done means the font size remains consistent after editing and reopening the PDF.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.