我的项目是创建一个类似Vista的应用程序。我创建了一个非常基本的界面,可以在一个可以拖动的区域放置一个可调整大小的div。我也可以通过带有designmode的弹出式iframe将文本放入此div中。然后我将其写入数据库。 然后我调用这些数据并使用Coldfusions cfdocument创建一个pdf。
问题是,在创建PDF时,字体看起来稍微厚一些,并且自动换行与html页面界面不同,这非常重要。注意:单词换行由div的高度和宽度决定。它在cfdocument进程页面上看起来很好,它在创建pdf时就关闭了。任何人对此有任何想法或可以指出一些可能有帮助的信息?
提前致谢。
代码在这里:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<cfset webRes = "96">
<cfset pxlWidth = "921">
<cfset pxlHeight = "1178">
<cfset inWidth = (pxlWidth/webres)>
<cfset inHeight = (pxlHeight/webres)>
<cfquery name="qTextData" datasource="ds">
SELECT DocID, TextID, Width, Height, PosX, PosY, FontFamily, FontColor, FontSize, TextValue
FROM TextEditor
WHERE ((DocID = #session.docid#))
</cfquery>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Create PDF</title>
</head>
<cfoutput>
<cfdocument filename="mypdf.pdf" name="mypdf" fontembed="yes" format="pdf" overwrite="yes" pageheight="#inHeight#" pagewidth="#inWidth#" pagetype="custom">
<cfdocumentsection margintop="0" marginright="0" marginbottom="0" marginleft="0">
<body align="center" marginheight="0" marginwidth="0">
<div id="pageContainer" style="background-image:url(resources/image.caspx.jpg); background-repeat:no-repeat; height:#pxlHeight#px; width:#pxlWidth#px;">
<cfloop query="qTextData">
<div id="divTextField_#TextID#" style="position:absolute; top:#PosY#px; left:#PosX#px; width:#width#px; height:#Height#px; color:#FontColor#; font-family:#FontFamily#; font-size:#FontSize#pt; vertical-align:text-top; line-spacing:normal;">
#TextValue#
</div>
</cfloop>
</div>
</body>
</cfdocumentsection>
</cfdocument>
</cfoutput>
<script type="text/javascript">
window.open('http://linktopdf/mypdf.pdf','newWin','resizable=1');
</script>
</html>
答案 0 :(得分:0)
我试着把它作为评论,但是我开始长时间啰嗦,它太大了,所以它可能不是“答案”,但如果没有别的,我肯定它会有一些有用的信息。
您查看的是什么百分比并尝试将其打印出来?
我注意到事情可能看起来不平常或比平时更大,因为它们只是在acrobat(或您选择的PDF查看器)中变得怪异。尝试调整缩放并查看显示是否更改,同时查看其是否正确打印。
我也发现像詹姆斯建议的那样,我需要特殊的css才能用于文档。 CSS可能与使div的一侧具有1px更大的边界以使其看起来正确一样奇怪。另请注意,虽然您在屏幕上查看PDF,但它仍然是"print"
媒体。 PT意味着1/72英寸,当您从19英寸显示器(由像素分辨率进一步影响)缩放到8.5“x 11”的纸张时,它看起来会更大,而这种纸张并不真正知道像素是什么是。您可能需要尝试动态调整字体大小,例如:font-size: #fontSize-2#pt;
。将-2
更改为可能适用于您的输出的任何内容。您也可以尝试使用缩放的单位,例如em
。
cfdocument docs列出所有支持的CSS以及识别某些限制。似乎不支持line-spacing:normal;
。还要确保所有CSS都包含在内联或样式标记中,但要避免使用链接的.css文件。我看到你正在这样做,只是添加提示和指针。
另外,根据文档:
ColdFusion不会返回HTML和CFML
<cfdocument></cfdocument>
对。
这意味着ColdFusion正在处理您的cfset
语句,但未返回
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Create PDF</title>
</head>
和
<script type="text/javascript">
window.open('http://linktopdf/mypdf.pdf','newWin','resizable=1');
</script>
</html>
因此,iText可能无法像您期望的那样呈现它,因为