如何在android中将html和css转换为pdf文件?

如何在android中将html和css转换为pdf文件?,android,html,css,pdf-generation,itext,Android,Html,Css,Pdf Generation,Itext,我需要在Android应用程序中将具有CSS样式的复杂HTML文件转换为PDF文件。我尝试使用Android的IText库,但它无法解释CSS样式和一些标记。我已经搜索了很多,没有找到一个符合我要求的图书馆 我的函数创建PDF public static void createPdf(final String pdfName, final String html) { try { String outpath = Environment.getExternalStora

我需要在Android应用程序中将具有
CSS
样式的复杂
HTML
文件转换为
PDF
文件。我尝试使用Android的
IText
库,但它无法解释
CSS
样式和一些标记。我已经搜索了很多,没有找到一个符合我要求的图书馆

我的函数创建PDF

public static void createPdf(final String pdfName, final String html) {

    try {
        String outpath = Environment.getExternalStorageDirectory() + pdfName;
        OutputStream file = new FileOutputStream(new File(outpath));

        Document document = new Document();
        PdfWriter.getInstance(document, file);
        document.open();
        HTMLWorker htmlWorker = new HTMLWorker(document);
        htmlWorker.parse(new StringReader(html));
        document.close();
        file.close();

    } catch (IOException e) {
        Log.d("error", "testPdf: " + e);
    } catch (DocumentException e) {
        Log.d("error", "testPdf: " + e);
    }


}
示例HTML代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <style media="all">
      body,html {
        margin:0;
        padding: 0;
      }
      .container {
        position: relative;
        width:1020px;
        margin:20px auto 0 auto;
      }
      .box {
        position: relative;
        padding: 5px 10px;
        background: #E4DFEC;
        border:2px solid #000;
      }
      .box_panel {
        margin:10px 0;
      }
      .box span {
        width: 100px;
        display: inline-block;
        font:bold 11px/11px 'Calibri',sans-serif;
        color:#000;
      }
      .labels {
        margin: 5px 0;
        margin-right:40px;
        display: inline-block;
        font-size: 0;
      }
      .input {
        border:1px solid #000;
        background: #fff;
        padding:4px 3px;
        font:11px/20px 'Calibri',sans-serif;
      }

    </style>
  </head>
  <body>
    <div class="container">

      <div class="box_panel">

        <div class="box">
          <div class="labels"><span>Test1 </span><span class="input w200">%test%</span></div>
          <div class="labels"><span>Test2 </span><span class="input w200">%test%</span></div>
          <div class="labels"><span>Test3: </span><span class="input w100">%test%</span></div>
        </div>
      </div>

    </div>
  </body>
</html>

正文,html{
保证金:0;
填充:0;
}
.集装箱{
位置:相对位置;
宽度:1020px;
保证金:20px自动0自动;
}
.盒子{
位置:相对位置;
填充物:5px10px;
背景:#E4DFEC;
边框:2倍实心#000;
}
.box_面板{
利润率:10px0;
}
.箱跨{
宽度:100px;
显示:内联块;
字体:粗体11px/11px“Calibri”,无衬线;
颜色:#000;
}
.标签{
保证金:5px0;
右边距:40px;
显示:内联块;
字号:0;
}
.输入{
边框:1px实心#000;
背景:#fff;
填充物:4px 3px;
字体:11px/20px“Calibri”,无衬线;
}
测试1%测试%
测试2%测试%
测试3:%test%

您的代码有什么问题?结果如何?你有问题吗?如何将html转换为pdf文件你还没有回答我的任何问题。你不是认真的。你在代码中使用了
HTMLWorker
。请不要。它被弃用了,而且它只是非常基本的,更像是概念的证明。您应该改用
XMLWorker