Top Related Projects
A CLI interface for Marp and Marpit based converters
The HTML Presentation Framework
PDF exporter for HTML presentations
A simple, in-browser, markdown-driven slideshow tool.
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
Universal markup converter
Quick Overview
pdfpc is a presenter console with multi-monitor support for PDF files. It's designed for presentations and offers features like a timer, notes, and the ability to show the next slide on the presenter's screen while displaying the current slide to the audience.
Pros
- Multi-monitor support for separate presenter and audience views
- Customizable timer and clock for better time management during presentations
- Ability to add and display notes alongside slides
- Support for various multimedia elements within presentations (e.g., videos, animations)
Cons
- Limited to PDF files, not compatible with other presentation formats
- Steeper learning curve compared to some mainstream presentation software
- May require additional setup for some features (e.g., video playback)
- Limited styling options compared to more comprehensive presentation tools
Getting Started
To install pdfpc on Ubuntu or Debian-based systems:
sudo apt-get update
sudo apt-get install pdfpc
To run a presentation:
pdfpc your_presentation.pdf
For more advanced usage, refer to the project's documentation on GitHub.
Competitor Comparisons
A CLI interface for Marp and Marpit based converters
Pros of Marp CLI
- Creates presentations from Markdown, enabling version control and easy editing
- Supports multiple output formats (HTML, PDF, PPTX)
- Offers themes and customization options for slide design
Cons of Marp CLI
- Requires command-line usage, which may be less intuitive for some users
- Limited real-time presentation features compared to PDFPC
- Lacks built-in presenter tools like timer and notes view
Code Comparison
Marp CLI (Markdown):
---
marp: true
theme: default
---
# Slide 1
Content for slide 1
---
# Slide 2
Content for slide 2
PDFPC (No direct code comparison available as it's a PDF presenter, not a presentation creation tool)
Summary
Marp CLI is a versatile tool for creating presentations from Markdown, offering multiple output formats and customization options. It's ideal for users comfortable with command-line interfaces and those who prefer text-based content creation. PDFPC, on the other hand, is a dedicated PDF presenter with features tailored for live presentations, such as a presenter console and dual-monitor support. The choice between the two depends on whether the user prioritizes presentation creation flexibility or advanced live presentation features.
The HTML Presentation Framework
Pros of reveal.js
- Web-based, allowing for easy sharing and accessibility across devices
- Rich ecosystem of plugins and themes for customization
- Supports interactive elements and multimedia content
Cons of reveal.js
- Requires web browser and potentially internet connection
- May have a steeper learning curve for non-technical users
- Limited offline functionality compared to native applications
Code Comparison
reveal.js (HTML):
<div class="reveal">
<div class="slides">
<section>Slide 1</section>
<section>Slide 2</section>
</div>
</div>
pdfpc (Configuration):
[presenter]
size = 1024x768
notes = right
Summary
reveal.js is a web-based presentation framework offering flexibility and extensive customization options, ideal for creating interactive and shareable presentations. It excels in online environments but may require more technical knowledge to set up and use effectively.
pdfpc, on the other hand, is a native PDF presenter console application, providing robust offline functionality and simpler setup for users comfortable with traditional presentation software. It offers features tailored for live presentations but lacks the web-based advantages of reveal.js.
The choice between these tools depends on the user's specific needs, technical expertise, and presentation environment preferences.
PDF exporter for HTML presentations
Pros of Decktape
- Supports multiple presentation frameworks (HTML, reveal.js, impress.js, etc.)
- Generates high-quality PDF exports of web-based presentations
- Can be used as a command-line tool or Node.js module
Cons of Decktape
- Requires Node.js and additional dependencies
- Limited to exporting presentations to PDF format
- May have issues with complex animations or transitions
Code Comparison
Decktape (JavaScript):
const decktape = require('decktape');
decktape.render('https://example.com/presentation', 'output.pdf', {
size: '1024x768',
loadPause: 1000
});
pdfpc (C):
#include <pdfpc.h>
int main(int argc, char *argv[]) {
PdfPc *pdfpc = pdfpc_new();
pdfpc_load_file(pdfpc, "presentation.pdf");
pdfpc_run(pdfpc);
return 0;
}
While Decktape focuses on converting web-based presentations to PDF, pdfpc is a presentation viewer for PDF files with additional features like dual-screen support and presenter notes. Decktape offers more flexibility in terms of input formats, but pdfpc provides a more comprehensive presentation experience for PDF-based slides.
A simple, in-browser, markdown-driven slideshow tool.
Pros of remark
- Web-based, making it easily accessible across platforms
- Supports Markdown for content creation, allowing for simpler slide authoring
- Highly customizable with CSS and JavaScript
Cons of remark
- Requires a web browser to present slides
- Less native support for PDF-specific features
- May require more setup for offline presentations
Code comparison
remark:
var slideshow = remark.create({
source: "# Slide 1\n\nContent here\n\n---\n\n# Slide 2\n\nMore content"
});
pdfpc:
pdfpc presentation.pdf
Key differences
- remark is a web-based solution, while pdfpc is a native application
- remark uses Markdown for slide creation, pdfpc works with existing PDF files
- pdfpc offers more advanced presenter features like multi-monitor support
- remark provides greater flexibility in slide design and interactivity
- pdfpc is more suitable for traditional presentation environments
Both tools have their strengths, with remark excelling in web-friendly, customizable presentations, and pdfpc offering robust support for PDF-based slideshows in conventional settings.
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
Pros of impress.js
- Web-based, allowing for easy sharing and accessibility across devices
- Highly customizable with CSS and JavaScript
- Supports 3D transformations and transitions for visually striking presentations
Cons of impress.js
- Requires web development skills to create presentations
- May not perform well on older devices or browsers
- Lacks built-in presenter tools and notes functionality
Code Comparison
impress.js:
<div id="impress">
<div class="step" data-x="0" data-y="0">Slide 1</div>
<div class="step" data-x="1000" data-y="500" data-scale="2">Slide 2</div>
</div>
pdfpc:
<?xml version="1.0" encoding="UTF-8"?>
<presentation>
<slide>Slide 1</slide>
<slide>Slide 2</slide>
</presentation>
Key Differences
- impress.js uses HTML, CSS, and JavaScript for creating presentations, while pdfpc uses PDF files
- pdfpc is a native application, offering better performance and integration with the operating system
- impress.js provides more flexibility in terms of design and animation, but requires more technical expertise
- pdfpc includes built-in presenter tools and dual-screen support, which are not natively available in impress.js
Universal markup converter
Pros of Pandoc
- Versatile document conversion between numerous formats (Markdown, LaTeX, HTML, etc.)
- Extensive customization options and filters for advanced transformations
- Large, active community with frequent updates and contributions
Cons of Pandoc
- Steeper learning curve, especially for complex conversions
- Requires external tools for certain output formats (e.g., LaTeX for PDF)
- Can be slower for large documents or complex transformations
Code Comparison
Pandoc (Haskell):
readMarkdown def { readerExtensions = pandocExtensions } input >>=
writeHTML5 def { writerHighlightStyle = Just pygments }
PDFPC (Vala):
public class PresentationController : Object {
private Gtk.Window window;
private Pdf.Document document;
}
Key Differences
- Pandoc is a universal document converter, while PDFPC is a PDF presenter
- Pandoc is written in Haskell, PDFPC in Vala
- Pandoc has a broader scope and larger community, PDFPC is more specialized
- Pandoc focuses on text processing, PDFPC on presentation delivery
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
===== pdfpc
|ubuntubuild| |windowsbuild|
.. |ubuntubuild| image:: https://github.com/pdfpc/pdfpc/actions/workflows/cmake-ubuntu.yml/badge.svg?branch=master .. |windowsbuild| image:: https://github.com/pdfpc/pdfpc/actions/workflows/cmake-windows.yml/badge.svg?branch=master
About
pdfpc is a GTK-based presentation application which uses Keynote-like multi-monitor output to provide meta information to the speaker during the presentation. It is able to show a normal presentation window on one screen, while showing a more sophisticated overview on the other one, providing information like an image of the next slide, time remaining till the end of the presentation, etc. The input files processed by pdfpc are PDF documents, which can be created by most of the present-day presentation software.
More information, including screenshots and demo presentations, can be found at https://pdfpc.github.io/
Installation
-
On Debian, Ubuntu, and other Debian-based systems::
sudo apt-get install pdf-presenter-console
-
On Fedora::
sudo dnf install pdfpc
-
On Arch Linux::
sudo pacman -S pdfpc
-
On Gentoo::
sudo emerge --ask pdfpc
-
On FreeBSD::
sudo pkg install pdfpc
It is also available under graphics/pdfpc in the ports tree.
-
On macOS with Homebrew::
Full macOS integration, including video support
brew install pdfpc
-
On macOS with MacPorts::
Nice macOS integration, including video support
sudo port -v install pdfpc +quartz +video
Less well integrated due to using X11 server, video supported
sudo port -v install pdfpc +x11 +video
-
On Windows 10 (with Windows Subsystem for Linux (WSL))::
Install:
- Windows: Activate WSL: https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
- Windows: Open CMD and run: 'bash' in order to start the WSL-bash
- WSL-Bash: run: 'sudo apt-get install pdf-presenter-console'
Run:
- Windows: Install a Windows X-Server like VcXsrv: https://sourceforge.net/projects/vcxsrv
- Windows: Make the presentation screen your secondary screen and disable the taskbar on that screen
- Windows: Start the X-Server with: 'vcxsrv -nodecoration -screen 0 @1 -screen 1 @2 +xinerama'
- Windows: Open CMD and run: 'bash' in order to start the WSL-bash
- WSL-Bash: run: 'DISPLAY=:0 pdfpc
' to open your presentation with pdfpc
Sample presentations
Simple demo <https://github.com/pdfpc/pdfpc/releases/latest/download/pdfpc-demo.pdf>
_Embedded movies <https://github.com/pdfpc/pdfpc/releases/latest/download/pdfpc-video-example.zip>
_
Usage
Try it out::
pdfpc pdfpc-demo.pdf
If you encounter problems while running pdfpc, please consult the FAQ <FAQ.rst>
_ first.
Compilation from sources
Requirements
In order to compile and run pdfpc, the following requirements need to be met:
- cmake >= 3.7
- vala >= 0.48
- gtk+ >= 3.22
- gee >= 0.8
- poppler >= 0.8 with glib bindings
- pangocairo
- gstreamer >= 1.0 with gst-plugins-good
- discount (aka markdown2 or 3)
- webkit2gtk
- json-glib
- libsoup3
- libqrencode
E.g., on Ubuntu 22.04 onward, you can install these dependencies with::
sudo apt-get install cmake valac libgee-0.8-dev libpoppler-glib-dev libgtk-3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libjson-glib-dev libmarkdown2-dev libwebkit2gtk-4.1-dev libsoup3.0-dev libqrencode-dev gstreamer1.0-gtk3
(the last one is a run-time dependence). You should also consider installing all
plugins to support required video formats; chances are they are already present
through dependencies of ubuntu-desktop
.
On macOS with Homebrew, the easiest way is to install all dependencies of the pdfpc package without pdfpc itself::
brew install --only-dependencies pdfpc
On macOS with MacPorts, you can install all dependencies using the port
command::
# list dependencies for the +quartz +video variant
# (good macOS integration)
port deps pdfpc +quartz +video
# install dependencies
sudo port -v install cmake vala pkgconfig gtk3 +quartz poppler libgee librsvg gstreamer1-gst-plugins-good +gtk3
# list dependencies for the +x11 +video variant
# (using X11 server)
port deps pdfpc +x11 +video
# install dependencies
sudo port -v install cmake vala pkgconfig gtk3 +x11 poppler libgee librsvg gstreamer1-gst-plugins-good +gtk3 +x11
On Windows with MSYS2/MinGW-w64, the dependencies are installed with::
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-gcc mingw-w64-x86_64-pkg-config mingw-w64-x86_64-vala mingw-w64-x86_64-libgee mingw-w64-x86_64-poppler mingw-w64-x86_64-gtk3 mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base mingw-w64-x86_64-json-glib mingw-w64-x86_64-libsoup mingw-w64-x86_64-qrencode mingw-w64-x86_64-discount
(change x86_64
to i686
if you want to compile the 32-bit variant).
Downloading and compilation
You can download the latest stable release of pdfpc in the release section of github (https://github.com/pdfpc/pdfpc/releases). Uncompress the tarball (we use v4.6.0 as an example here)::
tar xvf pdfpc-4.6.0.tar.gz
Change to the extracted directory::
cd pdfpc-4.6.0
Compile and install::
mkdir build/
cd build/
cmake ..
make
sudo make install
If there are no errors in the process, you just installed pdfpc on your system. Congratulations! If there were errors, they are probably due to missing dependencies. Please check that you have all the necessary libraries (in some distributions you may have to install -devel packages).
Note: You may alter the final installation prefix in the cmake call. By default, the pdfpc files will be installed under /usr/local/. If you want to change that, for example to be installed under /usr/, you can specify another installation prefix as follows::
cmake -DCMAKE_INSTALL_PREFIX="/usr" ..
By default, pdfpc includes support for movie playback. This requires several gstreamer dependencies. The requirement for these packages can be removed by compiling without support for movie playback by passing -DMOVIES=OFF to the cmake command.
To disable support for the built-in REST Web server, pass -DREST=OFF to cmake. In this case, libsoup and libqrencode are not needed.
To disable support for viewing notes in the Markdown format, pass -DMDVIEW=OFF to cmake. In this case, webkit2gtk is not needed. If webkit2gtk is not available for your OS (i.e., macOS or Windows), you must pass this option for the build to succeed.
On Windows, the compilation has been tested with the Ninja backend, so pass -DCMAKE_MAKE_PROGRAM=ninja to the cmake command and use ninja instead of make.
Compilation troubleshooting
Some distributions do not have a valac executable. Instead they ship with a version suffix like valac-0.40. If cmake cannot find the Vala compiler, you can try running cmake with::
cmake -DVALA_EXECUTABLE:NAMES=valac-0.40 ..
Acknowledgements
pdfpc was initially developed as pdfpc-presenter-console by Jakob Westhoff (https://github.com/jakobwesthoff/Pdf-Presenter-Console) then further extended by David Vilar (https://github.com/davvil/pdfpc).
Top Related Projects
A CLI interface for Marp and Marpit based converters
The HTML Presentation Framework
PDF exporter for HTML presentations
A simple, in-browser, markdown-driven slideshow tool.
It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
Universal markup converter
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot