Java 是否可以将构造函数添加到PDF生成器中,而不是手动键入字符串?
大家好,我现在正在试用Java的PDF生成器,想知道是否可以从不同的类中添加构造函数,而不是手动键入字符串。 例如,代替段落.add(“此处为您的字符串”); 是否可以键入段落。添加(account.welcome()); 我尝试这样做,但它返回了一个错误 我现在使用的PDF生成器代码是:Java 是否可以将构造函数添加到PDF生成器中,而不是手动键入字符串?,java,pdf-generation,itext,Java,Pdf Generation,Itext,大家好,我现在正在试用Java的PDF生成器,想知道是否可以从不同的类中添加构造函数,而不是手动键入字符串。 例如,代替段落.add(“此处为您的字符串”); 是否可以键入段落。添加(account.welcome()); 我尝试这样做,但它返回了一个错误 我现在使用的PDF生成器代码是: package demo; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com
package demo;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.*;
public class PDFGenerateDemo {
public static void main(String[] args)
throws Exception {
Document document = new Document();
PdfWriter.getInstance(document,
new FileOutputStream("/Users/PandaFunk/Desktop/images/sample.pdf"));
document.open();
Paragraph paragraph = new Paragraph();
paragraph.add("Hello World\n");
paragraph.add("PDF sample generation demo\n");
paragraph.add("programmed by Mon Zalameda\n");
paragraph.add("DLS-CSB is a wonderful school. "
+ "I will miss you and hope "
+ "to see you again.\n\n");
//adding Image
Image csbImage =
Image.getInstance("/Users/PandaFunk/Desktop/images/DLS-CSB_Seal.png");
document.add(paragraph);
document.add(csbImage);
document.close();
}
}
更新:这是我尝试使用的类
package model;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
public class SECB extends BankBSP implements
PSERequirement{
public String name = "Security Bank";
public void welcome() {
System.out.println("Maligayang pagdating sa " + name);
}
public void depositAmountRequirement() {
System.out.println("To open an account, "
+ "minimum deposit amount is P3,000.00");
}
public void depositPromo() {
System.out.println("Minimum opening amount of at least "
+ "Php500,000.00 will get you a dinner date with "
+ "2014 Ms. World Megan Young.");
}
public void maintainingBalance() {
System.out.println("Maintaining balance of "
+ "at least Php1,000.00 is required");
}
public void interestRate() {
System.out.println("Minimum deposit amount of P3,000.00 "
+ "to earn an interest rate of 5% per annum.");
}
public void displayFinancialStatement() {
System.out.println("PSE Requirement: "
+ MIN_LARGE_CAPITALIZATION);
System.out.println(name + " 2015 "
+ "Financial Assets: Php141,740,664,644.70");
}
public void displayTotalMarketShares() {
System.out.println("PSE Required Shares: "
+ MIN_SHARES_SOLD);
System.out.println(name + "total shares: " +
"753,538,887");
}
public void GeneratePDF() throws DocumentException, MalformedURLException, IOException{
Document document = new Document();
PdfWriter.getInstance(document,new FileOutputStream("/Users/PandaFunk/Desktop/images/sample.pdf"));
document.open();
Paragraph paragraph = new Paragraph();
paragraph.add(welcome.toString());
paragraph.add("Hello World\n");
paragraph.add("PDF sample generation demo\n");
paragraph.add("programmed by Mon Zalameda\n");
paragraph.add("DLS-CSB is a wonderful school. "
+ "I will miss you and hope "
+ "to see you again.\n\n");
//adding Image
Image csbImage = Image.getInstance("/Users/PandaFunk/Desktop/images/DLS-CSB_Seal.png");
document.add(paragraph);
document.add(csbImage);
document.close();
}
}
对。这是可能的。以下措施肯定会奏效:
paragraph.add(account.welcome());
如果welcome
是公共字符串welcome()
您必须将字符串
传递给构造函数。不管是什么字符串
。如果您有一个对象
,该对象有一个返回字符串的方法
,则可以传递该方法的结果,该方法如上所示(toString
返回字符串
)
如果您在同一个包中,该方法也必须是public
或package public
综上所述:
在Java中,不仅可以将引用副本作为参数传递给字母数字标记标识的对象,还可以传递给方法返回的对象。您只需要记住类型必须匹配,即必须在扩展树中传递相同类或下面类的对象 感谢您的快速回复Xentros!但是当使用段落.add(account.toString())时,它似乎不起作用@JjCalaguian您能告诉我错误是什么吗?或者您收到的字符串与预期的不同?@JjCalaguian请将account.welcome()添加到您的问题中。让我们看看代码。奇怪的是,我没有看到一个简单调用
toString()
方法的add(Object)
方法。这会更简单;)@JjCalaguian,这应该可以工作,因为这将返回一个字符串。如果您有overridetoString()
可能会出现异常,否则可能会出现意外结果。编辑:你的所有方法都打印到控制台中,你需要返回一个字符串来使用这样的方法这叫做实例,构造函数是一个“特殊”方法来创建类的实例