The Hypothesis Annotation Framework Documentation, Release 0.0.2
Please note thatin a production environment there are several additional steps you should take. First, there are several
important environment variables you should set:
• APP_URL the base URL of the application
• SECRET_KEY a secret key for use in cryptographic operations
Note: You can generate an appropriate secret key as follows:
$ python -c 'import base64; import os; print(base64.b64encode(os.urandom(64))).strip(b"=")'
You will probably also want to set one or more of the following configuration options:
• ALLOWED_ORIGINS origins allowed to connect over the WebSocket protocol
• CLIENT_ID a unique API key for authentication
• CLIENT_SECRET a unique API secret for signing authentication requests
• ELASTICSEARCH_INDEX the Elasticsearch index name forannotation storage
• MAIL_DEFAULT_SENDER a sender address for outbound mail
In addition, there are several important components of a production Hypothesis installation which will need to be run
in theirown containers. For example,a worker process:
$ docker run --name h-worker \
[...additional config...] \
hypothesis/hypothesis \
hypothesis-celery worker
And, possibly, a websocket server:
$ docker run --name h-websocket \
[...additional config...] \
-p 5001:5001 \
hypothesis/hypothesis \
gunicorn --paste conf/websocket.ini
1.4. Running the container
Copying image from pdf to powerpoint - control SDK system:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
Copying image from pdf to powerpoint - control SDK system:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
The Hypothesis Annotation Framework Documentation, Release 0.0.2
Chapter 1. Deploying to a production environment
control SDK system:C# PDF copy, paste image Library: copy, paste, cut PDF images in
project. Visual C# class source code for copying, pasting, cutting image from PDF in Visual Studio .NET framework program. Support
control SDK system:VB.NET PDF copy, paste image library: copy, paste, cut PDF images
to Another in VB.NET. .NET framework PDF editor SDK control for image copying, pasting and cutting from adobe PDF file in VB.NET.
To access the admin interface,a user must be logged in and have admin permissions. To grant admin permissions to a
user,run the followingcommand:
hypothesis admin <config_uri> <username>
For example, to make someone an admin in the development environment:
hypothesis admin conf/development-app.ini usernamehere
When this user signs inthey cannow access the adminstration panel at /admin. The administration panelhas options
for managing users and optional features.
control SDK system:C# PDF File Permission Library: add, remove, update PDF file
Image: Copy, Paste, Cut Image in Page. Link: Edit URL. Choose to offer PDF annotation and content extraction Enable or disable copying and form filling functions.
control SDK system:C# PDF Page Extract Library: copy, paste, cut PDF pages in
NET application. Online C# source code for extracting, copying and pasting PDF pages in C#.NET console class. Support .NET WinForms
The Hypothesis Annotation Framework Documentation, Release 0.0.2
Chapter 2. Administration
control SDK system:VB.NET PDF File Permission Library: add, remove, update PDF file
NET PDF Windows Viewer, C#.NET convert image to PDF Choose to offer PDF annotation and content extraction Enable or disable copying and form filling functions.
control SDK system:C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
protect PDF document from editing, printing, copying and commenting Such as Word, Excel, PowerPoint, Tiff, images and other C#.NET: Edit PDF Image in ASP.NET.
Contributor’s guide
The following sections document how to setup a development environment for h and how to contribute code or docu-
mentation to the project.
3.1 Communications
Please be courteous and respectful in your communication on IRC (, the mailing list
(subscribe,archive), andGithub. Humor is appreciated, but remember that some nuance may be lost in the medium
and plan accordingly.
If you plan to be an active contributor please join our mailing list to coordinate development effort. This coordination
helps us avoid duplicating efforts and raises the level of collaboration. For small fixes, feel free to open a pull request
without any priordiscussion.
3.2 Contributor License Agreement
Before submitting significant contributions, we ask that you sign one of our Contributor License Agreements. This
practice ensures that the rights ofcontributors to theircontributions are preserved and protects the ongoing availability
ofthe project and a commitment to make it available for anyone to use with as few restrictions as possible.
If contributing as an individual please sign the CLA for individuals:
• CLAforindividuals,HTML
• CLAforindividuals,PDF
If making contributions on behalf of an employer, please sign the CLAforemployees:
• CLAforemployers,HTML
• CLAforemployers,PDF
Acompleted formcan eitherbe sent by electronic mail or via conventional mail at the address
below. If you have any questions,please contact us. Project
2261 Market St #632
SF, CA 94114
control SDK system:C# PDF Convert to Word SDK: Convert PDF to Word library in
remove watermark and save PDF text, image, table, hyperlink Password protected PDF file can be printed to Word source code is available for copying and using
control SDK system:C# PDF File & Page Process Library SDK for, ASP.NET, MVC
Image: Copy, Paste, Cut Image in Page. Link: Edit URL. Bookmark: Edit RasterEdge XDoc.PDF allows you to easily move PDF document pages Copying and Pasting Pages.
The Hypothesis Annotation Framework Documentation, Release 0.0.2
3.3 Installing h in a development environment
This document contains instructions onsettingup adevelopmentenvironment forh. Ifyou are looking forinstructions
on deploying h in a production environment, please consult theDeployingtoaproductionenvironmentinstead.
3.3.1 Get the h source code from GitHub
Use git to download the h source code:
git clone
This will download the code into an h directory in your current working directory.
3.3.2 Requirements
To run h in a development environment you’ll need these systemdependencies installed:
• Pythonv2.7
• Nodev4+and its package manager,npm
You’ll also need to run, at a minimum, these external services:
• Elasticsearchv1.0+, with theElasticsearchICUAnalysisplugin installed
• NSQ v0.3+
• Redisv2.4+
The following sections will explain how toinstall these system dependencies and services.
3.3.3 Installing the system dependencies
Installing h’s system dependencies is different on different operating systems. Follow either theInstallingthesystem
dependencies onUbuntu 14.04orthe Installing the system dependencies on OS Xsectionbelow.
Installing the system dependencies on Ubuntu 14.04
This section describes how to install h’s system dependencies on Ubuntu 14.04. These steps will also probably work
with little or no changes on other versions of Ubuntu, Debian, orother Debian-based GNU/Linux distributions.
Install the following packages:
sudo apt-get install -y --no-install-recommends \
build-essential \
git \
libevent-dev \
libffi-dev \
libpq-dev \
npm \
python-dev \
python-pip \
Chapter 3. Contributor’s guide
control SDK system:VB.NET PDF File & Page Process Library SDK for, ASP.NET
The PDFDocument instance may consist of newly created blank pages or image-only pages from an image source. PDF Pages Extraction, Copying and Pasting.
control SDK system:.NET PDF SDK - Description of All PDF Processing Control Feastures
Create PDF from Excel (xlsx, xls); Create PDF from PowerPoint (pptx, ppt PDF page extraction, copying and pasting allow users to move PDF pages; PDF Image Process
The Hypothesis Annotation Framework Documentation, Release 0.0.2
Install node by following (the version of the nodejs package in the standard Ubuntu
repositories is too old).
Upgrade pip and npm:
sudo pip install -U pip virtualenv
sudo npm install -g npm
Installing the system dependencies on OS X
This section describes how to install h’s system dependencies onMac OS X.
The instructions that follow assume you have previously installedHomebrew.
Install the following packages:
brew install \
libevent \
libffi \
node \
3.3.4 Installing the services
hrequiresElasticsearch 1.0+ with theElasticsearchICUAnalysisplugin,NSQ 0.3+ andPostgreSQL 9.4+. You can
install these services however you want, but the easiest way is by using Docker. This should work on any operating
systemthat Docker can be installed on:
1. Install Docker by following the instructions on theDockerwebsite.
2. Download and run theofficialNSQimage, theofficialPostgreSQLimage, theofficialRedisimage, and our
docker run -d --name nsqd -p 4150:4150 -p 4151:4151 nsqio/nsq /nsqd
docker run -d --name postgres -p 5432:5432 postgres
docker run -d --name redis -p 6379:6379 redis
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 nickstenning/elasticsearch-icu
You’ll now have four Docker containers named nsqd, postgres, redis and elasticsearch running
and exposing the nsqd service on ports 4150 and 4151, Elasticsearch on 9200 and 9300, Redis on 6379, and
PostgreSQL on 5432. You should be able to see thembyrunning docker ps. You should also be able to visit
your Elasticsearch service by openinghttp:// a browser, and connect to your PostgreSQL by
running psql postgresql://postgres@localhost/postgres (if you have psql installed).
Note: You onlyneed to run the above docker run commands once. If you need tostart the containers again
(forexample after restarting yourcomputer), you can just run:
docker start postgres elasticsearch nsqd redis
3. Create the htest database in the postgres container. This is needed to run the h tests:
docker run -it --link postgres:postgres --rm postgres sh -c 'exec psql -h h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U U postgres s -c "CREATE DATABASE E htest;"'
Tip: You can use the PostgreSQL Docker image to open a psql shell to your Dockerized database without having to
install psql on your host machine. Do:
3.3. Installing h in a development environment
The Hypothesis Annotation Framework Documentation, Release 0.0.2
docker run -it --link postgres:postgres --rm postgres sh -c 'exec psql -h h "$POSTGRES_PORT_5432_TCP_ADDR" " -p p "$POSTGRES_PORT_5432_TCP_PORT" " -U U postgres'
This runs psql in a fourth Docker container (from the same official PostgreSQL image, which also contains psql)
and links it to your named postgres container using Docker’s container linking system. The psql container is
automatically removed (--rm) when you exit the psql shell.
Tip: Use the docker logs command to see what’s going on inside yourDocker containers, for example:
docker logs nsqd
For more on how to use Docker see theDockerwebsite.
3.3.5 Running h
Runthe following command tostarttheHypothesis webservice. Ifthis is a fresh clone ofthe repository,this may take
some time to run,as it will need to install the application dependencies and build the client assets.
Note: Although it is strictly optional, we highly recommend that you install h inside a Python “virtualenv”. Please
referto thevirtualenvenvironmentsection featured in the Hitchhiker’s guide toPython for a comprehensive introduc-
make dev
This willstart the server on port5000 (http://localhost:5000),reloadthe application whenever changes are madeto the
source code, and restart it should it crash for some reason.
Note: Using the bookmarklet or otherwise embedding the application may not be possible on sites accessed via
HTTPS due to browser policy restricting the inclusion ofnon-SSL content.
If you are making changes to the client,orthe JavaScriptcode or styles forthe service, you may findit useful to install
npm install -g gulp-cli
gulp watch
When gulp watch is running, you can visithttp://localhost:3000 to see a page with an embedded Hypothesis client
which will automatically reload when styles, templates or JavaScript source files are changed.
If you are running backgroundtasks,youmusthave a Celery worker running. Toruna Celery workerin development,
CONFIG_URI=conf/development-app.ini hypothesis-celery worker
3.3.6 Running the tests
There are test suites for both the frontend and backend code. To run the complete set oftests, run:
make test
To run the frontend test suite only, installGulpand run the appropriate test task. Forexample:
Chapter 3. Contributor’s guide
The Hypothesis Annotation Framework Documentation, Release 0.0.2
npm install -g gulp-cli
gulp test-app
When working on the front-end code, you can run the Karma test runner in auto-watch mode which will re-run the
tests whenevera change is made to the source code. To start the test runner in auto-watch mode, run:
gulp test-watch-app
To run only a subset of tests for front-end code,use the --grep argument or mocha’s.only() modifier.
gulp test-watch-app --grep <pattern>
3.3.7 Debugging h
Thepyramid_debugtoolbar package is loaded by default in the development environment. This will provide stack
traces forexceptionsandallowbasic debugging. Amore advanced profiler can alsobeaccessed atthe /_debug_toolbar
Check out thepyramid_debugtoolbardocumentation for information on how to use and configure it.
You can turn on SQL query logging by setting the DEBUG_QUERY environment variable (to any value). Set it to the
special value trace to turn on result set logging as well.
3.3.8 Feature Flags
Features flags allow admins to enable or disable features for certain groups of users. You can enable or disable them
from the AdministrationDashboard.
To access the Administration Dashboard, you will need to first create a user account in your local instance of H and
then give that account admin access rights using H’s command-line tools.
See theAdministrationdocumentation for information on how to give the initial user admin rights and access the
Administration Dashboard.
3.4 Building the Chrome extension
This document describes how to build an instance of theHypothesisChromeextensionbased on the current contents
ofyour working tree and install it in Chrome.
3.4.1 Building the Chrome extension for development
To build and install the Chrome extension:
1. Do anhdevelopmentinstall.
2. Run this command to build the Chrome extension:
hypothesis-buildext chrome --debug --service '' --bouncer ''
Note: The --service URL specifies the Hypothesis service which the extension should communicate
with. This can either point to your local H instance, if you have one set up, or the public instance at‘.
3.4. Building the Chrome extension
The Hypothesis Annotation Framework Documentation, Release 0.0.2
If you want to test the extension on pages served via HTTPS, you will need to configure the extension to com-
municate with a Hypothesis service that is also served over HTTPS. SeeServinghoverSSL for instructions
on serving a local instance of H via SSL.
3. Go to chrome://extensions/ in Chrome.
4. Tick Developer mode.
5. Click Load unpacked extension.
6. Browse to the h/build/chrome/ directory where the extensionwas built and select it.
Your extension should be working now! Rememberthat if you set --service to the URL ofyour local H instance,
you need to have H running in order to use the extension.
3.4.2 Building the Chrome extension for production
For production builds of the Chrome extension, omit the --debug flag and point it to a service which is served via
HTTPS. Youmay also wish toenable client errorreporting by setting the --sentry-public-dsn argument.
hypothesis-buildext chrome --service ''
3.4.3 Serving the sidebar from your local H instance
In development, you may findit convenient to configure the extension to load the sidebar app fromthe URL specified
with --service instead of bundling it into the extension. Buildingthe extensionthis wayallows you to testchanges
to the sidebar code without having to re-run the hypothesis-buildext command.
To do this,runhypothesis-buildext with the --no-bundle-sidebar flag.
There are issues with building the extension this way that you should be aware of:
1. The extension will fail to load on https:// pages unless the Hypothesis service specified with --service
also uses an https URL.
2. The extension will fail to load on some sites that useContentSecurityPolicy. To test the extension on these
sites you’ll needto buildwithout the --no-bundle-sidebar option.
3.4.4 Chrome version support
We currently support at least the last 10 stable releases of Google Chrome, which equates to releases in the last ~14
See Wikipedia’sChromeReleaseHistorypage for a history ofrecent releases.
3.4.5 Troubleshooting
Mixed Content errors in the console
The extension fails to load and you see Mixed Content errors in the console. When using the Chrome extension on
sites served overHTTPS,the extension must be configured to use an HTTPS --service URL.
Chapter 3. Contributor’s guide
Documents you may be interested
Documents you may be interested