2015-08-31 2 views
0

Переменные value1 to value4 необходимы для отображения в PDF-файле через генератор iText PDF. Когда я использую это значение, он показывает «Невозможно сделать статическую ссылку на значение нестатического поля1». Как я могу это исправить? Вот код:Создание PDF с переменными get/set

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Paragraph; 
import com.itextpdf.text.pdf.PdfWriter; 

public class GenerateSummonPDF 
{ 
private String value1; 
private String value2; 
private String value3; 
private String value4; //this variables with constant updated string data 

public String getValue1() 
{ 
    return this.value1; 

} 


public void userdata(String p1, String p2, String p3, String p4) 
{ 

    this.value1 = p1; 
    this.value2 = p2; 
    this.value3 = p3; 
    this.value4 = p4; 



} 
    public static void main(String[] args) 
    { 

    Document document = new Document(); 
    try 
    { 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\User\\workspace\\enforement system\\Summon PDF list\\Serial No.pdf")); 
    document.open(); 
    document.add(new Paragraph(getValue1()); //i need to print all the data here from the userdata 
    document.close(); 
    writer.close(); 
    } catch (DocumentException e) 
    { 
    e.printStackTrace(); 
    } catch (FileNotFoundException e) 
    { 
    e.printStackTrace(); 
    } 
    } 
} 

ответ

0

Вы вызываете значения из статических методов, так что вы получаете эту ошибку, просто создать функцию и поместить код там, как это ..

public static void main(String[] args) 
    { 
     createPdf(); 
    } 
createPdf(){ 
    Document document = new Document(); 
    try 
    { 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\User\\workspace\\enforement system\\Summon PDF list\\Serial No.pdf")); 
    document.open(); 
    document.add(new Paragraph(getValue1()); //i need to print all the data here from the userdata 
    document.close(); 
    writer.close(); 
    } catch (DocumentException e) 
    { 
    e.printStackTrace(); 
    } catch (FileNotFoundException e) 
    { 
    e.printStackTrace(); 
    } 
} 
+0

Теперь вы вызываете, не статический метод от статической. Подумайте о создании экземпляра сначала ... – mkl

+0

Не совсем понимаю, можете ли вы более подробно объяснить, что вы подразумеваете под «созданием PDF»? –

+0

Когда вы вызываете нестатические методы в статическом методе, вы должны создать/вызвать метод объекта, например 'new GenerateSummonPDF(). GetValue1()', или поместить нестатические методы в отдельный метод. – SaviNuclear

1

Вам нужно экземпляр GenerateSummonPDF называть не-статические методы:

public static void main(String[] args) 
{ 
    GenerateSummonPDF generateSummonPDF = new GenerateSummonPDF(); //create an instance 
    generateSummonPDF.userdata("TestString1", "TestString2", "TestString3", "TestString4"); //some content 

    Document document = new Document(); 
    try 
    { 
     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\User\\workspace\\enforement system\\Summon PDF list\\Serial No.pdf")); 
     document.open(); 
     document.add(new Paragraph(generateSummonPDF.getValue1()); //get value1 
     document.close(); 
     writer.close(); 
    } catch (DocumentException e) 
    { 
     e.printStackTrace(); 
    } catch (FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 
} 
+0

Я попытался, но в сгенерированном PDF шоу «TestString1» вместо синтаксического анализа данных «userdata (String p1, String p2, String p3, String p4)». –

+0

Когда мы вызываем 'generateSummonPDF.userdata (« TestString1 »,« TestString2 »,« TestString3 »,« TestString4 »);', «TestString1» хранится в поле 'value1'. Замените аргументы этого метода вашими собственными данными или удалите эту строку и вызовите 'userdata()' -Method где-то в другом месте. – Jonas

Смежные вопросы