Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/manuels/hpdf.js
Create PDFs in your browser or nodejs (javascript port of libharu)
https://github.com/manuels/hpdf.js
Last synced: 8 days ago
JSON representation
Create PDFs in your browser or nodejs (javascript port of libharu)
- Host: GitHub
- URL: https://github.com/manuels/hpdf.js
- Owner: manuels
- License: zlib
- Created: 2012-09-27T19:33:51.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2022-02-24T13:07:46.000Z (almost 3 years ago)
- Last Synced: 2025-01-02T02:08:39.930Z (17 days ago)
- Language: JavaScript
- Homepage: http://manuels.github.com/hpdf.js/
- Size: 3.65 MB
- Stars: 184
- Watchers: 20
- Forks: 30
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
hpdf.js
=======Create PDFs in your browser (port of libharu)
[See the demo page](http://manuels.github.com/hpdf.js/)Why?
====Because other projects with the same goal lack a lot of features (e.g. custom fonts).
Features
========
- Custom Fonts (Type1 and TTF)
- PNG, JPG and RAW images
- Password encryption
- Text and Link Annotations
- Outlines
- Drawing function (lines, cycles etc.)
- Encoding supportHow to use
==========Include `hpdf.js` or `hpdf.min.js` in your HTML file and [see examples](http://manuels.github.com/hpdf.js/) or [libharu API reference](https://github.com/libharu/libharu/wiki)
API naming convention
=====================- Function names are like their [libharu API](https://github.com/libharu/libharu/wiki) pendants but object-oriented and their first letter is lowercase.
```
// javascript code // C code
var pdf = new HPDF(); HPDF_Doc pdf = HPDF_New (error_handler, NULL);
var page = pdf.addPage(); HPDF_Page page = HPDF_AddPage(pdf);
pdf.free(); HPDF_Free(pdf);
```- ``Get`` in the function name is ommitted and ``Set`` is kept
```
// javascript code // C code
var width = page.width(); HPDF_REAL width = HPDF_Page_GetWidth(page);
page.setLineWidth(5); HPDF_Page_SetLineWidth(page, 5);
```- Use ``undefined`` in Javascript where you would use ``NULL`` in C
```
// javascript code // C code
var root = pdf.createOutline(undefined, root = HPDF_CreateOutline (pdf, NULL, "OutlineRoot", NULL);
"OutlineRoot", undefined);
```- Use strings (case irrelevant) in Javascript where you would use constants in C
```
// javascript code // C code
page.setSize('B5', 'landscape'); HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_B5, HPDF_PAGE_LANDSCAPE);
```- Tailing ``NULL``/``undefined`` can be ommitted
```
// javascript code // C code
var font = pdf.font('Helvetica'); HPDF_Font font = HPDF_PDF_GetFont(pdf, 'Helvetica', NULL);
```- Instead of calling a error handler in C, an ``Exception`` is thrown in Javascript
Dependencies
============None. You just need [emscripten](https://github.com/kripken/emscripten) and [CoffeeScript](http://www.coffeescript.org/) if you want to help developing hpdf.js
How to compile (for devs only)
===============================1. Configure libhaku
``cmake ./libharu``1. Configure libpng
``cd ./libpng; cmake .; cd ..``2. Compile hpdf.js
``./compile.sh``
(You might want to change some paths in this bash script!)