如何打印用iText创建的PDF?

时间:2011-01-05 22:04:15

标签: java printing pdf-generation itext

您好我已经创建了一个包含图像的PDF文件,我想在创建后打印我的PDF文件。如果我在内存中使用PDF而不是拥有文件,然后将其发送到打印机......更好吗?

我正在使用iText。检查我的代码:

    import com.lowagie.text.Document;
    import com.lowagie.text.DocumentException;
    import com.lowagie.text.Image;
    import com.lowagie.text.PageSize;
    import com.lowagie.text.Rectangle;
    import com.lowagie.text.pdf.PdfContentByte;
    import com.lowagie.text.pdf.PdfPrinterGraphics2D;
    import com.lowagie.text.pdf.PdfTemplate;
    import com.lowagie.text.pdf.PdfWriter;

    import javax.imageio.ImageIO;

    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;


        private boolean exportToPdfThroughPNG(String fileName, float width, float height) throws DocumentException, IOException {
        logger.debug("[boolean exportToPdfQuick() throws IOException, DocumentException]");

        BufferedImage pngFile = createPngFile();

        Document document = new Document();
        document.setPageSize(new Rectangle(width, height));
        PdfWriter.getInstance(document, new FileOutputStream(fileName));
        document.open();
        Image image = Image.getInstance(Toolkit.getDefaultToolkit().createImage(pngFile.getSource()), Color.WHITE);
        document.add(image);
        // If some day anyone wants to put text in the pdf. @Eduardo
        // document.add(new Paragraph("title of the process"));
        document.close();

        return true;
    }

提前致谢!

1 个答案:

答案 0 :(得分:1)

您始终可以使用ByteArrayOutputStream而不是FileOutputStream。

拥有PDF字节之后,它是一个正常的“你如何在Java中打印”的问题。许多打印机(或者至少是他们的驱动程序)最近会直接使用PDF,所以在这一点上可以说你已经完成了。

PS:一旦我标记了您的问题“Java”,它就会使用“import”作为关键字为您的代码块着色等等。将来要记住的事情。