|
|
Line 1: |
Line 1: |
| | {{Template:Outdated|See https://github.com/mozilla/pdf.js and https://github.com/mozilla/pdf.js/wiki for more info}} |
| | |
| PDF.js is an HTML5-based Portable Document Format renderer. | | PDF.js is an HTML5-based Portable Document Format renderer. |
|
| |
|
Line 20: |
Line 22: |
| * [[/Meeting2011-10-20]] | | * [[/Meeting2011-10-20]] |
|
| |
|
| === Current work items, 2011-08-22 === | | === Current work items === |
| | |
| Image support
| |
| * JPEG2000 support (Yury?) ([https://github.com/andreasgal/pdf.js/issues/268 issue 286])
| |
| * Image rendering bugs (Shaon?)
| |
| | |
| Use Web Workers for responsiveness and throughput (Shaon)
| |
| | |
| Automated testing
| |
| * Store reference renderings on Amazon S3 (~Chris, would like to hand off)
| |
| * Run regression tests on EC2 on every push to pdf.js repo (~Chris, would like to hand off)
| |
| | |
| Ship pdf.js as version 0.1 Firefox extension
| |
| * Mechanism for users to report broken PDFs (Vivien)
| |
| * UI polish (Vivien)
| |
|
| |
|
| Render PDF 1.7 spec perfectly | | Render PDF 1.7 spec perfectly |
Line 46: |
Line 34: |
|
| |
|
| Integrate code into Firefox/Gecko proper | | Integrate code into Firefox/Gecko proper |
| * (unknown work) | | * (as required) |
| | |
| === Milestone: Big-splash demo ===
| |
| | |
| Probably will be of pixel-perfect rendering of tracemonkey paper, with nontrivial UI (i.e. eye candy).
| |
| | |
| Pixel-perfect rendering
| |
| * <s>Type1 fonts</s>
| |
| * <s>Bitmaps and SMask blending</s>
| |
| * <s>canvas.setDash()</s>
| |
| * <s>even-odd fills</s>
| |
| * <s>axial shading</s>
| |
| * <s>TTF fonts (pass the sanitizer)</s>
| |
| * bring Quartz font rendering to parity with pango/freetype
| |
| | |
| Non-trivial UI
| |
| * <s>zooming</s>
| |
| * <s>pre-rendering pages</s>
| |
| * <s>"continuous" scrolling</s>
| |
| * <s>integrate Worker code into multi-page viewer</s> (punted)
| |
| * preview panel
| |
|
| |
|
| === Tracking in-progress work === | | === Tracking in-progress work === |
Line 85: |
Line 53: |
|
| |
|
| Once a specific work item (issue) has been filed, please assign the issue to yourself if you're working on it. This avoids multiple people working on the same projects and thereby wasting time. | | Once a specific work item (issue) has been filed, please assign the issue to yourself if you're working on it. This avoids multiple people working on the same projects and thereby wasting time. |
|
| |
| === (TODO) ===
| |
|
| |
| Backend
| |
| * zooming
| |
| ** the general idea is that the UI will set a zoom factor, say 200%
| |
| ** we'll redraw the canvas, but with a scale transform to 2x, and a translation set to move the content we want to fill the screen to the top-left
| |
| * draw subpage
| |
| * SVG backend ([https://github.com/andreasgal/pdf.js/issues/229 issue 229])
| |
| * linearization
| |
| ** byte range requests
| |
| * <s>hyperlinks (hash URLs, intra-doc links)</s>
| |
| * perf (use workers for some stuff?)
| |
| * color spaces (big, pervasive)
| |
| * build something like gecko's display list, for hit testing
| |
| ** <s>click-on-link (easy)</s>
| |
| ** text selection (hard) ([https://github.com/andreasgal/pdf.js/issues/10 issue 10])
| |
|
| |
| UI
| |
| * animations (page flip, etc.)
| |
| * <s>hyperlinks</s>
| |
| * page transitions
| |
| * dual-page display ([https://github.com/andreasgal/pdf.js/issues/590 issue 590])
| |
| * page-transition animations
| |
| * <s>pan/zoom/next/prev gestures</s> (Edit: Felipe Gomes and cjones discussed a better way to support these, but it will require new web APIs)
| |
|
| |
| Platform
| |
| * TextMetrics.maxHeight (to compute more accurate bounding boxes; can approximate without this, though)
| |
| * implement text selection in SVG documents ([https://bugzilla.mozilla.org/show_bug.cgi?id=292498 bugzilla 292498])
| |
| * (determine extent of SVG a11y implementation, if any)
| |
|
| |
| Testing
| |
| * reftest-style harness, compare hand-written PDF commands to hand-written canvas (?)
| |
| * compare to poppler output, keep list of differences
| |
|
| |
| Analysis
| |
| * dump stream info
| |
| * dump font info
| |
| * dump raster image info
| |
|
| |
| ==== Big project: Color spaces ====
| |
|
| |
| Approach: map input color values (fillcolor, strokecolor etc.) to output color space. Map input bitmaps to output space with SVG color-matrix filter/WebGL shader program/hand-written JS as available. Problem: will this work correctly for interpolated color values, like intermediate colors in a gradient, and other computed values like the result of composition operators? Does canvas need color-space support? Do we care enough? (What do other PDF renderers do?)
| |
|
| |
| ==== Big project: Hyperlinks ====
| |
|
| |
| * <s>Parse link data from PDF</s>
| |
| * <s>Add UI to highlight/set cursor on link hover</s>
| |
| * <s>Implement "go to point X in page Y" interface in backend</s>
| |
| * Figure out encoding scheme for absolute links, e.g. http://foo.com/bar.pdf#[encoded link]
| |
|
| |
|
| ==== Big project: SVG backend ==== | | ==== Big project: SVG backend ==== |
Line 189: |
Line 107: |
|
| |
|
| === Coding Style === | | === Coding Style === |
| | |
| | See https://github.com/mozilla/pdf.js/wiki/Style-Guide. |
| | |
| * make sure HTML files are declared <!DOCTYPE html> (i.e., HTML5). IE9+ will load them in compatibility mode otherwise. | | * make sure HTML files are declared <!DOCTYPE html> (i.e., HTML5). IE9+ will load them in compatibility mode otherwise. |
|
| |
|
Line 219: |
Line 140: |
| '''NBB: this isn't being enforced yet''' | | '''NBB: this isn't being enforced yet''' |
|
| |
|
| * New code has to pass all tests (FORTHCOMING) | | * New code has to pass all tests |
| * New code can't regress performance on (TBD) as measured by (TBD). Unless the new code implements a new feature major enough to suffer a temporary perf regression. This is up to common sense. | | * New code can't regress performance on (TBD) as measured by (TBD). Unless the new code implements a new feature major enough to suffer a temporary perf regression. This is up to common sense. |
| * Major new features should have architectural review from (TBD). Less major patches can be reviewed by (TBD). | | * Major new features should have architectural review from (TBD). Less major patches can be reviewed by (TBD). |