반응형
PDF에 빈 줄을 삽입하는 방법은 무엇입니까?
iText를 사용하여 PDF를 만들고 있습니다. 단락과 표 사이에 빈 줄을 삽입하고 싶습니다.
이것을 어떻게 달성 할 수 있습니까?
Chunk.NEWLINE
문서 에 삽입하여 개행을 트리거 할 수 있습니다 . 여기에 예가 있습니다.
public static void main(String args[]) {
try {
// create a new document
Document document = new Document( PageSize.A4, 20, 20, 20, 20 );
PdfWriter.getInstance( document, new FileOutputStream( "HelloWorld.pdf" ) );
document.open();
document.add( new Paragraph( "Hello, World!" ) );
document.add( new Paragraph( "Hello, World!" ) );
// add a couple of blank lines
document.add( Chunk.NEWLINE );
document.add( Chunk.NEWLINE );
// add one more line with text
document.add( new Paragraph( "Hello, World!" ) );
document.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
아래는 위 코드가 생성하는 PDF의 일부를 보여주는 스크린 샷입니다.
테이블 사이에 빈 줄을 삽입하려면이 두 가지 방법을 모두 사용할 수 있습니다.
table.setSpacingBefore();
table.setSpacingAfter();
단락에 "\ n"을 사용할 수 있습니다.
document.add(new Paragraph("\n\n"));
빈 문구를 사용해 볼 수 있습니다.
document.add(new Phrase("\n"));
you can add Blank Line threw PdfContentByte class in itextPdf
package com.pdf.test;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
public class Ranvijay {
public static final String RESULT = "d:/printReport.pdf";
public void createPdf(String filename) throws Exception {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream(filename));
document.open();
Font bold = new Font(Font.FontFamily.HELVETICA, 8f, Font.BOLD);
Font normal = new Font(Font.FontFamily.HELVETICA, 8f, Font.NORMAL);
PdfPTable tabletmp = new PdfPTable(1);
tabletmp.getDefaultCell().setBorder(Rectangle.NO_BORDER);
tabletmp.setWidthPercentage(100);
PdfPTable table = new PdfPTable(2);
float[] colWidths = { 45, 55 };
table.setWidths(colWidths);
String imageUrl = "http://ssl.gstatic.com/s2/oz/images/logo/2x/googleplus_color_33-99ce54a16a32f6edc61a3e709eb61d31.png";
Image image2 = Image.getInstance(new URL(imageUrl));
image2.setWidthPercentage(60);
table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.getDefaultCell().setVerticalAlignment(Element.ALIGN_TOP);
PdfPCell cell = new PdfPCell();
cell.setBorder(Rectangle.NO_BORDER);
cell.addElement(image2);
table.addCell(cell);
String email = "ranvijay9286@gmail.com";
String collectionDate = "09/09/09";
Chunk chunk1 = new Chunk("Date: ", normal);
Phrase ph1 = new Phrase(chunk1);
Chunk chunk2 = new Chunk(collectionDate, bold);
Phrase ph2 = new Phrase(chunk2);
Chunk chunk3 = new Chunk("\nEmail: ", normal);
Phrase ph3 = new Phrase(chunk3);
Chunk chunk4 = new Chunk(email, bold);
Phrase ph4 = new Phrase(chunk4);
Paragraph ph = new Paragraph();
ph.add(ph1);
ph.add(ph2);
ph.add(ph3);
ph.add(ph4);
table.addCell(ph);
tabletmp.addCell(table);
PdfContentByte canvas = writer.getDirectContent();
canvas.saveState();
canvas.setLineWidth((float) 10 / 10);
canvas.moveTo(40, 806 - (5 * 10));
canvas.lineTo(555, 806 - (5 * 10));
canvas.stroke();
document.add(tabletmp);
canvas.restoreState();
PdfPTable tabletmp1 = new PdfPTable(1);
tabletmp1.getDefaultCell().setBorder(Rectangle.NO_BORDER);
tabletmp1.setWidthPercentage(100);
document.add(tabletmp1);
document.close();
}
/**
* Main method.
*
* @param args
* no arguments needed
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args) throws Exception {
new Ranvijay().createPdf(RESULT);
System.out.println("Done Please check........");
}
}
document.add(new Paragraph(""))
위에서는 비효율적이며 다음과 같이 빈 문자열을 추가해야합니다.
document.add(new Paragraph(" "));
빈 줄을 추가 할 수 있습니다.
Paragraph p = new Paragraph();
// add one empty line
addEmptyLine(p, 1);
// add 3 empty line
addEmptyLine(p, 3);
private static void addEmptyLine(Paragraph paragraph, int number) {
for (int i = 0; i < number; i++) {
paragraph.add(new Paragraph(" "));
}
}
사용하는 대신:
document.add( Chunk.NEWLINE );
이것을 사용하십시오 :
document.add(new Paragraph(""));
그것은 작은 공간을 만든다
나는 테이블 뒤에 빈 줄을 추가해야했고 패딩 탑이있는 CSS 스타일로 필요에 따라 많은 div를 추가하여 관리합니다. 추가해야 할 줄 수를 반복하기 위해 템플릿 엔진 (밑줄)을 사용했습니다.
<% var maxRow = 30; var pos = items.models.length; %>
<% for( pos; pos < maxRow; pos++ ){ %>
<div class="blankRow"></div>
<% }; %>
내 CSS 파일 :
.blankRow:{ padding-top: 15px;}
도움이 되었기를 바랍니다.
당신은 또한 사용할 수 있습니다
document.add(new Paragraph());
document.add(new Paragraph());
둘 중 하나를 사용하는 경우 분리기 전에 괜찮습니다.
나는 이것을 다른 질문에 게시했지만 iTextSharp와 함께 테이블을 사용하면 높은 수준의 정밀도를 제공한다는 것을 알았습니다.
document.Add(BlankLineDoc(16));
public static PdfPTable BlankLineDoc(int height)
{
var table = new PdfPTable(1) {WidthPercentage = 100};
table = BlankLineTable(table, height);
return table;
}
public static PdfPTable BlankLineTable(PdfPTable table, int height, int border = Rectangle.NO_BORDER)
{
var cell = new PdfPCell(new Phrase(" "))
{
Border = border,
Colspan = table.NumberOfColumns,
FixedHeight = height
};
table.AddCell(cell);
return table;
}
BlankLineTable은 테이블 작업시 직접 사용할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/4158336/how-to-insert-blank-lines-in-pdf
반응형
'IT Share you' 카테고리의 다른 글
IList를 목록으로 캐스팅 (0) | 2020.12.06 |
---|---|
Linux SUSE 또는 RedHat에서 Python 2.7을로드하는 방법 (0) | 2020.12.06 |
동일한 키를 가진 개체가 ObjectStateManager에 이미 있습니다. (0) | 2020.12.06 |
대화 상자가 1 초 동안 실행되고 사라집니다. (0) | 2020.12.06 |
symfony2 : 캐시 디렉토리를 쓰지 못했습니다. (0) | 2020.12.06 |