Apache PDFBox PDPageContentStream showText和drawImage有时不起作用或颠倒显示

问题描述

关于, 我有一个将页码和徽标放在右上角的功能。 该代码几乎可以在每页中正常工作。 但是,在某些页面中,没有显示页码及其徽标。 在另一页中,页码及其徽标在左下方显示为上下。

关于原因的任何想法吗?

下面的代码,谢谢。

    private byte[] setPageNumbers(byte[] pdftmp,Integer initialPage,Integer finalPage) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PDDocument document = PDDocument.load(pdftmp);
    PDPage page;
    String numberingFormat = "  {0}";
    int offset_X = 45;
    int offset_Y = 803;
    int page_counter = 1;
    Color color = new Color(0);
    float[] components = new float[] {color.getRed() / 255f,color.getGreen() / 255f,color.getBlue() / 255f };
    float x;
    float y;
    PDPageContentStream contentStream;
    PDRectangle pageSize;
    String text;
    PDImageXObject pdImage;
    for(int i = initialPage; i <= finalPage; i++) {
        page = document.getPage(i);
        pageSize = page.getMediaBox();
        x = pageSize.getLowerLeftX();
        y = pageSize.getLowerLeftY();
        text = MessageFormat.format(numberingFormat,page_counter);
        contentStream = new PDPageContentStream(document,page,PDPageContentStream.AppendMode.APPEND,true,true);
        contentStream.setFont(PDType1Font.HELVETICA_BOLD,11);
        contentStream.setNonStrokingColor(new PDColor(components,PDDeviceRGB.INSTANCE));
        contentStream.beginText();
        contentStream.newLineAtOffset(x + pageSize.getWidth() - offset_X,y+offset_Y);
        contentStream.showText(text);
        contentStream.endText();
        ++page_counter;     
        pdImage = PDImageXObject.createFromFile(PDChoice.class.getResource("/images/logo.png").getPath(),document);
        contentStream.drawImage(pdImage,x + pageSize.getWidth() - offset_X - 7,y + offset_Y - 2);
        contentStream.close();                  
    }
    document.save(baos);
    document.close();
    return baos.toByteArray();
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)