Mysterious Text Problem
"glanch2004" <[email protected]> Thu, 30 Aug 2012 22:36:47 -0000
| Newsgroups | gmane.comp.lang.perl.modules.pdfapi2 |
|---|---|
| Message-ID | <[email protected]> |
--19xxxt03ZpeozoJwoHIjFJ9nkbVZ7EN4cXKQk6Q
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
I'm using API2 to add a little text to the top of the first page of a PDF t=
hat a user uploads in my application.
Recently a PDF (let's call it File A) was uploaded which for some reason, c=
aused the text to be printed in the middle of the page and at a microscopic=
, tiny font size, instead of at the top left corner, in a normal 10-point f=
ont size.
I tried to determine what made this PDF different. The file size, page dime=
nsions and DPI didn't seem to matter, as I tested other PDFs with similar c=
haracteristics.
I then realized that this PDF was "PDF Version 1.3" in the file's propertie=
s. I was certain this was the problem until I found another 1.3 PDF (let's =
call it File B) and tested it.. and it worked fine.*
*It worked fine only when I commented out the code in /PDF/API2/Basic/PDF/F=
ile.pm, lines 289-290, which returned an error when I submitted File B - "[=
filename] is not a PDF file version 1.x". But.. why didn't I get this error=
when uploading File A, which is also PDF Version 1.3? I also am not very g=
ood with regexes, so I don't really understand how API2 is determining whic=
h version PDF to accept/reject on line 289.
This is getting complicated. My question is, has anyone experienced printin=
g text on a PDF that ends up in a different size and place than you expecte=
d it? And if so, why? What did you do to fix it? Did it have anything to do=
with the version of the PDF file?
Here is my code:
use PDF::API2;
my $file =3D shift; #file is passed as a param to this sub
my $pdf =3D PDF::API2->open($file);
my $page =3D $pdf->openpage(1); #open the first page
my $font =3D $pdf->corefont('Helvetica-Bold');
my $text =3D $page->text();
$text->font($font, 10);
$text->translate(15, 770); #top left corner
$text->text('just some sample text');
$pdf->saveas($file);
Of course maybe there are some problems with this code, feel free to make s=
uggestions. I couldn't find many examples so this is basically the result o=
f some trial and error, and once I got it working, I left it alone.
--19xxxt03ZpeozoJwoHIjFJ9nkbVZ7EN4cXKQk6Q
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<body style="background-color: #fff;">
<span style="display:none"> </span>
<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
<div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->
<div id="ygrp-text" >
<p>I'm using API2 to add a little text to the top of the first page of a PDF that a user uploads in my application.<br>
<br>
Recently a PDF (let's call it File A) was uploaded which for some reason, caused the text to be printed in the middle of the page and at a microscopic, tiny font size, instead of at the top left corner, in a normal 10-point font size.<br>
<br>
I tried to determine what made this PDF different. The file size, page dimensions and DPI didn't seem to matter, as I tested other PDFs with similar characteristics.<br>
<br>
I then realized that this PDF was "PDF Version 1.3" in the file's properties. I was certain this was the problem until I found another 1.3 PDF (let's call it File B) and tested it.. and it worked fine.*<br>
<br>
*It worked fine only when I commented out the code in /PDF/API2/Basic/PDF/File.pm, lines 289-290, which returned an error when I submitted File B - "[filename] is not a PDF file version 1.x". But.. why didn't I get this error when uploading File A, which is also PDF Version 1.3? I also am not very good with regexes, so I don't really understand how API2 is determining which version PDF to accept/reject on line 289.<br>
<br>
This is getting complicated. My question is, has anyone experienced printing text on a PDF that ends up in a different size and place than you expected it? And if so, why? What did you do to fix it? Did it have anything to do with the version of the PDF file?<br>
<br>
Here is my code:<br>
<br>
use PDF::API2;<br>
my $file = shift; #file is passed as a param to this sub<br>
my $pdf = PDF::API2->open($file);<br>
my $page = $pdf->openpage(1); #open the first page<br>
my $font = $pdf->corefont('Helvetica-Bold');<br>
my $text = $page->text();<br>
$text->font($font, 10);<br>
$text->translate(15, 770); #top left corner<br>
$text->text('just some sample text');<br>
$pdf->saveas($file);<br>
<br>
Of course maybe there are some problems with this code, feel free to make suggestions. I couldn't find many examples so this is basically the result of some trial and error, and once I got it working, I left it alone.<br>
<br>
</p>
</div>
<!--~-|**|PrettyHtmlStart|**|-~-->
<div style="color: #fff; height: 0;">__._,_.___</div>
<div id="ygrp-actbar" style="clear: both; margin-bottom: 10px; white-space: nowrap; color: #666; padding-top: 15px;">
<div>
<a href="mailto:[email protected]?subject=Re%3A%20Mysterious%20Text%20Problem" style="margin-right: 0; padding-right: 0;">
Reply to <span style="font-weight: 700;">sender</span></a> |
<a href="mailto:[email protected]?subject=Re%3A%20Mysterious%20Text%20Problem">
Reply to <span style="font-weight: 700;">group</span></a> |
<a href="http://groups.yahoo.com/group/perl-text-pdf-modules/post;_ylc=X3oDMTJwMjg5Z2E1BF9TAzk3MzU5NzE0BGdycElkAzIwMTczODIEZ3Jwc3BJZAMxNzA1MDA3NzA5BG1zZ0lkAzM3NTIEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMzQ2Mzc1NDM3?act=reply&messageNum=3752">Reply <span style="font-weight: 700;">via web post</span></a> |
<a href="http://groups.yahoo.com/group/perl-text-pdf-modules/post;_ylc=X3oDMTJlNG5xZ2doBF9TAzk3MzU5NzE0BGdycElkAzIwMTczODIEZ3Jwc3BJZAMxNzA1MDA3NzA5BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTM0NjM3NTQzNw--" style="font-weight: 700;">Start a New Topic</a>
</div>
<a href="http://groups.yahoo.com/group/perl-text-pdf-modules/message/3752;_ylc=X3oDMTM0b3QxdHByBF9TAzk3MzU5NzE0BGdycElkAzIwMTczODIEZ3Jwc3BJZAMxNzA1MDA3NzA5BG1zZ0lkAzM3NTIEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMzQ2Mzc1NDM3BHRwY0lkAzM3NTI-">Messages in this topic</a>
(<span style="font-weight: 700;">1</span>)
</div>
<!------- Start Nav Bar ------>
<!-- |**|begin egp html banner|**| -->
<!-- |**|end egp html banner|**| -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #e0ecee; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
<span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; ">Recent Activity:</span>
<ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
<li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;">
<span class="cat"><a href="http://groups.yahoo.com/group/perl-text-pdf-modules/members;_ylc=X3oDMTJmYTdrazRmBF9TAzk3MzU5NzE0BGdycElkAzIwMTczODIEZ3Jwc3BJZAMxNzA1MDA3NzA5BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzEzNDYzNzU0Mzc-?o=6" style="text-decoration: none;">New Members</a></span>
<span class="ct" style="color: #ff7900;">1</span>
</li>
</ul>
<div style="clear: both; padding-top: 2px; color: #1e66ae;">
<a href="http://groups.yahoo.com/group/perl-text-pdf-modules;_ylc=X3oDMTJlYzNiZzU1BF9TAzk3MzU5NzE0BGdycElkAzIwMTczODIEZ3Jwc3BJZAMxNzA1MDA3NzA5BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTM0NjM3NTQzNw--" style="text-decoration: none;">Visit Your Group</a>
</div>
</div>
<div id="ygrp-grfd" style="font-family: Verdana; font-size: 12px; padding: 15px 0;">
<!-- |**|begin egp html banner|**| -->
To unsubscribe from this group, send an email to:<BR>
perl-text-pdf-modules-unsubscribe-Km8ibD4bFueDmjp1MlKEbA@public.gmane.org<BR>
<BR>
<!-- |**|end egp html banner|**| -->
</div>
<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
<a href="http://groups.yahoo.com/;_ylc=X3oDMTJkNTRrbGFyBF9TAzk3MzU5NzE0BGdycElkAzIwMTczODIEZ3Jwc3BJZAMxNzA1MDA3NzA5BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzQ2Mzc1NDM3" style="float: left;"><img src="http://l.yimg.com/a/i/us/yg/logo/us.gif" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
<div style="color: #747575; float: right;">Switch to: <a href="mailto:perl-text-pdf-modules-traditional-hHKSG33TihhbjbujkaE4pw@public.gmane.org?subject=Change Delivery Format: Traditional" style="text-decoration: none;">Text-Only</a>, <a href="mailto:perl-text-pdf-modules-digest-hHKSG33TihhbjbujkaE4pw@public.gmane.org?subject=Email Delivery: Digest" class="margin-rt" style="text-decoration: none;">Daily Digest</a> • <a href="mailto:perl-text-pdf-modules-unsubscribe-hHKSG33TihhbjbujkaE4pw@public.gmane.org?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> • <a href="http://docs.yahoo.com/info/terms/" style="text-decoration: none;">Terms of Use</a></div>
</div>
<!-- |**|end egp html banner|**| -->
</div> <!-- ygrp-msg -->
<!-- Sponsor -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">
<!-- Start Recommendations -->
<div id="ygrp-reco">
</div>
<!-- End Recommendations -->
</div> <!-- |**|end egp html banner|**| -->
<div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>
<img src="http://geo.yahoo.com/serv?s=97359714/grpId=2017382/grpspId=1705007709/msgId=3752/stime=1346375437/nc1=3848641/nc2=5758219/nc3=5741391" width="1" height="1"> <br>
<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</body>
<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
<style type="text/css">
<!--
#ygrp-mkp {
border: 1px solid #d8d8d8;
font-family: Arial;
margin: 10px 0;
padding: 0 10px;
}
#ygrp-mkp hr {
border: 1px solid #d8d8d8;
}
#ygrp-mkp #hd {
color: #628c2a;
font-size: 85%;
font-weight: 700;
line-height: 122%;
margin: 10px 0;
}
#ygrp-mkp #ads {
margin-bottom: 10px;
}
#ygrp-mkp .ad {
padding: 0 0;
}
#ygrp-mkp .ad p {
margin: 0;
}
#ygrp-mkp .ad a {
color: #0000ff;
text-decoration: none;
}
#ygrp-sponsor #ygrp-lc {
font-family: Arial;
}
#ygrp-sponsor #ygrp-lc #hd {
margin: 10px 0px;
font-weight: 700;
font-size: 78%;
line-height: 122%;
}
#ygrp-sponsor #ygrp-lc .ad {
margin-bottom: 10px;
padding: 0 0;
}
a {
color: #1e66ae;
}
#actions {
font-family: Verdana;
font-size: 11px;
padding: 10px 0;
}
#activity {
background-color: #e0ecee;
float: left;
font-family: Verdana;
font-size: 10px;
padding: 10px;
}
#activity span {
font-weight: 700;
}
#activity span:first-child {
text-transform: uppercase;
}
#activity span a {
color: #5085b6;
text-decoration: none;
}
#activity span span {
color: #ff7900;
}
#activity span .underline {
text-decoration: underline;
}
.attach {
clear: both;
display: table;
font-family: Arial;
font-size: 12px;
padding: 10px 0;
width: 400px;
}
.attach div a {
text-decoration: none;
}
.attach img {
border: none;
padding-right: 5px;
}
.attach label {
display: block;
margin-bottom: 5px;
}
.attach label a {
text-decoration: none;
}
blockquote {
margin: 0 0 0 4px;
}
.bold {
font-family: Arial;
font-size: 13px;
font-weight: 700;
}
.bold a {
text-decoration: none;
}
dd.last p a {
font-family: Verdana;
font-weight: 700;
}
dd.last p span {
margin-right: 10px;
font-family: Verdana;
font-weight: 700;
}
dd.last p span.yshortcuts {
margin-right: 0;
}
div.attach-table div div a {
text-decoration: none;
}
div.attach-table {
width: 400px;
}
div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
text-decoration: none;
}
div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
text-decoration: none;
}
div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
font-family: Verdana;
font-size: 10px;
font-weight: normal;
}
.green {
color: #628c2a;
}
.MsoNormal {
margin: 0 0 0 0;
}
o {
font-size: 0;
}
#photos div {
float: left;
width: 72px;
}
#photos div div {
border: 1px solid #666666;
height: 62px;
overflow: hidden;
width: 62px;
}
#photos div label {
color: #666666;
font-size: 10px;
overflow: hidden;
text-align: center;
white-space: nowrap;
width: 64px;
}
#reco-category {
font-size: 77%;
}
#reco-desc {
font-size: 77%;
}
.replbq {
margin: 4px;
}
#ygrp-actbar div a:first-child {
/* border-right: 0px solid #000;*/
margin-right: 2px;
padding-right: 5px;
}
#ygrp-mlmsg {
font-size: 13px;
font-family: Arial, helvetica,clean, sans-serif;
*font-size: small;
*font: x-small;
}
#ygrp-mlmsg table {
font-size: inherit;
font: 100%;
}
#ygrp-mlmsg select, input, textarea {
font: 99% Arial, Helvetica, clean, sans-serif;
}
#ygrp-mlmsg pre, code {
font:115% monospace;
*font-size:100%;
}
#ygrp-mlmsg * {
line-height: 1.22em;
}
#ygrp-mlmsg #logo {
padding-bottom: 10px;
}
#ygrp-mlmsg a {
color: #1E66AE;
}
#ygrp-msg p a {
font-family: Verdana;
}
#ygrp-msg p#attach-count span {
color: #1E66AE;
font-weight: 700;
}
#ygrp-reco #reco-head {
color: #ff7900;
font-weight: 700;
}
#ygrp-reco {
margin-bottom: 20px;
padding: 0px;
}
#ygrp-sponsor #ov li a {
font-size: 130%;
text-decoration: none;
}
#ygrp-sponsor #ov li {
font-size: 77%;
list-style-type: square;
padding: 6px 0;
}
#ygrp-sponsor #ov ul {
margin: 0;
padding: 0 0 0 8px;
}
#ygrp-text {
font-family: Georgia;
}
#ygrp-text p {
margin: 0 0 1em 0;
}
#ygrp-text tt {
font-size: 120%;
}
#ygrp-vital ul li:last-child {
border-right: none !important;
}
-->
</style>
</head>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->
--19xxxt03ZpeozoJwoHIjFJ9nkbVZ7EN4cXKQk6Q--