2.9K Star 21.3K Fork 8.4K

GVPkeking/kkFileView

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README
Apache-2.0

kkFileView

Introduction

Document online preview project solution, built using the popular Spring Boot framework for easy setup and deployment. This versatile open source project provides basic support for a wide range of document formats, including:

  1. Supports Office documents such as doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, , dotm, xlt, xltm, dot, xlam, dotx, xla, ,pages etc.
  2. Supports domestic WPS Office documents such as wps, dps, et , ett, wpt.
  3. Supports OpenOffice, LibreOffice office documents such as odt, ods, ots, odp, otp, six, ott, fodt and fods.
  4. Supports Visio flowchart files such as vsd, vsdx.
  5. Supports Windows system image files such as wmf, emf.
  6. Supports Photoshop software model files such as psd ,eps.
  7. Supports document formats like pdf, ofd, and rtf.
  8. Supports software model files like xmind.
  9. Support for bpmn workflow files.
  10. Support for eml mail files
  11. Support for epub book documents
  12. Supports 3D model files like obj, 3ds, stl, ply, gltf, glb, off, 3dm, fbx, dae, wrl, 3mf, ifc, brep, step, iges, fcstd, bim, etc.
  13. Supports CAD model files such as dwg, dxf, dwf iges , igs, dwt , dng , ifc , dwfx , stl , cf2 , plt, etc.
  14. Supports all plain text files such as txt, xml (rendering), md (rendering), java, php, py, js, css, etc.
  15. Supports compressed packages such as zip, rar, jar, tar, gzip, 7z, etc.
  16. Supports image previewing (flip, zoom, mirror) of jpg, jpeg, png, gif, bmp, ico, jfif, webp, etc.
  17. Supports image information model files such as tif and tiff.
  18. Supports image format files such as tga.
  19. Supports vector image format files such as svg.
  20. Supports mp3,wav,mp4,flv .
  21. Supports many audio and video format files such as avi, mov, wmv, mkv, 3gp, and rm.
  22. Supports for dcm .
  23. Supports for drawio .

Features

  • Build with the popular frame spring boot
  • Easy to build and deploy
  • Basically support online preview of mainstream office documents, such as Doc, docx, Excel, PDF, TXT, zip, rar, pictures, etc
  • REST API
  • Abstract file preview interface so that it is easy to extend more file extensions and develop this project on your own

Official website and DOCS

URL:https://kkview.cn

Live demo

Please treat public service kindly, or this would stop at any time.

URL:https://file.kkview.cn

Contact Us

We will answer your questions carefully and solve any problems you encounter while using the project. We also kindly ask that you at least Google or Baidu before asking questions in order to save time and avoid ineffective communication. Let's cherish our lives and stay away from ineffective communication.

Quick Start

Technology stack

Dependencies

  • Redis(Optional, Unnecessary by default)
  • OpenOffice or LibreOffice(Integrated on Windows, will be installed automatically on Linux, need to be manually installed on Mac OS)
  1. First step:git pull https://github.com/kekingcn/kkFileView.git

  2. second step:Run the main method of /server/src/main/java/cn/keking/ServerMain.java. After starting,visit http://localhost:8012/.

Changelog

December 14, 2022, version 4.1.0 released:

  1. Updated homepage design by @wsd7747.
  2. Compatible with multipage tif for pdf and jpg conversion and multiple page online preview for tif image preview by @zhangzhen1979.
  3. Optimized docker build, using layered build method by @yl-yue.
  4. Implemented file encryption based on userToken cache by @yl-yue.
  5. Implemented preview for encrypted Word, PPT, and Excel files by @yl-yue.
  6. Upgraded Linux & Docker images to LibreOffice 7.3.
  7. Updated OFD preview component, tif preview component, and added support for PPT watermarking.
  8. Numerous other upgrades, optimizations, and bug fixes. We thank @yl-yue, @wsd7747, @zhangzhen1979, @tomhusky, @shenghuadun, and @kischn.sun for their code contributions.

July 6, 2021, version 4.0.0 released:

  1. The integration of OpenOffice in the underlying system has been replaced with LibreOffice, resulting in enhanced compatibility and improved preview effects for Office files.
  2. Fixed the directory traversal vulnerability in compressed files.
  3. Fixed the issue where previewing PPT files in PDF mode was ineffective.
  4. Fixed the issue where the front-end display of image preview mode for PPT files was abnormal.
  5. Added a new feature: the file upload function on the homepage can be enabled or disabled in real-time through configuration.
  6. Optimized the logging of Office process shutdown.
  7. Optimized the logic for finding Office components in Windows environment, with built-in LibreOffice taking priority.
  8. Optimized the synchronous execution of starting Office processes.

June 17, 2021, version 3.6.0 released:

This version includes support for OFD file type versions, and all the important features in this release were contributed by the community. We thank @gaoxingzaq and @zhangxiaoxiao9527 for their code contributions.

  1. Added support for previewing OFD type files. OFD is a domestically produced file format similar to PDF.
  2. Added support for transcoding and previewing video files through ffmpeg. With transcoding enabled, theoretically, all mainstream video file formats such as RM, RMVB, FLV, etc. are supported for preview.
  3. Beautified the preview effect of PPT and PPTX file types, much better looking than the previous version.
  4. Updated the versions of dependencies such as pdfbox, xstream, common-io.

January 28, 2021:

The final update of the Lunar New Year 2020 has been released, mainly including some UI improvements, bug fixes reported by QQ group users and issues, and most importantly, it is a new version for a good year.

  1. Introduced galimatias to solve the problem of abnormal file download caused by non-standard file names.
  2. Updated UI style of index access demonstration interface.
  3. Updated UI style of markdown file preview.
  4. Updated UI style of XML file preview, adjusted the architecture of text file preview to facilitate expansion.
  5. Updated UI style of simTxT file preview.
  6. Adjusted the UI of continuous preview of multiple images to flip up and down.
  7. Simplified all file download IO operations by adopting the apache-common-io package.
  8. XML file preview supports switching to pure text mode.
  9. Enhanced prompt information when url base64 decoding fails.
  10. Fixed import errors and image preview bug.
  11. Fixed the problem of missing log directory when running the release package.
  12. Fixed the bug of continuous preview of multiple images in the compressed package.
  13. Fixed the problem of no universal matching for file type suffixes in uppercase and lowercase.
  14. Specified the use of the Apache Commons-code implementation for Base64 encoding to fix exceptions occurring in some JDK versions.
  15. Fixed the bug of HTML file preview of text-like files.
  16. Fixed the problem of inability to switch between jpg and pdf when previewing dwg files.
  17. Escaped dangerous characters to prevent reflected xss.
  18. Fixed the problem of duplicate encoding causing the failure of document-to-image preview and standardized the encoding.

December 27, 2020:

The year-end major update of 2020 includes comprehensive architecture design, complete code refactoring, significant improvement in code quality, and more convenient secondary development. We welcome you to review the source code and contribute to building by raising issues and pull requests.

  1. Adjusted architecture modules, extensively refactored code, and improved code quality by several levels. Please feel free to review.
  2. Enhanced XML file preview effect and added preview of XML document structure.
  3. Added support for markdown file preview, including support for md rendering and switching between source text and preview.
  4. Switched the underlying web server to jetty, resolving the issue: https://github.com/kekingcn/kkFileView/issues/168
  5. Introduced cpdetector to solve the problem of file encoding recognition.
  6. Adopted double encoding with base64 and urlencode for URLs to completely solve preview problems with bizarre file names.
  7. Added configuration item office.preview.switch.disabled to control the switch of office file preview.
  8. Optimized text file preview logic, transmitting content through Base64 to avoid requesting file content again during preview.
  9. Disabled the image zoom effect in office preview mode to achieve consistent experience with image and pdf preview.
  10. Directly set pdfbox to be compatible with lower version JDK, and there will be no warning prompts even when run in IDEA.
  11. Removed non-essential toolkits like Guava and Hutool to reduce code volume.
  12. Asynchronous loading of Office components speeds up application launch to within 5 seconds.
  13. Reasonable settings of the number of threads in the preview consumption queue.
  14. Fixed the bug where files in compressed packages failed to preview again.
  15. Fixed the bug in image preview.

May 20th 2020 :

  1. Support for global watermark and dynamic change of watermark content through parameters
  2. Support for CAD file Preview
  3. Add configuration item base.url, support using nginx reverse proxy and set context-path
  4. All configuration items can be read from environment variables, which is convenient for docker image deployment and large-scale use in cluster
  5. Support the configuration of TrustHost (only the file source from the trust site can be previewed), and protect the preview service from abuse
  6. Support configuration of customize cache cleanup time (cron expression)
  7. All recognizable plain text can be previewed directly without downloading, such as .md .java .py, etc
  8. Support configuration to limit PDF file download after conversion
  9. Optimize Maven packaging configuration to solve the problem of line break in .sh script
  10. Place all CDN dependencies on the front end locally for users without external network connection
  11. Comment Service on home page switched from Sohu ChangYan to gitalk
  12. Fixed preview exceptions that may be caused by special characters in the URL
  13. Fixed the addtask exception of the transformation file queue
  14. Fixed other known issues
  15. Official website build: https://kkview.cn
  16. Official docker image repository build: https://hub.docker.com/r/keking/kkfileview

June 18th 2019 :

  1. Support automatic cleaning of cache and preview files
  2. Support http/https stream url file preview
  3. Support FTP url file preview
  4. Add Docker build

April 8th 2019

  1. Cache and queue implementations abstract, providing JDK and REDIS implementations (REDIS becomes optional dependencies)
  2. Provides zip and tar.gz packages, and provides a one-click startup script

January 17th 2018

  1. Refined the project directory, abstract file preview interface, Easy to extend more file extensions and depoly this project on your own
  2. Added English documentation (@幻幻Fate,@汝辉) contribution
  3. Support for more image file extensions
  4. Fixed the issue that image carousel in zip file will always start from the first

January 12th 2018

  1. Support for multiple images preview
  2. Support for images rotation preview in rar/zip

January 2nd 2018

  1. Fixed gibberish issue when preview a txt document caused by the file encoding problem
  2. Fixed the issue that some module dependencies can not be found
  3. Add a spring boot profile, and support for Multi-environment configuration
  4. Add pdf.js to preview the documents such as doc,etc.,support for generating doc headlines as pdf menu,support for mobile preview

Sponsor Us

If this project has been helpful to you, we welcome your sponsorship. Your support is our greatest motivation.!

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

使用spring boot打造文件文档在线预览项目解决方案,支持doc、docx、ppt、pptx、wps、xls、xlsx、zip、rar、ofd、xmind、bpmn 、eml 、epub、3ds、dwg、psd 、mp4、mp3以及众多类文本类型文件在线预览 expand collapse
Java and 2 more languages
Apache-2.0
Cancel

Contributors

All

Activities

Load More
can not load any more
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/kekingcn/file-online-preview.git
git@gitee.com:kekingcn/file-online-preview.git
kekingcn
file-online-preview
kkFileView
master

Search