Created
April 2, 2024 16:25
-
-
Save manutheblacker/6c94848c1e5cab94e84b63ac8f6f5699 to your computer and use it in GitHub Desktop.
WIP : Create a PDF using Postscript and PHP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Define the file name | |
$filename = 'example.pdf'; | |
$pdf_content = '%!PS-Adobe | |
/Helvetica findfont 12 scalefont setfont | |
0 0 moveto | |
%%Page: 0 0 | |
%%BeginPageSetup | |
(<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>Title</title> | |
</head> | |
<body> | |
<div class="flex min-h-full flex-col justify-center px-6 py-12 lg:px-8"> | |
<div class="sm:mx-auto sm:w-full sm:max-w-sm"> | |
<img class="mx-auto h-10 w-auto" src="https://tailwindui.com/img/logos/mark.svg?color=indigo&shade=600" alt="Your Company"> | |
<h2 class="mt-10 text-center text-2xl font-bold leading-9 tracking-tight text-gray-900">Sign in to your account</h2> | |
</div> | |
<div class="mt-10 sm:mx-auto sm:w-full sm:max-w-sm"> | |
<form class="space-y-6" action="#" method="POST"> | |
<div> | |
<label for="email" class="block text-sm font-medium leading-6 text-gray-900">Email address</label> | |
<div class="mt-2"> | |
<input id="email" name="email" type="email" autocomplete="email" required class="block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6"> | |
</div> | |
</div> | |
<div> | |
<div class="flex items-center justify-between"> | |
<label for="password" class="block text-sm font-medium leading-6 text-gray-900">Password</label> | |
<div class="text-sm"> | |
<a href="#" class="font-semibold text-indigo-600 hover:text-indigo-500">Forgot password?</a> | |
</div> | |
</div> | |
<div class="mt-2"> | |
<input id="password" name="password" type="password" autocomplete="current-password" required class="block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6"> | |
</div> | |
</div> | |
<div> | |
<button type="submit" class="flex w-full justify-center rounded-md bg-indigo-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600">Sign in</button> | |
</div> | |
</form> | |
<p class="mt-10 text-center text-sm text-gray-500"> | |
Not a member? | |
<a href="#" class="font-semibold leading-6 text-indigo-600 hover:text-indigo-500">Start a 14 day free trial</a> | |
</p> | |
</div> | |
</div> | |
</body> | |
</html>) show | |
%%IncludeResource: font TimesRoman | |
%%EndPageSetup | |
showpage'; | |
// Write the content to a file | |
file_put_contents($filename, $pdf_content); | |
// Output PDF | |
header('Content-type: application/pdf'); | |
header('Content-Disposition: inline; filename="' . $filename . '"'); | |
header('Content-Transfer-Encoding: binary'); | |
header('Accept-Ranges: bytes'); | |
// i'm working on a way to render the html as binary before writing it into the PDF using PS. | |
// Read more about PS here : https://en.wikipedia.org/wiki/PostScript |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment