Our default content publishing workflow is terribly broken. We've all been trained to make paper, yet today, content authored once is more commonly consumed in multiple formats, and rarely, if ever, does it embody physical form. Put another way, our go-to content authoring workflow remains relatively unchanged since it was conceived in the early 80s.
I'm asked regularly by government employees — knowledge workers who fire up a desktop word processor as the first step to any project — for an automated pipeline to convert Microsoft Word documents to Markdown, the lingua franca of the internet, but as my recent foray into building just such a converter proves, it's not that simple.
Markdown isn't just an alternative format. Markdown forces you to write for the web.
file=WordToMarkdown.new("/path/to/document.docx")=> <WordToMarkdownpath="/path/to/document.docx">
file.to_s=>"# Test\n\n This is a test"file.document.tree=> <NokogiriDocument>
Command line usage
Once you've installed the gem, it's just:
$ w2m path/to/document.docx
Outputs the resulting markdown to stdout
Supports
Paragraphs
Numbered lists
Unnumbered lists
Nested lists
Italic
Bold
Explicit headings (e.g., selected as "Heading 1" or "Heading 2")
Implicit headings (e.g., text with a larger font size relative to paragraph text)
Images
Tables
Hyperlinks
Requirements and configuration
Word-to-markdown requires soffice a command line interface to LibreOffice that works on Linux, Mac, and Windows. To install soffice, see the LibreOffice documentation.
Testing
script/cibuild
Docker
First, create the Gemfile.lock by installing the dependencies:
bundle install
Everything you need to run the executable locally:
docker-compose build
docker-compose run --rm app bundle exec w2m --help
docker-compose run --rm app bundle exec w2m test/fixtures/em.docx
请发表评论