Как нарисовать границы для целых страниц PDF с помощью библиотеки iText 5.5.2
Как уже упоминалось в заголовке, как нарисовать границу цветом «КРАСНЫЙ», ширина по ширине 5 для всех сгенерированных страниц PDF с использованием библиотеки iText. Я попробовал несколько кодов, но не получил результата.
(1)
PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(99);
table.setLockedWidth(true);
PdfPCell cell = new PdfPCell();
cell.setFixedHeight(PageSize.A4.getHeight());
document.add(table);
(2)
PdfContentByte content = PdfWriter.getInstance(document, fout).getDirectContent();
Rectangle pageRect = document.getPageSize();
pageRect.setLeft(pageRect.getLeft() + 10);
pageRect.setRight(pageRect.getRight() - 10);
pageRect.setTop(pageRect.getTop() - 10);
pageRect.setBottom(pageRect.getBottom() +10);
content.setColorStroke( BaseColor.BLUE);
content.rectangle(pageRect.getLeft(), pageRect.getBottom(), pageRect.getWidth(), pageRect.getHeight());
content.setLineWidth(10);
content.stroke();
content.fillStroke();
Эти методы не дают мне результата, спасибо!
редактироватьЯ изменил свои методы также благодаря Бруно Лоуаги за его ответ. пример работал как шарм, но я не мог вписать его в свой код.
Вот мой код: нажатием кнопки файл PDF генерируется по указанному адресу. Я добавлю больше контента позже, но теперь давайте продолжим создавать файлы PDF.
SaveToSD = (Button)findViewById(R.id.SaveToMemoryCard_xml);
SaveToSD.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View sssdd)
{
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ConcreteProject";
File dir = new File(path);
if (!dir.exists())
dir.mkdirs();
Log.d("PDFCreator", "PDF Path: " + path);
// Incremental Process of Creating File(s).
String pdfName = "SDG_Created_pdf.pdf";
int num = 0;
File file = new File(dir, pdfName);
while (file.exists()) {
num++;
pdfName = "SDG_Created_pdf" + num + ".pdf";
file = new File(dir, pdfName);
}
try {
new ConAccept_Result().createPdf(pdfName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}//End Of onClick(View sssdd).
});
А вот определения метода / класса:
public class RedBorder extends PdfPageEventHelper {
@Override
public void onEndPage(PdfWriter writer, Document document) {
PdfContentByte canvas = writer.getDirectContent();
Rectangle rect = document.getPageSize();
rect.setBorder(Rectangle.BOX); // left, right, top, bottom border
rect.setBorderWidth(5); // a width of 5 user units
rect.setBorderColor(BaseColor.RED); // a red border
rect.setUseVariableBorders(true); // the full width will be visible
canvas.rectangle(rect);
}
}
public void createPdf(String stringfile) throws IOException, DocumentException {
// step 1
com.itextpdf.text.Document document = new com.itextpdf.text.Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(stringfile));
RedBorder event = new RedBorder();
writer.setPageEvent(event);
// step 3
document.open();
// step 4
Chunk chunk = new Chunk("Lovin' iText - Lovin' iText");
chunk.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE, 0.3f, BaseColor.CYAN);
document.add(chunk);
// step 5
document.close();
}
После запуска приложения, папка, которую я назвал, создана, но нет файла PDF!
Большое спасибо..