我使用itext生成pdf文件。我想在页面中间对齐我的标题。目前我正在使用这样的
Paragraph preface = new Paragraph();
for (int i = 0; i < 10; i++) {
preface.add(new Paragraph(" "));
}
是否正确或是否还有其他最佳方式。
答案 0 :(得分:60)
使用Paragraph#setAlignment(int)
:
Paragraph preface = new Paragraph();
preface.setAlignment(Element.ALIGN_CENTER);
请参阅Element
界面中的ALIGN_*
常量,了解更多可能的值。
答案 1 :(得分:3)
如果有人正在寻找.NET / C#版本,下面是我如何实现CENTER对齐。
我正在使用用于.NET / C#的iText7库,我使用以下方法实现了这一目标:
Paragraph preface = new Paragraph();
preface.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);
答案 2 :(得分:2)
public static final String DEST = "results/tables/centered_text.pdf";
public static void main(String[] args) throws IOException, DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new CenteredTextInCell().createPdf(DEST);
}
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
Font font = new Font(FontFamily.HELVETICA, 12, Font.BOLD);
Paragraph para = new Paragraph("Test", font);
para.setLeading(0, 1);
PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(100);
PdfPCell cell = new PdfPCell();
cell.setMinimumHeight(50);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.addElement(para);
table.addCell(cell);
document.add(table);
document.close();
}
答案 3 :(得分:1)
不确定这是否是旧版本,但对于PdfWriter,这些方法不存在。相反,我用过:
module PortalPaypalPaymentService
def self.create_payment(request)
#debugger
price_in_egp = request.initial_price
output = CurrencyExchange.convert(price_in_egp*100, 'EGP', 'USD')
price_in_usd = (output.cents/100.0).round(2)
params = {
"intent": "sale",
"redirect_urls": {
"return_url": APP_CONFIG['paypal_return_url'],
"cancel_url": APP_CONFIG['paypal_cancel_url']
},
"payer": {
"payment_method": "paypal"
},
"transactions": [{
"amount": {
"total": price_in_usd,
"currency": "USD"
}
}]
}
response = send_request_post(PAYMENT_URL, params)
JSON.parse(response.body)["id"]
end
def self.execute_payment(payment_id, payer_id)
params = {
payer_id: payer_id
}
response = send_request_post(PAYMENT_URL + '/' + payment_id + '/execute', params)
JSON.parse(response.body)
end
end
答案 4 :(得分:0)
如果您正在寻找Itext7的解决方案,则可以使用方法setTextAlignment(...)
。
示例:
Paragraph preface = new Paragraph();
// add text
preface.setTextAlignment(TextAlignment.CENTER);
答案 5 :(得分:0)
这对我有用(itext 5.0.5):
Paragraph p3= new Paragraph("Hello" );
p3.setAlignment(Element.ALIGN_CENTER);
答案 6 :(得分:0)
我有用于此的搜索解决方案,以将PdfPCell文本对齐到右侧并居中。修改并更改代码顺序后,它就可以工作。
此代码无法使文本居中对齐。
cols = list(df.columns.values)
random.shuffle(cols)
df.columns = cols
使用此代码修改代码后,它现在可以正常工作。
PdfPCell cell = new PdfPCell();
cell.addElement(new Phrase("Testing Page");
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);