![]() |
|
Customer Support
The PDFlib extension gives a UPR description error.
The UPR error occurs when you attempt to use a "non-native" font without a UPR description file.PDFlib's "native" (built-in) fonts are:
Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique,Here's sample PHP code that shows how to generate a PDF using a "native" font (and therefore has no UPR description problems)
Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique,
Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic, Symbol, ZapfDingbats
<?php
$pdf = pdf_new();
pdf_open_file($pdf);
PDF_begin_page($pdf, 595, 842);
pdf_set_font($pdf, "Times-Roman", 30, "winansi");
# the font is spelled exactly as specified in the above list
pdf_set_value($pdf, "textrendering", 1);
pdf_show_xy($pdf, "A PDF document", 50, 750);
pdf_end_page($pdf);
PDF_close($pdf);
$data = pdf_get_buffer($pdf);
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=test.pdf");
header("Content-length: ". strlen($data));
echo $data;
?>
If you use "native" (built-in) fonts, as in the example above, you will never get a UPR error. Only when you try using a "non-native" font with no UPR description file will you get any UPR errors.
If you insist on using a "non-native" font, then you need a UPR description file to avoid getting UPR errors. You can download one from pdflib.com. A sample UPR file is in included in the distribution at that link.
To use a UPR file with your PDF generating PHP script, you put one of these inside the php script in order to tell the PDF functions where to find the UPR file:
or
(both of which say to find the file in the current directory -- you could put an absolute path instead). Either way, you must make sure that you actually put the UPR file in the place where you are telling the PHP script to find it.
If you get PDF errors about font metrics, try changing the font encoding from "winansi" to "host".
There is more information about using PDFlib with PHP at the PDFlib website here. Most of the information at that link concerns building and compiling. However, there is a link on that page to download a PDFlib 4.x (current pdflib version is 5.x but they do not offer a pre-compiled PHP shared object or free source for that version) shared object designed to work with PHP. If you download the PDFlib PHP extension from the pdflib.com website, instructions on how to install it in your account are in this other FAQ.
Be advised that the PDFlib extension for PHP obtained from the above link will print a DEMO watermark across all your pdf pages unless you buy a commercial license from PDFlib.
Remember, when using UPR files to make PDF documents that contain non-native fonts, that you will have to correctly set a path inside the UPR file (and precede that path with an extra / ). You you will also have to have all the appropriate .afm font files that you will need to obtain on your own.
There are some default .pfb files that come with RedHat in the following directories:
/usr/share/texmf/fonts/type1/
/usr/share/fonts/cmpsfont/pfb/
/usr/share/texmf/fonts/type1/adobe/utopia/
/usr/share/texmf/fonts/type1/bitstrea/charter/
Because there are commercial licensing restrictions on PDFlib, it is up to you, the user of the software, to determine whether your use falls under the "free" part of their license, or whether you need to pay PDFlib a licensing fee for using their product when you download the latest PDFlib PHP extension from them at http://www.pdflib.com.
A less complicated approach to generating PDF documents with PHP scripts would be to use one of the PDF alternative PHP classes which are freely available and do not use the proprietary pdflib at all.
User-Contributed Notes |
|||
|
|||
|
|||
|
|
|||
Related Questions:
How do I set PHP include_path?
What PHP modules are available and how do I load them?
How do I change timezone for PHP?
How do I do html form file uploads?
Can I run a PHP script on cron?
Why does a PHP function give an error that it is undefined?
Why does PHP HTTP authentication not work?
Why does my PHP script throw an Internal Server Error 500?
What version of PHP are you running and can I see a phpinfo()?
I can't upload a file larger than 8MB through a PHP script
Can you change session cookie timeout in php.ini for me?
Do you have a quick form mail script?
Can I use a PHP extension like PDFlib that I have personally purchased a license to use?
Do you offer PHP5 with MySQLi?
Where is the php_error_log?
Can I have all .html pages parsed as PHP?
What's the difference between running PHP as a cgi or as a module in safe mode?
The PHP curl module doesn't work.
My PHP session is lost whenever I go to a secure URL using the shared SSL certificate.
Do you provide PEAR?
Where can I download free PHP scripts?
How do I get different character sets within my PHP page to display correctly?
Do I need to set any 777 permissions in order for my PHP scripts to create files and directories?
Can I use Smarty Templates?
How do I execute my .php files as PHP 5?
How do I use the url_rewriter.tags setting for PHP?
What is CAPTCHA? How can I use it?
Why does flush() not flush the data to my browser?
Why does PHPLIB sessions give me a MySQL Database error?
Will my Zend Encoded files work?
The pfpro pfpro_process() function keeps giving me Error 31
Will IonCube encoded files work?
I need the virtual() function and it is not available.
Why does getallheaders() say undefined function?
Can I talk over SSL when opening an IMAP connection with the PHP imap_open() function?
How can one PHP file transparently handle all search-engine friendly URLs?
My PHP script needs a newer version of Zend Optimizer. What do I do?
How do I put PHP sessions into a database instead of the default files-based method?
Browse Categories:Getting Started, FTP, Telnet/SSH, Moving Domains, E-mail, Traffic Reports, Mailing Lists, Apache, PHP, CGI, Other Server-Side Scripting, MySQL Database, Imaging Libraries, Other Software, Billing & Terms, Control Panel, E-commerce, Pre-Sales |

