Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add preview provider for emf files based on office #41395

Merged
merged 3 commits into from
Nov 16, 2023

Commits on Nov 13, 2023

  1. feat: add preview provider for emf files based on office

    Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
    kesselb committed Nov 13, 2023
    Configuration menu
    Copy the full SHA
    aa48a5f View commit details
    Browse the repository at this point in the history
  2. feat: allow multiple libreoffice invocations

    LibreOffice only allows one invocation per user profile.[^1]
    
    The office provider set the user profile to /tmp/owncloud-instanceid and therefore only one invocation per instance is allowed. This was introduced a while ago, yet it's unclear if this was intentionally or just a side effect.[^2]
    
    The limitation on one invocation leads to the situation that the preview generation only works for a couple of files if you upload a whole folder of emf or word files.
    
    This commit removes the limitation by using a new user profile for each preview. That's done by using instance id plus file id as postfix for getTemporaryFolder.
    
    This has some drawbacks:
    
    - Overload protection: If you upload 100 emf files, you may end up with 100 LibreOffice invocations. Though, you can use preview_concurrency_new to limit the number of previews that can be generated concurrently when php-sysvsem is available.
    - New profile: I assume it takes a few bits to generate a fresh LibreOffice user profile. It appears that there is no way to ask LibreOffice to not create a profile and just work with the defaults. The profile will be cleaned after use by our temp manager.
    - Remove the configuration option preview_office_cl_parameters:  This is not strictly necessary yet, but if you set the configuration option, the generated path for the user profile is also missing. The configuration option is not well documented (e.g., it's unclear that the last option needs to be --outdir) and actually, there should be no reason to change it after all.
    
    [^1]: https://wiki.documentfoundation.org/UserProfile
    [^2]: owncloud/core#9784
    
    Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
    kesselb committed Nov 13, 2023
    Configuration menu
    Copy the full SHA
    b5241d5 View commit details
    Browse the repository at this point in the history
  3. fix: use png as preview right away

    The initial office preview implementation converted an office document with LibreOffice to PDF, used ImageMagick to extract the first page as JPEG, and passed it OC_Image.
    
    #10198 changed the implementation to use PNG rather than PDF. OC_Image can use a PNG as a preview right away, so the ImageMagick step is unnecessary.
    
    The registration code was updated to not ask ImageMagick if PDF is supported, as PDFs are no longer used to create office document previews.
    
    Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
    kesselb committed Nov 13, 2023
    Configuration menu
    Copy the full SHA
    475dd60 View commit details
    Browse the repository at this point in the history