如何在所有现有pdf文档的左上角、左下角或pdf页面的最右侧插入文本?

如何在所有现有pdf文档的左上角、左下角或pdf页面的最右侧插入文本?,pdf,itext,pdfbox,itext7,Pdf,Itext,Pdfbox,Itext7,我有这么多现存的pdf文档,它们都有不同的尺寸和旋转。我想在顶部或底部添加小文本,如帮助说明。我在如何插入文本方面找到了很多例子,但我的问题是,我无法成功地使它在不同的维度上以不同的旋转方式工作。 我的代码只适用于少数pdf文档。然后,如果我需要使它与所有现有文档的所有页面一起工作,那么我需要用这么长的代码处理所有条件 下面是我用itext5尝试的内容: public static void main(String[] args) throws Exception {

我有这么多现存的pdf文档,它们都有不同的尺寸和旋转。我想在顶部或底部添加小文本,如帮助说明。我在如何插入文本方面找到了很多例子,但我的问题是,我无法成功地使它在不同的维度上以不同的旋转方式工作。 我的代码只适用于少数pdf文档。然后,如果我需要使它与所有现有文档的所有页面一起工作,那么我需要用这么长的代码处理所有条件

下面是我用itext5尝试的内容:

   public static void main(String[] args) throws Exception {         
    String inputFilePath = "test.pdf"; // Existing file
       String outputFilePath = "output.pdf"; // New file

       OutputStream fos = new FileOutputStream(new File(outputFilePath));

       PdfReader pdfReader = new PdfReader(inputFilePath);
       PdfStamper pdfStamper = new PdfStamper(pdfReader, fos);


       // loop on all the PDF pages
       // i is the pdfPageNumber
       for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) {
           Rectangle pageSize = pdfReader.getPageSize(i) ;
           int oldRotation = pdfReader.getPageRotation(i);
           System.out.println("oldRotation:"+oldRotation);

           System.out.println("Pdf page :"+pageSize+" PageSize.A2:"+PageSize.A2+" PageSize.A3:"+PageSize.A3+" PageSize.A4:"+PageSize.A4);
                                System.out.println("pageSize.getWidth():"+pageSize.getWidth());
                                System.out.println("pageSize.getHeight():"+pageSize.getHeight());
                                System.out.println("pageSize.getLeft():"+pageSize.getLeft());
                                System.out.println("pageSize.getRight():"+pageSize.getRight());
                                System.out.println("pageSize.getBottom():"+pageSize.getBottom());
                                System.out.println("pageSize.getTop():"+pageSize.getTop());

              if(oldRotation == 0 || oldRotation == 270 )
              {
                 PdfContentByte pdfContentByte = pdfStamper.getOverContent(i);
                 Document document = pdfContentByte.getPdfDocument(); 
                 Font ffont = new Font(Font.FontFamily.UNDEFINED, 5, Font.ITALIC);
                 Phrase header = new Phrase("this is a header", ffont);
                 Phrase footer = new Phrase("this is a footer", ffont);

                 float value1 = document.right() - document.left()) / 2 + document.leftMargin();
                 double value2 = document.top() + 10 ;

                    ColumnText.showTextAligned(pdfContentByte, Element.ALIGN_CENTER,
                            header,
                            (value1,
                            value2, 0);
                    ColumnText.showTextAligned(pdfContentByte, Element.ALIGN_CENTER,
                            footer,
                            (document.right() - document.left()) / 2 + document.leftMargin(),
                            document.bottom() - 10, 0);
                            pdfStamper.close(); //close pdfStamper
                }
                else if(oldRotation == 90 )
                  {
                          if(pageSize.toString().contains("1162.0")) // I gess A4
                         {
                            System.out.println("In 90 rotation pageSize.contains(1162)");
                            PdfContentByte pdfContentByte = pdfStamper.getOverContent(i);
                             Document document = pdfContentByte.getPdfDocument(); 
                             Font ffont = new Font(Font.FontFamily.UNDEFINED, 5, Font.ITALIC);
                             Phrase header = new Phrase("this is a header", ffont);
                             Phrase footer = new Phrase("this is a footer", ffont);

                             float value1 = (document.right() - document.left()) / 2 + document.leftMargin();
                             float value2 = document.top() ;
                                ColumnText.showTextAligned(pdfContentByte, Element.ALIGN_CENTER,
                                        header,
                                        value1,
                                        value2, 0);

                                float value3 = (document.right() - document.left()) / 2 ;
                                float value4 = - 330 ;
                                ColumnText.showTextAligned(pdfContentByte, Element.ALIGN_CENTER,
                                        footer,
                                        value3,
                                        value4, 0);
                                        pdfStamper.close(); //close pdfStamper
                            }// end if 
                            else if(pageSize.toString().contains("842.0x1191.0"))
                                {
                                    System.out.println("In 90 rotation pageSize.contains(842.0x1191.0)");
                                     PdfContentByte pdfContentByte = pdfStamper.getOverContent(i);
                                     Document document = pdfContentByte.getPdfDocument(); 
                                     Font ffont = new Font(Font.FontFamily.UNDEFINED, 5, Font.ITALIC);
                                     Phrase header = new Phrase("this is a header", ffont);
                                     Phrase footer = new Phrase("this is a footer", ffont);
                                        ColumnText.showTextAligned(pdfContentByte, Element.ALIGN_CENTER,
                                                header,
                                                (document.right() - document.left()) / 2 + document.leftMargin(),
                                                document.top() + 10, 0);
                                        ColumnText.showTextAligned(pdfContentByte, Element.ALIGN_CENTER,
                                                footer,
                                                (document.right() - document.left()) / 2 + document.leftMargin(),
                                                document.bottom() - 10, 0);
                                                pdfStamper.close(); //close pdfStamper
                                }

                    }



              }


       System.out.println("Modified PDF created in >> "+ outputFilePath);

}
publicstaticvoidmain(字符串[]args)引发异常{
字符串inputFilePath=“test.pdf”;//现有文件
字符串outputFilePath=“output.pdf”;//新文件
OutputStream fos=新文件OutputStream(新文件(outputFilePath));
PdfReader PdfReader=新PdfReader(inputFilePath);
PdfStamper PdfStamper=新PdfStamper(pdfReader,fos);
//在所有PDF页面上循环
//我是pdfPageNumber

对于(int i=1;我“这里是我用itext5尝试过的”-它是如何辜负您的期望的?您是否也用pdfbox和itext7尝试过一些东西?或者您只是使用了一些与PDF有一定关系的标签?“它是如何辜负您的期望的?”,我尝试了很多,例如一个代码显示pdf顶部的文本,但不幸的是,由于尺寸不同(A3、A4、其他尺寸),它不适用于其他pdf和旋转。请尝试一次,让文本位于顶部,并在所有pdf中以不同的尺寸和旋转运行,看看它是否有效。您是否也尝试过使用pdfbox和itext7?或者您只是使用了一些与pdf有一定关系的标签?我尝试过使用pdfbox,但没有成功。除了需要更多信息外,请关于您的要求,您应该了解有不同的方式来定义旋转。PDF可能是正常的纵向方向,没有旋转。它可能在所有其他方式中都是正常的,但是有旋转。它可能没有指定旋转角度,但是是横向页面(比高的页面宽),文本水平定向。或者它可能是一个带有旋转文字的横向页面。如果您有这些场景中的每一个,它们都必须单独处理,因为它们需要不同的代码。“这里是我用itext5尝试的内容”-它是如何辜负您的期望的?您是否也尝试过使用pdfbox和itext7?或者您只是使用了一些与PDF相关的标签?“它是如何辜负您的期望的?”,我尝试了很多,例如一个代码显示pdf顶部的文本,但不幸的是,由于尺寸不同(A3、A4、其他尺寸),它不适用于其他pdf和旋转。请尝试一次,让文本位于顶部,并在所有pdf中以不同的尺寸和旋转运行,看看它是否有效。您是否也尝试过使用pdfbox和itext7?或者您只是使用了一些与pdf有一定关系的标签?我尝试过使用pdfbox,但没有成功。除了需要更多信息外,请关于您的要求,您应该了解有不同的方式来定义旋转。PDF可能是正常的纵向方向,没有旋转。它可能在所有其他方式中都是正常的,但是有旋转。它可能没有指定旋转角度,但是是横向页面(比高的页面宽),文本水平定向。或者它可能是一个横向页面,文本以旋转方式书写。如果您有这些场景,则必须单独处理,因为它们需要不同的代码。