iText PDF/A-2 Java add total page count in footer










0















I need to add the total page count to a PDF/A-2 document created using iText in Java. The following code is being used:



public class HeaderFooterPageEvent extends PdfPageEventHelper 

Font fontHEADER = null;

/** The template with the total number of pages. */
PdfTemplate total;

public HeaderFooterPageEvent()
try
fontHEADER = new Font(BaseFont.createFont("OpenSans-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 8, Font.BOLD);
catch (DocumentException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();



@Override
public void onOpenDocument(PdfWriter writer, Document document)
total = writer.getDirectContent().createTemplate(30, 16);
super.onOpenDocument(writer, document);


@Override
public void onCloseDocument(PdfWriter writer, Document document)
PdfContentByte cb = writer.getDirectContent();
ColumnText.showTextAligned(total, Element.ALIGN_RIGHT,
new Phrase(String.valueOf(writer.getPageNumber() - 1)),fontHEADER),
document.right() - document.rightMargin()+5,
document.bottom() - 10, 0);
super.onCloseDocument(writer, document);




And when creating the PDF the following code is called:



 Document document = new Document(PageSize.A4, 15, 15, 30, 20);

PdfAWriter writer = PdfAWriter.getInstance(document, new FileOutputStream(dest), PdfAConformanceLevel.PDF_A_2A);
writer.createXmpMetadata();
writer.setTagged();

// add header and footer
HeaderFooterPageEvent event = new HeaderFooterPageEvent();
writer.setPageEvent(event);

document.open();
document.addLanguage("en-us");
File file = new File("sRGB_CS_profile.icm");
ICC_Profile icc = ICC_Profile
.getInstance(new FileInputStream(file));
writer.setOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc);
Paragraph p=new Paragraph("Page 1 content",fontEmbedded); //setting an embedded font
p.setSpacingBefore(30f);
document.add(p);
document.newPage();
document.add(new Paragraph("Content of next page goes here",fontEmbedded));


document.close();


Now when we add content on 2 pages and use document.newPage() to add the new page, runtime exception is generated The page 3 was requested but the document has only 2 pages. What is a solution to this problem?










share|improve this question
























  • The exception also has a stack trace. Please post it and point out the line of your code in which it is triggered.

    – mkl
    Nov 16 '18 at 6:40











  • Is there a caused by section thereafter? The code there does not specifically throw that exception, but it does wrap and rethrow some exceptions it catches. Thus, the actual culprit should be in a caused by section thereafter.

    – mkl
    Nov 16 '18 at 16:02











  • That been said, line numbers do not match exactly those in the current code. Thus, you appear to use an older version. Which iText version do you use?

    – mkl
    Nov 16 '18 at 16:03











  • There does not seem to be a caused by, it shows Exception in thread "main" java.lang.RuntimeException: The page 3 was requested but the document has only 2 pages. I am using iText v5.4

    – S_S
    Nov 19 '18 at 4:20















0















I need to add the total page count to a PDF/A-2 document created using iText in Java. The following code is being used:



public class HeaderFooterPageEvent extends PdfPageEventHelper 

Font fontHEADER = null;

/** The template with the total number of pages. */
PdfTemplate total;

public HeaderFooterPageEvent()
try
fontHEADER = new Font(BaseFont.createFont("OpenSans-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 8, Font.BOLD);
catch (DocumentException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();



@Override
public void onOpenDocument(PdfWriter writer, Document document)
total = writer.getDirectContent().createTemplate(30, 16);
super.onOpenDocument(writer, document);


@Override
public void onCloseDocument(PdfWriter writer, Document document)
PdfContentByte cb = writer.getDirectContent();
ColumnText.showTextAligned(total, Element.ALIGN_RIGHT,
new Phrase(String.valueOf(writer.getPageNumber() - 1)),fontHEADER),
document.right() - document.rightMargin()+5,
document.bottom() - 10, 0);
super.onCloseDocument(writer, document);




And when creating the PDF the following code is called:



 Document document = new Document(PageSize.A4, 15, 15, 30, 20);

PdfAWriter writer = PdfAWriter.getInstance(document, new FileOutputStream(dest), PdfAConformanceLevel.PDF_A_2A);
writer.createXmpMetadata();
writer.setTagged();

// add header and footer
HeaderFooterPageEvent event = new HeaderFooterPageEvent();
writer.setPageEvent(event);

document.open();
document.addLanguage("en-us");
File file = new File("sRGB_CS_profile.icm");
ICC_Profile icc = ICC_Profile
.getInstance(new FileInputStream(file));
writer.setOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc);
Paragraph p=new Paragraph("Page 1 content",fontEmbedded); //setting an embedded font
p.setSpacingBefore(30f);
document.add(p);
document.newPage();
document.add(new Paragraph("Content of next page goes here",fontEmbedded));


document.close();


Now when we add content on 2 pages and use document.newPage() to add the new page, runtime exception is generated The page 3 was requested but the document has only 2 pages. What is a solution to this problem?










share|improve this question
























  • The exception also has a stack trace. Please post it and point out the line of your code in which it is triggered.

    – mkl
    Nov 16 '18 at 6:40











  • Is there a caused by section thereafter? The code there does not specifically throw that exception, but it does wrap and rethrow some exceptions it catches. Thus, the actual culprit should be in a caused by section thereafter.

    – mkl
    Nov 16 '18 at 16:02











  • That been said, line numbers do not match exactly those in the current code. Thus, you appear to use an older version. Which iText version do you use?

    – mkl
    Nov 16 '18 at 16:03











  • There does not seem to be a caused by, it shows Exception in thread "main" java.lang.RuntimeException: The page 3 was requested but the document has only 2 pages. I am using iText v5.4

    – S_S
    Nov 19 '18 at 4:20













0












0








0








I need to add the total page count to a PDF/A-2 document created using iText in Java. The following code is being used:



public class HeaderFooterPageEvent extends PdfPageEventHelper 

Font fontHEADER = null;

/** The template with the total number of pages. */
PdfTemplate total;

public HeaderFooterPageEvent()
try
fontHEADER = new Font(BaseFont.createFont("OpenSans-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 8, Font.BOLD);
catch (DocumentException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();



@Override
public void onOpenDocument(PdfWriter writer, Document document)
total = writer.getDirectContent().createTemplate(30, 16);
super.onOpenDocument(writer, document);


@Override
public void onCloseDocument(PdfWriter writer, Document document)
PdfContentByte cb = writer.getDirectContent();
ColumnText.showTextAligned(total, Element.ALIGN_RIGHT,
new Phrase(String.valueOf(writer.getPageNumber() - 1)),fontHEADER),
document.right() - document.rightMargin()+5,
document.bottom() - 10, 0);
super.onCloseDocument(writer, document);




And when creating the PDF the following code is called:



 Document document = new Document(PageSize.A4, 15, 15, 30, 20);

PdfAWriter writer = PdfAWriter.getInstance(document, new FileOutputStream(dest), PdfAConformanceLevel.PDF_A_2A);
writer.createXmpMetadata();
writer.setTagged();

// add header and footer
HeaderFooterPageEvent event = new HeaderFooterPageEvent();
writer.setPageEvent(event);

document.open();
document.addLanguage("en-us");
File file = new File("sRGB_CS_profile.icm");
ICC_Profile icc = ICC_Profile
.getInstance(new FileInputStream(file));
writer.setOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc);
Paragraph p=new Paragraph("Page 1 content",fontEmbedded); //setting an embedded font
p.setSpacingBefore(30f);
document.add(p);
document.newPage();
document.add(new Paragraph("Content of next page goes here",fontEmbedded));


document.close();


Now when we add content on 2 pages and use document.newPage() to add the new page, runtime exception is generated The page 3 was requested but the document has only 2 pages. What is a solution to this problem?










share|improve this question
















I need to add the total page count to a PDF/A-2 document created using iText in Java. The following code is being used:



public class HeaderFooterPageEvent extends PdfPageEventHelper 

Font fontHEADER = null;

/** The template with the total number of pages. */
PdfTemplate total;

public HeaderFooterPageEvent()
try
fontHEADER = new Font(BaseFont.createFont("OpenSans-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 8, Font.BOLD);
catch (DocumentException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();



@Override
public void onOpenDocument(PdfWriter writer, Document document)
total = writer.getDirectContent().createTemplate(30, 16);
super.onOpenDocument(writer, document);


@Override
public void onCloseDocument(PdfWriter writer, Document document)
PdfContentByte cb = writer.getDirectContent();
ColumnText.showTextAligned(total, Element.ALIGN_RIGHT,
new Phrase(String.valueOf(writer.getPageNumber() - 1)),fontHEADER),
document.right() - document.rightMargin()+5,
document.bottom() - 10, 0);
super.onCloseDocument(writer, document);




And when creating the PDF the following code is called:



 Document document = new Document(PageSize.A4, 15, 15, 30, 20);

PdfAWriter writer = PdfAWriter.getInstance(document, new FileOutputStream(dest), PdfAConformanceLevel.PDF_A_2A);
writer.createXmpMetadata();
writer.setTagged();

// add header and footer
HeaderFooterPageEvent event = new HeaderFooterPageEvent();
writer.setPageEvent(event);

document.open();
document.addLanguage("en-us");
File file = new File("sRGB_CS_profile.icm");
ICC_Profile icc = ICC_Profile
.getInstance(new FileInputStream(file));
writer.setOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc);
Paragraph p=new Paragraph("Page 1 content",fontEmbedded); //setting an embedded font
p.setSpacingBefore(30f);
document.add(p);
document.newPage();
document.add(new Paragraph("Content of next page goes here",fontEmbedded));


document.close();


Now when we add content on 2 pages and use document.newPage() to add the new page, runtime exception is generated The page 3 was requested but the document has only 2 pages. What is a solution to this problem?







itext pdfa headerfooter






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 16 '18 at 10:51







S_S

















asked Nov 16 '18 at 4:48









S_SS_S

44021031




44021031












  • The exception also has a stack trace. Please post it and point out the line of your code in which it is triggered.

    – mkl
    Nov 16 '18 at 6:40











  • Is there a caused by section thereafter? The code there does not specifically throw that exception, but it does wrap and rethrow some exceptions it catches. Thus, the actual culprit should be in a caused by section thereafter.

    – mkl
    Nov 16 '18 at 16:02











  • That been said, line numbers do not match exactly those in the current code. Thus, you appear to use an older version. Which iText version do you use?

    – mkl
    Nov 16 '18 at 16:03











  • There does not seem to be a caused by, it shows Exception in thread "main" java.lang.RuntimeException: The page 3 was requested but the document has only 2 pages. I am using iText v5.4

    – S_S
    Nov 19 '18 at 4:20

















  • The exception also has a stack trace. Please post it and point out the line of your code in which it is triggered.

    – mkl
    Nov 16 '18 at 6:40











  • Is there a caused by section thereafter? The code there does not specifically throw that exception, but it does wrap and rethrow some exceptions it catches. Thus, the actual culprit should be in a caused by section thereafter.

    – mkl
    Nov 16 '18 at 16:02











  • That been said, line numbers do not match exactly those in the current code. Thus, you appear to use an older version. Which iText version do you use?

    – mkl
    Nov 16 '18 at 16:03











  • There does not seem to be a caused by, it shows Exception in thread "main" java.lang.RuntimeException: The page 3 was requested but the document has only 2 pages. I am using iText v5.4

    – S_S
    Nov 19 '18 at 4:20
















The exception also has a stack trace. Please post it and point out the line of your code in which it is triggered.

– mkl
Nov 16 '18 at 6:40





The exception also has a stack trace. Please post it and point out the line of your code in which it is triggered.

– mkl
Nov 16 '18 at 6:40













Is there a caused by section thereafter? The code there does not specifically throw that exception, but it does wrap and rethrow some exceptions it catches. Thus, the actual culprit should be in a caused by section thereafter.

– mkl
Nov 16 '18 at 16:02





Is there a caused by section thereafter? The code there does not specifically throw that exception, but it does wrap and rethrow some exceptions it catches. Thus, the actual culprit should be in a caused by section thereafter.

– mkl
Nov 16 '18 at 16:02













That been said, line numbers do not match exactly those in the current code. Thus, you appear to use an older version. Which iText version do you use?

– mkl
Nov 16 '18 at 16:03





That been said, line numbers do not match exactly those in the current code. Thus, you appear to use an older version. Which iText version do you use?

– mkl
Nov 16 '18 at 16:03













There does not seem to be a caused by, it shows Exception in thread "main" java.lang.RuntimeException: The page 3 was requested but the document has only 2 pages. I am using iText v5.4

– S_S
Nov 19 '18 at 4:20





There does not seem to be a caused by, it shows Exception in thread "main" java.lang.RuntimeException: The page 3 was requested but the document has only 2 pages. I am using iText v5.4

– S_S
Nov 19 '18 at 4:20












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53331613%2fitext-pdf-a-2-java-add-total-page-count-in-footer%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53331613%2fitext-pdf-a-2-java-add-total-page-count-in-footer%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Top Tejano songwriter Luis Silva dead of heart attack at 64

ReactJS Fetched API data displays live - need Data displayed static

政党