slackchannel2pdf-kr is a command line tool for exporting the text contents - including Korean - of any Slack channel to a PDF file based on slackchannel2pdf.
This is forked from https://github.com/ErikKalkoken/slackchannel2pdf to accommodate Korean words.
This tool is aimed at end users that want to make backups of Slack conversations or be able to share them outside Slack. It will create a PDF file for every exported channel and will work both for public and private channels.
slackchannel2pdf-kr is an open source project and offered free of charge and under the MIT license. Please check attached licence file for details.
Here is a short summary of the key features of slackchannel2pdf-kr:
- Export of any public and private Slack channel to a PDF file (text only)
- Automatic detection of timezone and locale based from Slack. Can also be set manually if needed.
- Exporting support for all Slack features incl. threads and layout blocks
- Ability to export only the portion of a channel for a specific time period
- Ability to configure page layout of PDF file (e.g. Portrait vs. Landscape)
- Many defaults and behaviors can be configured with configuration files
You can install the tool from PyPI with pip install
. This wil require you to have Python reinstalled in your machine and it will work with any OS supported by Python. We recommend installing it into a virtual environment like venv.
pip install git+https://github.com/th-yoon/slackchannel2pdf-kr.git
You can then run the tool with the command slackchannel2pdf-kr
as explained in detail under Usage.
Please use user token instead of bot token. Bot token won't work. To run slackchannel2pdf-kr your need to have a token for your Slack workspace with the following permissions:
channels:history
channels:read
groups:history
groups:read
users:read
usergroups:read
Please create a custom app with the permissions, then you will obtain the user token.
In order to use slackchannel2pdf-kr you need:
- have it installed on your system (see Installation)
- have a Slack token for the respective Slack workspace with the required permissions (see Token).
Here are some examples on how to use slackchannel2pdf-kr:
To export the Slack channel "general":
slackchannel2pdf-kr --token MY_TOKEN general
To export the Slack channels "general", "random" and "test":
slackchannel2pdf-kr --token MY_TOKEN general random test
To export all message from channel "general" starting from July 5th, 2019 at 11:00.
slackchannel2pdf-kr --token MY_TOKEN --oldest "2019-JUL-05 11:00" general
Tip: You can provide the Slack token either as command line argument
--token
or by setting the environment variableSLACK-TOKEN
.
usage: slackchannel2pdf-kr [-h] [--token TOKEN] [--oldest OLDEST]
[--latest LATEST] [-d DESTINATION]
[--page-orientation {portrait,landscape}]
[--page-format {a3,a4,a5,letter,legal}]
[--timezone TIMEZONE] [--locale LOCALE] [--version]
[--max-messages MAX_MESSAGES] [--write-raw-data]
[--add-debug-info] [--quiet]
channel [channel ...]
This program exports the text of a Slack channel to a PDF file
positional arguments:
channel One or several: name or ID of channel to export.
optional arguments:
-h, --help show this help message and exit
--token TOKEN Slack OAuth token (default: None)
--oldest OLDEST don't load messages older than a date (default: None)
--latest LATEST don't load messages newer then a date (default: None)
-d DESTINATION, --destination DESTINATION
Specify a destination path to store the PDF file.
(TBD) (default: .)
--page-orientation {portrait,landscape}
Orientation of PDF pages (default: portrait)
--page-format {a3,a4,a5,letter,legal}
Format of PDF pages (default: a4)
--timezone TIMEZONE Manually set the timezone to be used e.g.
'Europe/Berlin' Use a timezone name as defined here: h
ttps://en.wikipedia.org/wiki/List_of_tz_database_time_
zones (default: None)
--locale LOCALE Manually set the locale to be used with a IETF
language tag, e.g. ' de-DE' for Germany. See this page
for a list of valid tags:
https://en.wikipedia.org/wiki/IETF_language_tag
(default: None)
--version show the program version and exit
--max-messages MAX_MESSAGES
max number of messages to export (default: 10000)
--write-raw-data will also write all raw data returned from the API to
files, e.g. messages.json with all messages (default:
None)
--add-debug-info wether to add debug info to PDF (default: False)
--quiet When provided will not generate normal console output,
but still show errors (console logging not affected
and needs to be configured through log levels instead)
(default: False)
You can configure many defaults and behaviors via configuration files. Configuration files must have the name slackchannel2pdf.ini
and can be placed in two locations:
- home directory (home)
- current working directory (cwd)
You can also have a configuration file in both. Settings in cwd will overwrite the same settings in home. And calling this app with command line arguments will overwrite the corresponding configuration setting.
Please see the master configuration file for a list of all available configuration sections, options and the current defaults. The master configuration file is slackchannel2pdf/slackchannel2pdf.ini
in this repo.
- Text only: slackchannel2pdf-kr will export only text from a channel, but not images or icons. This is by design.
- No Emojis: the tools is currently not able to write emojis as icons will will use their text representation instead (e.g.
:laughing:
instead of 😆). - DMs, Group DM: Currently not supported
- Limited blocks support:Some non-text features of layout blocks not yet supported
- Limited script support: This tool is rendering all text with the Nanum font and will therefore support '11,172' Korean letters, '4,888' Chinese letters, '94' English letters, '986' KS special characters that are support by that font.