打印到Pdf ...只有2页

时间:2016-10-30 11:13:41

标签: java itext

我的代码有问题。一旦我正确创建了我的pdf页面,使用ItextPdf 7的示例我想为每个页面打印页面的数量作为页面x的Y ....代码似乎正确运行,但只有最后2页正确打印

提前致谢 亚历

在我的代码下面:

import java.util.*;
public class Test{

  public static void main(String[] args){

   HashMap<Integer,HashMap<Integer,Character>> map;
   map = new HashMap<Integer,HashMap<Integer,Character>>();
   map.put(0,new HashMap<Integer,Character>());
   map.get(0).put(7,'c');

   System.out.println((map.get(0)).get('c'));
  }
}

这是我用来打印的课程:

%matplotlib inline
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(13,6))
ax = fig.add_subplot(111)
plt.hold(True)

ax.plot([0.2, 0.5, 0.8], [4E-300, 5E-300, 4E-300], marker='.')

1 个答案:

答案 0 :(得分:1)

看起来好像这两行都在代码的末尾:

// add all the content here
PageXofY event = new PageXofY(pdf);
pdf.addEventHandler(PdfDocumentEvent.END_PAGE, event) ;
event.writeTotal(pdf);
document.close();

这意味着event仅在您添加了大部分内容后才会生效,这就解释了为什么仅为文档末尾的页面添加页脚的原因。

请更改您的代码:

PageXofY event = new PageXofY(pdf);
pdf.addEventHandler(PdfDocumentEvent.END_PAGE, event) ;
// add all the content here
event.writeTotal(pdf);
document.close();

我是您用于启发的示例的作者。如果仔细查看原始的PageXofY示例,您会看到我在创建Document实例之前添加了事件处理程序:

PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PageXofY event = new PageXofY(pdf);
pdf.addEventHandler(PdfDocumentEvent.END_PAGE, event);
Document document = new Document(pdf);
// add all the content
event.writeTotal(pdf);
document.close();

如果您阅读完整章节,您将了解它的工作原理。在另一个示例中(请参阅ImageWatermark示例),我删除了事件处理程序:

pdf.removeEventHandler(PdfDocumentEvent.START_PAGE, handler);

这会导致最后一页触发 not 事件。