Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dtu-enote-pdfjs
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
enote
dtu-enote-pdfjs
Commits
81649b00
Commit
81649b00
authored
10 years ago
by
Yury Delendik
Browse files
Options
Downloads
Patches
Plain Diff
Base64 example and be more flexible what type of data is passed.
parent
6ceb652a
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
examples/learning/helloworld64.html
+81
-0
81 additions, 0 deletions
examples/learning/helloworld64.html
src/display/api.js
+18
-3
18 additions, 3 deletions
src/display/api.js
with
99 additions
and
3 deletions
examples/learning/helloworld64.html
0 → 100644
+
81
−
0
View file @
81649b00
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title>
'Hello, world!' base64 example
</title>
</head>
<body>
<h1>
'Hello, world!' example
</h1>
<canvas
id=
"the-canvas"
style=
"border:1px solid black"
></canvas>
<!-- for legacy browsers we need to use compatibility.js -->
<script
src=
"../../web/compatibility.js"
></script>
<script
src=
"../../build/pdf.js"
></script>
<script
id=
"script"
>
// atob() is used to convert base64 encoded PDF to binary-like data.
// (See also https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/
// Base64_encoding_and_decoding.)
var
pdfData
=
atob
(
'
JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwog
'
+
'
IC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAv
'
+
'
TWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0K
'
+
'
Pj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAg
'
+
'
L1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+
'
+
'
PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9u
'
+
'
dAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2Jq
'
+
'
Cgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJU
'
+
'
CjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVu
'
+
'
ZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4g
'
+
'
CjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAw
'
+
'
MDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9v
'
+
'
dCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G
'
);
// Disable workers to avoid yet another cross-origin issue (workers need
// the URL of the script to be loaded, and dynamically loading a cross-origin
// script does not work).
//
// PDFJS.disableWorker = true;
// In cases when the pdf.worker.js is located at the different folder than the
// pdf.js's one, or the pdf.js is executed via eval(), the workerSrc property
// shall be specified.
//
// PDFJS.workerSrc = '../../build/pdf.worker.js';
// Opening PDF by passing its binary data as a string. It is still preferable
// to use Uint8Array, but string or array-like structure will work too.
PDFJS
.
getDocument
({
data
:
pdfData
}).
then
(
function
getPdfHelloWorld
(
pdf
)
{
// Fetch the first page.
pdf
.
getPage
(
1
).
then
(
function
getPageHelloWorld
(
page
)
{
var
scale
=
1.5
;
var
viewport
=
page
.
getViewport
(
scale
);
// Prepare canvas using PDF page dimensions.
var
canvas
=
document
.
getElementById
(
'
the-canvas
'
);
var
context
=
canvas
.
getContext
(
'
2d
'
);
canvas
.
height
=
viewport
.
height
;
canvas
.
width
=
viewport
.
width
;
// Render PDF page into canvas context.
var
renderContext
=
{
canvasContext
:
context
,
viewport
:
viewport
};
page
.
render
(
renderContext
);
});
});
</script>
<hr>
<h2>
JavaScript code:
</h2>
<pre
id=
"code"
></pre>
<script>
document
.
getElementById
(
'
code
'
).
textContent
=
document
.
getElementById
(
'
script
'
).
text
;
</script>
</body>
</html>
This diff is collapsed.
Click to expand it.
src/display/api.js
+
18
−
3
View file @
81649b00
...
...
@@ -18,7 +18,7 @@
StatTimer, globalScope, MessageHandler, info, FontLoader, Util, warn,
Promise, PasswordResponses, PasswordException, InvalidPDFException,
MissingPDFException, UnknownErrorException, FontFaceObject,
loadJpegStream, createScratchCanvas, CanvasGraphics,
loadJpegStream, createScratchCanvas, CanvasGraphics,
stringToBytes,
UnexpectedResponseException */
'
use strict
'
;
...
...
@@ -162,7 +162,9 @@ PDFJS.maxCanvasPixels = (PDFJS.maxCanvasPixels === undefined ?
*
* @typedef {Object} DocumentInitParameters
* @property {string} url - The URL of the PDF.
* @property {TypedArray} data - A typed array with PDF data.
* @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays
* (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded,
* use atob() to convert it to a binary string first.
* @property {Object} httpHeaders - Basic authentication headers.
* @property {boolean} withCredentials - Indicates whether or not cross-site
* Access-Control requests should be made using credentials such as cookies
...
...
@@ -249,14 +251,27 @@ PDFJS.getDocument = function getDocument(src,
source
=
src
;
}
// copy/use all keys as is except 'url' -- full path is required
var
params
=
{};
for
(
var
key
in
source
)
{
if
(
key
===
'
url
'
&&
typeof
window
!==
'
undefined
'
)
{
// The full path is required in the 'url' field.
params
[
key
]
=
combineUrl
(
window
.
location
.
href
,
source
[
key
]);
continue
;
}
else
if
(
key
===
'
range
'
)
{
continue
;
}
else
if
(
key
===
'
data
'
&&
!
(
source
[
key
]
instanceof
Uint8Array
))
{
// Converting string or array-like data to Uint8Array.
var
pdfBytes
=
source
[
key
];
if
(
typeof
pdfBytes
===
'
string
'
)
{
params
[
key
]
=
stringToBytes
(
pdfBytes
);
}
else
if
(
typeof
pdfBytes
===
'
object
'
&&
pdfBytes
!==
null
&&
!
isNaN
(
pdfBytes
.
length
))
{
params
[
key
]
=
new
Uint8Array
(
pdfBytes
);
}
else
{
error
(
'
Invalid PDF binary data: either typed array, string or
'
+
'
array-like object is expected in the data property.
'
);
}
continue
;
}
params
[
key
]
=
source
[
key
];
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment