#java #swing #pdfbox
#java #swing #pdfbox
Вопрос:
Я решил использовать менеджер компоновки Pdf от Glen K. Peterson, доступный на GitHub (https://github.com/GlenKPeterson/PdfLayoutManager ) чтобы создавать PDF-документы с помощью моего приложения, я импортировал исходные файлы и pom.xml зависимости и все такое, все работает просто отлично. Проблема в том, что я пытаюсь создать таблицу в одном из документов, которые я хочу сгенерировать, с помощью нажатия кнопки. Я понятия не имею, как извлечь (использовать) TableBuilder, поскольку я получаю сообщение об ошибке внутри моей IDE JDeveloper, что класс имеет частный доступ.
Вот мой код:
private void jBtnSalvareVerMetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnSalvareVerMetActionPerformed
// TODO add your handling code here:
PDDocument document = new PDDocument();
try {
PDPage page = new PDPage();
document.addPage(page);
PDFont font = PDType1Font.COURIER;
PDPageContentStream contents = new PDPageContentStream(document, page);
contents.beginText();
contents.setFont(font, 14);
contents.newLineAtOffset(50, 500);
Coord coordinate = new Coord(10, 700);
PdfLayoutMgr pageMgr = PdfLayoutMgr.newRgbPageMgr();
LogicalPage locatieTabel = pageMgr.logicalPageStart();
TableBuilder tabel = new TableBuilder(locatieTabel, coordinate); // Getting the error at this point
contents.newLineAtOffset(10, 700);
contents.showText(tabel.toString());
contents.endText();
contents.close();
} catch (IOException ex) {
java.util.logging.Logger.getLogger(MeniuTaburi.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} finally {
try {
document.close();
} catch (IOException ex) {
java.util.logging.Logger.getLogger(MeniuTaburi.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
}
jLabelAverstismenteVerMet.setText("<html><center>Datele au fost salvate cu succes!</center></html>");
}//GEN-LAST:event_jBtnSalvareVerMetActionPerformed
Я думал об изменении типа разрешения доступа с частного на общедоступный для TableBuilder, но я не думаю, что это так, как это должно работать…
Есть ли какой-либо другой способ, я могу создать нужную мне таблицу, не прибегая к изменению модификатора доступа внутри класса TableBuilder??
Комментарии:
1. Пожалуйста, поделитесь точным сообщением об ошибке и точным местоположением, для которого оно указано.
2. Ошибка (3083,34): TableBuilder(com.planbase.pdf.layoutmanager. LogicalPage,com.planbase.pdf.layoutmanager. У Coord) есть частный доступ в com.planbase.pdf.layoutmanager. TableBuilder C:OracleMiddlewareOracle_HomejdevelopermyworkmyworkDigitalizareLaboratorMetrologieDigitalizareLaboratorMetrologie.jws C:OracleMiddlewareOracle_HomejdevelopermyworkmyworkDigitalizareLaboratorMetrologieprojectproject.jpr /C:/Oracle/Middleware/Oracle_Home/jdeveloper/mywork/mywork/DigitalizareLaboratorMetrologie/project/src/main/java/Components/Events/project/MeniuTaburi.java (3083,34)
Ответ №1:
Вы пытаетесь использовать
TableBuilder tabel = new TableBuilder(locatieTabel, coordinate); // Getting the error at this point
Но этот конструктор является частным
private TableBuilder(LogicalPage lp, Coord tl) {
logicalPage = lp; topLeft = tl;
}
Т.е. Вы не должны его использовать. К сожалению, также нет JavaDoc, указывающего, что вы должны использовать вместо этого. Но, взглянув на TableBuilder
исходный код немного дальше этого конструктора, вы сразу же обнаружите следующее:
public static TableBuilder of(LogicalPage lp, Coord tl) {
return new TableBuilder(lp, tl);
}
Таким образом, вместо прямого вызова конструктора вы должны использовать этот фабричный метод:
TableBuilder tabel = TableBuilder.of(locatieTabel, coordinate);
Комментарии:
1. Да, это помогло! Спасибо! =)