我正在使用 wkhtmltopdf 从单个 HTML 文件生成 PDF,使用 page-break-before: always 将其格式化为单独的页面。例如:
<div class="cover">
Cover Page
</div>
<div class="page">
Page 1
</div>
<div class="page">
Page 2
</div>
使用 CSS:
.page {
page-break-before: always;
}
现在,我编写了 wkhtmltopdf 命令,用于在 letter 大小的页面上以纵向打印 PDF。我需要其中一个页面为横向,其余页面为纵向(以便在屏幕上查看 PDF 时,所有内容都将正确定向)。
有没有办法在单个 PDF 中混合方向?
如果这不可能,是否可以使用 wkhtmltopdf 合并多个 PDF? (我看到了不同 pdfmerge 软件的其他建议。)如有必要,我可以将我的 HTML 源文件拆分为每个页面的多个文件。
最佳答案
如果将来有人正在寻找这个答案,我会用我的解决方案来完成这个。由于缺乏答案,我想确实没有办法使用 wkhtmltopdf 创建具有多个页面方向的 PDF。
我实现的第一个解决方案是使用一个 HTML 文件创建单个 PDF 并使用以下 CSS 旋转横向页面的内容:
width: 1275px;
height: 1650px;
-webkit-transform: translateY(1650px) rotate(270deg); /* Chrome, Safari 3.1+ */
-moz-transform: translateY(1650px) rotate(270deg); /* Firefox 3.5+ */
-o-transform: translateY(1650px) rotate(270deg); /* Opera 10.5-12.0 */
-ms-transform: translateY(1650px) rotate(270deg); /* IE 9 */
transform: translateY(1650px) rotate(270deg); /* IE 10+, Firefox 16.0+, Opera 12.1+ */
filter: progid:DXImageTransform.Microsoft.Matrix(M11=6.123031769111886e-17, M12=1, M21=-1, M22=6.123031769111886e-17, SizingMethod='auto expand'); /* IE 6-7 */
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=6.123031769111886e-17, M12=1, M21=-1, M22=6.123031769111886e-17, SizingMethod='auto expand')"; /* IE 8 */
-webkit-transform-origin: 0% 0%;
-moz-transform-origin: 0% 0%;
-o-transform-origin: 0% 0%;
-ms-transform-origin: 0% 0%;
transform-origin: 0% 0%;
(要编写类似的兼容 CSS3 转换,请访问这个很棒的网站来计算所有 IE 矩阵值:http://www.useragentman.com/IETransformsTranslator/)
如果您的用户只在 PDF 生成后打印它,这将是一个不错的解决方案。由于我的用户需要在屏幕上查看 PDF,因此他们必须使用 PDF 查看软件旋转页面是不切实际的。
因此,我的第二个解决方案是将每个页面创建为独立于单个 HTML 文件的单独 PDF,然后我使用 Ghostscript将它们合并到一个文件中。这工作得很好,但只是增加了一些额外的处理时间来创建所有文件并合并它们。就我而言,PDF 不会经常下载,而且页数很少,因此额外的时间不会造成太大的负担。
关于php - 在 wkhtmltopdf 中混合页面方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983785/
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie
我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.
我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案
据我们所知,Jekyll默认分页仅支持index.html,我想创建blog.html并在那里包含分页。有什么解决办法吗? 最佳答案 如果您创建一个名为/blog的目录并在其中放置一个index.html文件,那么您可以向_config.yml表示paginate_path:"blog/page:num"。不是使用根文件夹中的默认index.html作为分页器模板,而是使用/blog/index.html。分页器将根据需要生成类似/blog/page2/和/blog/page3/的页面。这将使您到达yourwebsite.com/b
所以我只是对此感到好奇:DataMapper为其模型使用混合classPostincludeDataMapper::Resource虽然active-record使用继承classPost有谁知道为什么DataMapper选择这样做(或者为什么AR选择不这样做)? 最佳答案 它允许您从另一个不是DM类的类继承。它还允许动态地将DM功能添加到类中。这是我正在处理的模块中的类方法:defdatamapper_classklass=self.dupklass.send(:include,DataMapper::Resource)klass
我正在寻找一种简单的方法来为我在RubyonRails上的项目实现简单的“即将推出”(预启动)页面。用户应该能够留下电子邮件以便在项目启动时收到通知。有没有这样的插件\gem?或者我应该自己做... 最佳答案 LaunchingSoon是一个Rails插件。它还集成了MailChimp或Campaignmonitor. 关于ruby-on-rails-RoR&&"comingsoon"页面,我们在StackOverflow上找到一个类似的问题: https:/
我有一个使用Jekyll托管在GitHub上的静态网站。问题是,我真的不需要master分支,因为存储库唯一包含的是网站。这样我就必须gitcheckoutgh-pages,然后gitmergemaster,然后gitpushorigingh-pages。有什么简单的方法可以摆脱gh-pages分支并直接从master推送? 最佳答案 Theproblemis,Idon'treallyneedthemasterbranch,astheonlythingtherepositorycontainsisthewebsite.Isthere
我试图通过点击一个链接获得一个带有ISO-8859-1编码的页面,所以代码类似于这样:page_result=page.link_with(:text=>'link_text').click到目前为止,我得到的结果编码错误,所以我看到的字符如下:'T�tulo:'insteadof'Título:'我尝试了几种方法,包括:使用代理在第一个请求中声明编码:@page_search=@agent.get(:url=>'http://www.server.com',:headers=>{'Accept-Charset'=>'ISO-8859-1'})说明页面本身的编码page_result.