首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印ByteArrayOutputStream对象

打印ByteArrayOutputStream对象
EN

Stack Overflow用户
提问于 2018-05-09 08:55:31
回答 1查看 2.2K关注 0票数 0

我使用iText库生成了一个PDF文档,然后使用ByteArrayOutputStream将文档保存在内存中,但它没有打印任何东西。知道为什么不打印吗?您可以找到下面的代码和感谢提前。

代码语言:javascript
复制
    ByteArrayOutputStream byteArr = new ByteArrayOutputStream();
    Document document = new Document();
    PdfWriter.getInstance(document, byteArr);
    document.open();

    /*
    * Adding data and tables to the document
    */

    document.close();

    DocFlavor docType = DocFlavor.BYTE_ARRAY.AUTOSENSE;    
    byte[] byteStream = byteArr.toByteArray();// fetch content in byte array;
    // byteArr is the ByteArrayOutputStream object
    // Tried using InputStream but did not work as well.

    Doc documentToBePrinted = new SimpleDoc(byteStream, docType, null);
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();  
    PrintService services = PrintServiceLookup.lookupDefaultPrintService();               
    DocPrintJob job = services.createPrintJob();  
    try {  
    job.print(documentToBePrinted, aset);
    System.out.println("Donee");

    } 
    catch (Exception pe)
    {
     pe.printStackTrace();

    } 

    byteArr = null;


}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-12 20:30:41

您使用的打印机可能不直接支持PDF。尝试使用PDFBox打印文档。我做了一个小型maven项目来测试它,它对我很有用:

Main.java:

代码语言:javascript
复制
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;

import javax.print.*;
import java.awt.print.PrinterJob;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

class Main {
    public static void main(String[] args) throws DocumentException, IOException {
        ByteArrayOutputStream byteArr = new ByteArrayOutputStream();
        Document pdfDocument = new Document();
        PdfWriter.getInstance(pdfDocument, byteArr);
        pdfDocument.open();
        pdfDocument.add(new Paragraph("Hello World!"));
        pdfDocument.close();

        byte[] byteStream = byteArr.toByteArray();// fetch content in byte array;
        PrintService services = PrintServiceLookup.lookupDefaultPrintService();
        PrinterJob job = PrinterJob.getPrinterJob();
        PDDocument pdDocument = null;
        try {
            pdDocument = PDDocument.load(byteStream);
            job.setPageable(new PDFPageable(pdDocument));
            job.setPrintService(services);
            job.print();
            System.out.println("Done");

        } catch (Exception pe) {
            pe.printStackTrace();

        } finally {
            if (pdDocument != null) {
                pdDocument.close();
            }
        }


    }
}

pom.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>it.fortytwoapps</groupId>
    <artifactId>so-50249273</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.9</version>
        </dependency>
    </dependencies>
</project>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50249273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档