Редактирование PDF из Java с помощью PDFBox

В настоящее время я получаю страницу из PDF-файла, а затем пытаюсь отредактировать эту конкретную страницу. Когда я делаю редактирование, оно не сохраняется в самом PDF-файле.

Это мой код, может кто-нибудь помочь.

PDPage page = (PDPage) allPages.get(f);
System.out.println(page);
PDRectangle pageSize = page.findMediaBox();
float stringWidth = font.getStringWidth( "AAA" );
float centeredPosition = (pageSize.getWidth() - (stringWidth*fontSize)/1000f)/2f;

PDPageContentStream contentStream = new PDPageContentStream(pdoc,page,true,false);

contentStream.beginText();
contentStream.setFont( font, fontSize );
//contentStream.addLine(700, 700, 700, 1000);
contentStream.moveTextPositionByAmount(0 , 0);
contentStream.drawString( "AAA" );
contentStream.endText();
contentStream.close();

pdoc.save("C:/1/1.pdf");
pdoc.close();

person CRL88    schedule 01.09.2011    source источник
comment
Вы действительно хотите сохранить его в c:\1\1.pdf (в папке 1 в c:\ )?   -  person dacwe    schedule 01.09.2011
comment
не обязательно, я только проверял это, но проблема в том, что когда я сохраняю и перехожу к 1.pdf, я обнаруживаю, что AAA не добавляется в самый низ страницы в месте 0, 0 И когда я меняю PDPageContentStream и измените true на false, я получаю, что страница перезаписывается с помощью AAA   -  person CRL88    schedule 01.09.2011
comment
Я добавил для вас в другой вопрос о вашем коде, который вставляет AAA, не переопределяя страницу, поэтому мне интересно, почему вы приходите и снова публикуете этот вопрос.   -  person    schedule 02.09.2011


Ответы (2)


Код, с которым я это делаю, правильный.

Проблема не в коде, а в том, как генерируются PDF-файлы, в версии 1.2. Мне нужно знать, что я могу сделать, чтобы изменить PDF-файлы, которые являются одним V 1.2

person CRL88    schedule 02.09.2011

пожалуйста, используйте/обновите код ниже

contentStream = new PDPageContentStream(
                document, page, true, true);

Это работает для меня

person Neeraj Singh Dhapola    schedule 06.05.2016
comment
На самом деле в коде операции есть несколько проблем, и проблема 1.2, которую он выбрал в своем ответе, скорее всего, не была проблемой. Но я сомневаюсь, что ответ на этот старый вопрос приведет к чему-либо. - person mkl; 08.05.2016