当前位置: 首页 > 面试题库 >

jsPDF无法使用任何样式

丁灿
2023-03-14
问题内容

我是使用jsPDF的新手,但是为了我的生命,我无法获得任何CSS来应用此东西!我尝试了内联,内部和外部都无济于事!我在另一篇SO文章中读到,因为从技术上讲是将内容打印到文件中,所以我需要打印样式表,但这也不起作用。

我有一个非常基本的页面,我只想尝试使用任何CSS:JS:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="jspdf.js"></script>
<script type="text/javascript" src="./libs/FileSaver.js/FileSaver.js"></script>
<script type="text/javascript" src="./libs/Blob.js/BlobBuilder.js"></script>
<script type="text/javascript" src="jspdf.plugin.standard_fonts_metrics.js"></script> 
<script type="text/javascript" src="jspdf.plugin.split_text_to_size.js"></script>               
<script type="text/javascript" src="jspdf.plugin.from_html.js"></script>
<script>
    $(document).ready(function(){
        $('#dl').click(function(){
        var specialElementHandlers = {
            '#editor': function(element, renderer){
                return true;
            }
        };
        var doc = new jsPDF('landscape');
        doc.fromHTML($('body').get(0), 15, 15, {'width': 170,   'elementHandlers': specialElementHandlers});
        doc.output('save');
        });
    });
</script>

HTML:

<body>
    <div id="dl">Download Maybe?</div>
    <div id="testcase">
        <h1>  
            We support special element handlers. Register them with jQuery-style 
        </h1>
    </div>
</body>

最后是外部样式表:

h1{
    color: red;
}
div{
    color: red;
}

我确定所有内容都正确包含在内,并且没有错误,已经检查了所有内容。是否需要调用一些其他功能才能使CSS正常工作?请让我知道!非常感谢!您可能还有其他提示!

编辑:这是确切的网页:

<html>
    <head>
        <link rel="stylesheet" href="print.css" type="text/css" media="print"/>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script type="text/javascript" src="jspdf.js"></script>
        <script type="text/javascript" src="./libs/FileSaver.js/FileSaver.js"></script>
        <script type="text/javascript" src="./libs/Blob.js/BlobBuilder.js"></script>
        <script type="text/javascript" src="jspdf.plugin.standard_fonts_metrics.js"></script>
        <script type="text/javascript" src="jspdf.plugin.split_text_to_size.js"></script>               
        <script type="text/javascript" src="jspdf.plugin.from_html.js"></script>
        <script>
            $(document).ready(function(){
                $('#dl').click(function(){
                var specialElementHandlers = {
                    '#editor': function(element, renderer){
                        return true;
                    }
                };
                var doc = new jsPDF('landscape');
                doc.fromHTML($('body').get(0), 15, 15, {'width': 170,   'elementHandlers': specialElementHandlers});
                doc.output('save');
                });
            });
        </script>
    </head>
    <body>
        <div id="dl">Download Maybe?</div>
        <div id="testcase">
            <h1>  
                We support special element handlers. Register them with jQuery-style 
            </h1>
        </div>
    </body>
</html>

问题答案:

我认为问题是您使用 media="print"而不是 media="screen"。尝试制作两个单独的文件,一个用于打印,一个用于屏幕:

<link rel="stylesheet" href="print.css" type="text/css" media="print"/>
<link rel="stylesheet" href="screen.css" type="text/css" media="screen"/>

屏幕一将包含在浏览器中看到的页面样式。打印页面时将包含样式,或者在这种情况下将其另存为PDF。

编辑

我检查了jsPDF网站,但我认为它们不支持CSS。您可以执行以下操作来创建具有不同文本颜色的文档:

doc.setFontSize(22);
doc.setTextColor(255, 0, 0);
doc.text(20, 20, 'This is a title');

doc.setFontSize(16);
doc.setTextColor(0, 255, 0);
doc.text(20, 30, 'This is some normal sized text underneath.');

将此代码直接放在var doc = new jsPDF('landscape');脚本中。



 类似资料:
  • 问题内容: 我想在我的React应用程序中使用默认的Bootstrap组件,所以我正在使用React-bootstrap NPM- package。但是我一开始就坚持:尽管我只是从官方文档中复制非常简单的示例,但我不能使用任何默认组件。每次我使用Bootstrap样式的组件时,都会得到基本的组件样式。例如,下面的代码呈现一个没有样式的样式,而不是Bootstrap 样式。 为什么会有这样的问题?也

  • 问题内容: 我想将一些div转换为PDF,并且尝试了jsPDF库,但没有成功。看来我不明白我需要导入什么才能使库正常工作。我已经看过这些示例,但仍然无法弄清楚。我尝试了以下方法: 在jQuery之后: 用于测试目的,但我收到: 身体的第一个div 在哪里。 问题答案: 您可以按如下方式使用html中的pdf, 步骤1:将以下脚本添加到标题 步骤2:添加HTML脚本以执行jsPDF代码 对此进行自定

  • jsPDF 是一个使用Javascript语言生成PDF的开源库。你可以在Firefox插件,服务端脚本或是浏览器脚本中使用它。 客户端Safari 和 iPhone Safari 支持得最好,其次是Opera和Windows下的Firefox 3等。IE暂不支持。 示例代码: var doc = new jsPDF();doc.text(20, 20, 'Hello world.');doc.s

  • 演示 嗨,我在应用程序中使用Angular8。在这里,我使用jspdf和html2canvas将html转换为pdf。但我只能打印半页,不能打印整页。谁能帮我找出哪里出了问题。 我附上了一个演示,当我在下拉列表中选择任何值时,会打开一个div,所以我需要获得div部分中所有的完整值。请帮忙。我得到的输出是这样的,但它不包含预期的完整值: 输出 如果有任何其他的方法,输出作为我的要求也被接受。 TS

  • 本文向大家介绍使用jspdf生成pdf报表,包括了使用jspdf生成pdf报表的使用技巧和注意事项,需要的朋友参考一下 由于前台html已经动态生成报表,而且,前台有一个功能,一个date range组件,当你拖动的时候,报表会在不提交到后台的情况下动态变化。 因此需要用到js生成生报表: 用到的组件: 前台动态生成的chart现在一般是用的html5的canvas或者是svg,很不幸运,我遇到的

  • 我想用Java发送一封邮件,但使用我在http://www.tutorialspoint.com/Java/java_sending_email.htm找到的这篇泰文教程是行不通的。 这里是我的主要方法 我有以下错误: javax.mail.MessagingException:无法连接到SMTP主机:localhost,端口:25;嵌套异常为:java.net.connectException: