广鹏 2016-10-20 09:28 采纳率: 0%
浏览 2348

java PDF加水印报如下错误

java.io.EOFException
at com.lowagie.text.pdf.RandomAccessFileOrArray.readFully(Unknown Source)
at com.lowagie.text.pdf.RandomAccessFileOrArray.readFully(Unknown Source)
at com.lowagie.text.pdf.PdfReader.getStreamBytesRaw(Unknown Source)
at com.lowagie.text.pdf.PdfReader.getStreamBytesRaw(Unknown Source)
at com.lowagie.text.pdf.PRStream.toPdf(Unknown Source)
at com.lowagie.text.pdf.PdfIndirectObject.writeTo(Unknown Source)
at com.lowagie.text.pdf.PdfWriter$PdfBody.add(Unknown Source)
at com.lowagie.text.pdf.PdfWriter.addToBody(Unknown Source)
at com.lowagie.text.pdf.PdfStamperImp.close(Unknown Source)
at com.lowagie.text.pdf.PdfStamper.close(Unknown Source)
at com.fileServer.utility.WaterPrintUtil.setWatermark(WaterPrintUtil.java:77)
at com.fileServer.transaction.Transaction.download(Transaction.java:104)
at com.fileServer.servlet.FileServlet.doPost(FileServlet.java:40)
at com.fileServer.servlet.FileServlet.doGet(FileServlet.java:65)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

java代码

public static void main(String[] args) throws DocumentException,
        IOException {
    // 要输出的pdf文件
    BufferedOutputStream bos = new BufferedOutputStream(
            new FileOutputStream(new File("E:/topdf源文件.pdf")));
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    // 将pdf文件先加水印然后输出
    setWatermark(bos, "E:/pdf源文件.pdf", format.format(cal.getTime())
            + "  下载使用人:" + "测试user", 16);
}

public static void setWatermark(BufferedOutputStream bos,String input,
        String waterMarkName, int permission) throws DocumentException,
        IOException {

    PdfReader reader = new PdfReader(input);
    PdfStamper stamper = new PdfStamper(reader, bos);
    int total = reader.getNumberOfPages() + 1;
    PdfContentByte content;
    BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
            BaseFont.EMBEDDED);
    PdfGState gs = new PdfGState();
    for (int i = 1; i < total; i++) {
        content = stamper.getOverContent(i);// 在内容上方加水印
        // content = stamper.getUnderContent(i);//在内容下方加水印
        gs.setFillOpacity(0.2f);
        // content.setGState(gs);
        content.beginText();
        content.setColorFill(Color.LIGHT_GRAY);
        content.setFontAndSize(base, 50);
        content.setTextMatrix(70, 200);
        content.showTextAligned(Element.ALIGN_CENTER, "公司内部文件,请注意保密!", 300,
                350, 55);
        content.setColorFill(Color.BLACK);
        content.setFontAndSize(base, 8);
        content.showTextAligned(Element.ALIGN_CENTER, "下载时间:"
                + waterMarkName + "", 300, 10, 0);
        content.endText();

    }
    stamper.close();
    reader.close();
}
  • 写回答

2条回答 默认 最新

  • dabocaiqq 2016-10-20 09:52
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题