Skip to content

Commit eb16cab

Browse files
committed
Add Laravel example for PSPDFKit integration
- Created a new Laravel example project demonstrating the integration of PSPDFKit for Web. - Added essential files including .env.example, composer.json, and various configuration files. - Implemented a basic structure with routes and a PDF viewer using PSPDFKit. - Included scripts for verifying installation and copying necessary PSPDFKit files. - Added sample assets including a PDF document and favicon for demonstration. - Provided detailed instructions in the README for getting started and running the example. - Updated e2e test script to exclude the new Laravel example directory.
1 parent c102974 commit eb16cab

File tree

94 files changed

+44650
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+44650
-1
lines changed

examples/laravel/.editorconfig

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
indent_style = space
8+
indent_size = 4
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false
13+
14+
[*.{yml,yaml}]
15+
indent_size = 2
16+
17+
[docker-compose.yml]
18+
indent_size = 4

examples/laravel/.env.example

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
APP_NAME=Laravel
2+
APP_ENV=local
3+
APP_KEY=
4+
APP_DEBUG=true
5+
APP_URL=http://localhost
6+
7+
LOG_CHANNEL=stack
8+
LOG_DEPRECATIONS_CHANNEL=null
9+
LOG_LEVEL=debug
10+
11+
DB_CONNECTION=mysql
12+
DB_HOST=127.0.0.1
13+
DB_PORT=3306
14+
DB_DATABASE=pspdfkit_app
15+
DB_USERNAME=root
16+
DB_PASSWORD=
17+
18+
BROADCAST_DRIVER=log
19+
CACHE_DRIVER=file
20+
FILESYSTEM_DISK=local
21+
QUEUE_CONNECTION=sync
22+
SESSION_DRIVER=file
23+
SESSION_LIFETIME=120
24+
25+
MEMCACHED_HOST=127.0.0.1
26+
27+
REDIS_HOST=127.0.0.1
28+
REDIS_PASSWORD=null
29+
REDIS_PORT=6379
30+
31+
MAIL_MAILER=smtp
32+
MAIL_HOST=mailhog
33+
MAIL_PORT=1025
34+
MAIL_USERNAME=null
35+
MAIL_PASSWORD=null
36+
MAIL_ENCRYPTION=null
37+
MAIL_FROM_ADDRESS="[email protected]"
38+
MAIL_FROM_NAME="${APP_NAME}"
39+
40+
AWS_ACCESS_KEY_ID=
41+
AWS_SECRET_ACCESS_KEY=
42+
AWS_DEFAULT_REGION=us-east-1
43+
AWS_BUCKET=
44+
AWS_USE_PATH_STYLE_ENDPOINT=false
45+
46+
PUSHER_APP_ID=
47+
PUSHER_APP_KEY=
48+
PUSHER_APP_SECRET=
49+
PUSHER_APP_CLUSTER=mt1
50+
51+
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
52+
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

examples/laravel/.gitattributes

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
* text=auto
2+
3+
*.blade.php diff=html
4+
*.css diff=css
5+
*.html diff=html
6+
*.md diff=markdown
7+
*.php diff=php
8+
9+
/.github export-ignore
10+
CHANGELOG.md export-ignore

examples/laravel/.gitignore

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/node_modules
2+
/public/hot
3+
/public/storage
4+
/storage/*.key
5+
/vendor
6+
.env
7+
.env.backup
8+
.phpunit.result.cache
9+
Homestead.json
10+
Homestead.yaml
11+
npm-debug.log
12+
yarn-error.log
13+
/.idea
14+
/.vscode
15+
pspdfkit.js

examples/laravel/.styleci.yml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
php:
2+
preset: laravel
3+
disabled:
4+
- no_unused_imports
5+
finder:
6+
not-name:
7+
- index.php
8+
js:
9+
finder:
10+
not-name:
11+
- webpack.mix.js
12+
css: true

examples/laravel/README.md

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Nutrient Web SDK Example – Laravel
2+
3+
This example shows how to integrate [Nutrient Web SDK](https://www.nutrient.io/web/) into a [Laravel](https://laravel.com/) app.
4+
5+
## Prerequisites
6+
7+
- PHP
8+
- [Composer](https://getcomposer.org/download/)
9+
- [Laravel Installer](https://laravel.com/docs/8.x#the-laravel-installer)
10+
11+
You can install PHP via [XAMPP](https://www.mamp.info/en/mac/), [MAMP](https://www.apachefriends.org/index.html) or [Homebrew](https://formulae.brew.sh/formula/php).
12+
13+
## Support, Issues and License Questions
14+
15+
PSPDFKit offers support for customers with an active SDK license via https://www.nutrient.io/support/request/
16+
17+
Are you [evaluating our SDK](https://www.nutrient.io/try/)? That's great, we're happy to help out! To make sure this is fast, please use a work email and have someone from your company fill out our sales form: https://www.nutrient.io/sales/
18+
19+
## Getting Started
20+
21+
1. Clone the repo:
22+
23+
```bash
24+
git clone https://github.com/PSPDFKit/pspdfkit-web-example-laravel.git
25+
26+
cd pspdfkit-web-example-laravel
27+
```
28+
29+
2. Run `composer install` on your terminal.
30+
31+
3. Copy `.env.example` file to `.env` on the root folder.
32+
33+
- For Windows, type `copy .env.example .env`
34+
- For Ubuntu, type `cp .env.example .env`
35+
36+
4. Generate your application encryption key using `php artisan key:generate`.
37+
38+
5. Install PSPDFKit as a dependency:
39+
40+
```bash
41+
npm install
42+
```
43+
44+
6. Run `npm run dev` to copy the PSPDFKit artifacts to your `public/assets/pspdfkit/` folder.
45+
46+
Make sure your `/public/assets/pspdfkit/` folder contains the file `pspdfkit.js` and a `pspdfkit-lib` directory with library assets.
47+
48+
## Running the Example
49+
50+
We are ready to launch the app! 🎉
51+
52+
```bash
53+
php artisan serve
54+
```
55+
56+
You can now open http://localhost:8000/ in your browser and enjoy!
57+
58+
## License
59+
60+
This software is licensed under a [modified BSD license](LICENSE).
61+
62+
## Contributing
63+
64+
Please ensure
65+
[you have signed our CLA](https://www.nutrient.io/guides/web/current/miscellaneous/contributing/) so that we can accept your contributions.
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace App\Console;
4+
5+
use Illuminate\Console\Scheduling\Schedule;
6+
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
7+
8+
class Kernel extends ConsoleKernel
9+
{
10+
/**
11+
* Define the application's command schedule.
12+
*
13+
* @param \Illuminate\Console\Scheduling\Schedule $schedule
14+
* @return void
15+
*/
16+
protected function schedule(Schedule $schedule)
17+
{
18+
// $schedule->command('inspire')->hourly();
19+
}
20+
21+
/**
22+
* Register the commands for the application.
23+
*
24+
* @return void
25+
*/
26+
protected function commands()
27+
{
28+
$this->load(__DIR__.'/Commands');
29+
30+
require base_path('routes/console.php');
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
namespace App\Exceptions;
4+
5+
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
6+
use Throwable;
7+
8+
class Handler extends ExceptionHandler
9+
{
10+
/**
11+
* A list of the exception types that are not reported.
12+
*
13+
* @var array<int, class-string<Throwable>>
14+
*/
15+
protected $dontReport = [
16+
//
17+
];
18+
19+
/**
20+
* A list of the inputs that are never flashed for validation exceptions.
21+
*
22+
* @var array<int, string>
23+
*/
24+
protected $dontFlash = [
25+
'current_password',
26+
'password',
27+
'password_confirmation',
28+
];
29+
30+
/**
31+
* Register the exception handling callbacks for the application.
32+
*
33+
* @return void
34+
*/
35+
public function register()
36+
{
37+
$this->reportable(function (Throwable $e) {
38+
//
39+
});
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace App\Http\Controllers;
4+
5+
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
6+
use Illuminate\Foundation\Bus\DispatchesJobs;
7+
use Illuminate\Foundation\Validation\ValidatesRequests;
8+
use Illuminate\Routing\Controller as BaseController;
9+
10+
class Controller extends BaseController
11+
{
12+
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
13+
}

examples/laravel/app/Http/Kernel.php

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
3+
namespace App\Http;
4+
5+
use Illuminate\Foundation\Http\Kernel as HttpKernel;
6+
7+
class Kernel extends HttpKernel
8+
{
9+
/**
10+
* The application's global HTTP middleware stack.
11+
*
12+
* These middleware are run during every request to your application.
13+
*
14+
* @var array<int, class-string|string>
15+
*/
16+
protected $middleware = [
17+
// \App\Http\Middleware\TrustHosts::class,
18+
\App\Http\Middleware\TrustProxies::class,
19+
\Illuminate\Http\Middleware\HandleCors::class,
20+
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
21+
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
22+
\App\Http\Middleware\TrimStrings::class,
23+
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
24+
];
25+
26+
/**
27+
* The application's route middleware groups.
28+
*
29+
* @var array<string, array<int, class-string|string>>
30+
*/
31+
protected $middlewareGroups = [
32+
'web' => [
33+
\App\Http\Middleware\EncryptCookies::class,
34+
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
35+
\Illuminate\Session\Middleware\StartSession::class,
36+
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
37+
\App\Http\Middleware\VerifyCsrfToken::class,
38+
\Illuminate\Routing\Middleware\SubstituteBindings::class,
39+
],
40+
41+
'api' => [
42+
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
43+
'throttle:api',
44+
\Illuminate\Routing\Middleware\SubstituteBindings::class,
45+
],
46+
];
47+
48+
/**
49+
* The application's route middleware.
50+
*
51+
* These middleware may be assigned to groups or used individually.
52+
*
53+
* @var array<string, class-string|string>
54+
*/
55+
protected $routeMiddleware = [
56+
'auth' => \App\Http\Middleware\Authenticate::class,
57+
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
58+
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
59+
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
60+
'can' => \Illuminate\Auth\Middleware\Authorize::class,
61+
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
62+
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
63+
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
64+
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
65+
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
66+
];
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Illuminate\Auth\Middleware\Authenticate as Middleware;
6+
7+
class Authenticate extends Middleware
8+
{
9+
/**
10+
* Get the path the user should be redirected to when they are not authenticated.
11+
*
12+
* @param \Illuminate\Http\Request $request
13+
* @return string|null
14+
*/
15+
protected function redirectTo($request)
16+
{
17+
if (! $request->expectsJson()) {
18+
return route('login');
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
6+
7+
class EncryptCookies extends Middleware
8+
{
9+
/**
10+
* The names of the cookies that should not be encrypted.
11+
*
12+
* @var array<int, string>
13+
*/
14+
protected $except = [
15+
//
16+
];
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
6+
7+
class PreventRequestsDuringMaintenance extends Middleware
8+
{
9+
/**
10+
* The URIs that should be reachable while maintenance mode is enabled.
11+
*
12+
* @var array<int, string>
13+
*/
14+
protected $except = [
15+
//
16+
];
17+
}

0 commit comments

Comments
 (0)