如何在所有现有pdf文档的左上角、左下角或pdf页面的最右侧插入文本?
我有这么多现存的pdf文档,它们都有不同的尺寸和旋转。我想在顶部或底部添加小文本,如帮助说明。我在如何插入文本方面找到了很多例子,但我的问题是,我无法成功地使它在不同的维度上以不同的旋转方式工作。 我的代码只适用于少数pdf文档。然后,如果我需要使它与所有现有文档的所有页面一起工作,那么我需要用这么长的代码处理所有条件 下面是我用itext5尝试的内容:如何在所有现有pdf文档的左上角、左下角或pdf页面的最右侧插入文本?,pdf,itext,pdfbox,itext7,Pdf,Itext,Pdfbox,Itext7,我有这么多现存的pdf文档,它们都有不同的尺寸和旋转。我想在顶部或底部添加小文本,如帮助说明。我在如何插入文本方面找到了很多例子,但我的问题是,我无法成功地使它在不同的维度上以不同的旋转方式工作。 我的代码只适用于少数pdf文档。然后,如果我需要使它与所有现有文档的所有页面一起工作,那么我需要用这么长的代码处理所有条件 下面是我用itext5尝试的内容: public static void main(String[] args) throws Exception {
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可能是正常的纵向方向,没有旋转。它可能在所有其他方式中都是正常的,但是有旋转。它可能没有指定旋转角度,但是是横向页面(比高的页面宽),文本水平定向。或者它可能是一个横向页面,文本以旋转方式书写。如果您有这些场景,则必须单独处理,因为它们需要不同的代码。