Css 如何提供用于呈现PDF的样式表?
继上一个问题之后,我使用Css 如何提供用于呈现PDF的样式表?,css,coldfusion,pdf-generation,coldfusion-10,Css,Coldfusion,Pdf Generation,Coldfusion 10,继上一个问题之后,我使用标记成功地将文档的“屏幕”版本(HTML)转换为PDF格式。由于明显的原因(例如不同的标题样式),我需要PDF的样式与屏幕版本的样式不同 我知道您可以在CSS中使用媒体查询,以便为打印、屏幕、电视等应用不同的样式。但是如何为标记提供不同的CSS样式集,以便它正确呈现 我最初的解决方案是将一个类应用于名为.pdf的标记的div,然后在我的主CSS文件中基于该类为内容编写新样式。例如,样式应该是.pdf h1{font size:20px;}。CFML将如下所示: <c
标记成功地将文档的“屏幕”版本(HTML)转换为PDF格式。由于明显的原因(例如不同的标题样式),我需要PDF的样式与屏幕版本的样式不同
我知道您可以在CSS中使用媒体查询,以便为打印、屏幕、电视等应用不同的样式。但是如何为
标记提供不同的CSS样式集,以便它正确呈现
我最初的解决方案是将一个类应用于名为.pdf
的
标记的div
,然后在我的主CSS文件中基于该类为内容编写新样式。例如,样式应该是.pdf h1{font size:20px;}
。CFML将如下所示:
<cfdocument type="pdf">
<link href="/css/mainStyleSheet.css" rel="stylesheet" type="text/css">
<div class="pdf">
<h1>Document Title</h1>
... {document body here} ...
</div>
</cfdocument>
文件标题
... {此处的文档正文}。。。
有更好的方法吗?是否只为PDF呈现传递不同的样式表?也许可以通过媒体查询完成吗?如何通过查询字符串中的参数生成PDF?类似于
index.cfm?page=foo&format=pdf
?如果没有,您可以轻松地添加这样的参数,然后在CFM中:
<link href="/css/mainStyleSheet.css" rel="stylesheet" type="text/css">
<cfif structKeyExists(url, "format") AND url.format EQ "pdf">
<link href="/css/pdfStyleSheet.css" rel="stylesheet" type="text/css">
</cfif>
pdfStyleSheet.css
将只包含PDF的css覆盖。“有更好的方法吗?”是的:不使用cfdocument。通过正确的doctype和导入样式表,您将前进几步,但很快您就会回来询问为什么某些构造不起作用或出现随机空间或其他一些怪癖。但是使用ColdFusion的这个特性非常方便。我真的很想避免使用尽可能少的插件和外部依赖。方便吗?对值得付出努力吗?没有。但是,由于您似乎决心走这条艰难的道路,请尝试使用文件系统路径添加样式表,如c:\my\path\to\the\css\file.css
,另外,可能最好为PDF使用单独的css文件。或者使用一些外部库,比如,在发现其他可行的方法之前,浪费数周的时间试图让某些东西起作用是非常不方便和令人沮丧的。请听我们这些以前做过这项工作的人的建议,因为我们不会浪费时间回答那些仅仅因为对使用工作软件的非神秘厌恶而存在的问题。我使用了一个表单变量,但这个例子对我来说很好。非常感谢。