android原生打印PDF,HTML;HTML转换为PDF

本文介绍如何在Android中实现原生打印PDF文件及HTML文件。当HTML文件较大时,提供了HTML转PDF的方法以提高预览速度。需要注意的是,HTML转PDF过程中可能引发内存溢出问题,但不会影响实际打印效果。文章还提供了所需字体、库文件的下载链接和使用注意事项。
摘要由CSDN通过智能技术生成

该工具类方法实现了调用原生打印机打印PDF文件,打印HTML格式文件;打印HTML文件如果较大的话,生成预览比较慢,所以还有个方法将HTML文件转换为PDF,然后打印,此方法与原生PDF打印生成预览时间差不多,但是可能会造成内存溢出,但不影响使用。

import android.app.Activity;
import android.content.Context;
import android.print.PrintAttributes;
import android.print.PrintDocumentAdapter;
import android.print.PrintManager;
import android.util.Base64;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.FontProvider;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

public class PrintUtil {
   
    /**
     * 打印pdf文件方法
     *
     * @param activity
     * @throws IOException
     */
    public static void printpdf(Activity activity) throws IOException {
   
        PrintManager printManager = (PrintManager) activity.getSystemService(Context.PRINT_SERVICE);
        MyPrintPdfAdapter myPrintAdapter = new MyPrintPdfAdapter(readStream(1));
        PrintAttributes.Builder builder = new PrintAttributes.Builder();
        builder.setColorMode(PrintAttributes.COLOR_MODE_COLOR);
        printManager.print("test", myPrintAdapter, builder.build());
    }

    /**
     * 打印html文件方法
     *
     * @param activity
     * @throws IOException
     */
    public static void printWebView(Activity activity) throws IOException {
   
        WebView webView = new WebView(activity);
        webView.setWebViewClient(new WebViewClient() {
   
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
   
                return false;
            }

            @Override
            public void 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值