use of com.itextpdf.text.pdf.PdfContentByte in project gephi by gephi.
the class PDFRenderTargetBuilder method buildRenderTarget.
@Override
public RenderTarget buildRenderTarget(PreviewModel previewModel) {
CanvasSize cs = previewModel.getGraphicsCanvasSize();
PreviewProperties properties = previewModel.getProperties();
float marginBottom = properties.getFloatValue(PDFTarget.MARGIN_BOTTOM);
float marginLeft = properties.getFloatValue(PDFTarget.MARGIN_LEFT);
float marginRight = properties.getFloatValue(PDFTarget.MARGIN_RIGHT);
float marginTop = properties.getFloatValue(PDFTarget.MARGIN_TOP);
com.itextpdf.text.Rectangle pageSize = properties.getValue(PDFTarget.PAGESIZE);
boolean landscape = properties.getBooleanValue(PDFTarget.LANDSCAPE);
PdfContentByte cb = properties.getValue(PDFTarget.PDF_CONTENT_BYTE);
PDFRenderTargetImpl renderTarget = new PDFRenderTargetImpl(cb, cs, pageSize, marginLeft, marginRight, marginTop, marginBottom, landscape);
return renderTarget;
}
use of com.itextpdf.text.pdf.PdfContentByte in project summer-bean by cn-cerc.
the class Barcode128Template method output.
@Override
public void output(Document document, PdfWriter writer) throws DocumentException, IOException {
PdfContentByte cb = writer.getDirectContent();
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
// 设置中文字体和字体样式
Font f8 = new Font(bfChinese, fontSize, Font.NORMAL);
DataSet dataSet = this.getDataSet();
dataSet.first();
while (dataSet.fetch()) {
// 条码信息
Barcode128 code128 = new Barcode128();
code128.setBarHeight(barHeight);
String code = dataSet.getString("Code_");
code128.setCode(code);
// 反算条码宽度
int length = code.length();
float x = 125 / ((length + 2) * 11 + 2f);
code128.setX(x);
document.add(code128.createImageWithBarcode(cb, null, null));
// 描述信息
Paragraph paragraph = new Paragraph(dataSet.getString("Name_"), f8);
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
}
}
use of com.itextpdf.text.pdf.PdfContentByte in project summer-bean by cn-cerc.
the class BarcodeTemplate method output.
@Override
public void output(Document document, PdfWriter writer) throws DocumentException, IOException {
PdfContentByte cb = writer.getDirectContent();
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
// 设置中文字体和字体样式
Font f8 = new Font(bfChinese, fontSize, Font.NORMAL);
DataSet dataSet = this.getDataSet();
dataSet.first();
while (dataSet.fetch()) {
// 商品名称
if (dataSet.getCurrent().hasValue("Name_"))
document.add(new Paragraph(dataSet.getString("Name_"), f8));
// 商品条码
BarcodeEAN codeEAN = new BarcodeEAN();
codeEAN.setBarHeight(barHeight);
codeEAN.setCode(dataSet.getString("Code_"));
document.add(codeEAN.createImageWithBarcode(cb, null, null));
codeEAN.setGuardBars(false);
}
}
use of com.itextpdf.text.pdf.PdfContentByte in project summer-bean by cn-cerc.
the class ReportHeaderFooter method onEndPage.
public void onEndPage(PdfWriter writer, Document document) {
Font f8 = null;
try {
if (bf == null)
bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
if (fontDetail == null)
// 数据体字体
fontDetail = new Font(bf, presentFontSize, Font.NORMAL);
if (f8 == null)
f8 = new Font(bf, 8);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 1.写入页眉
Phrase phrase = new Phrase(header, f8);
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_RIGHT, phrase, document.right(), document.top() + 20, 0);
// 2.写入前半部分的 第 X页/共
int pageS = writer.getPageNumber();
String foot1 = "第 " + pageS + " 页 /共";
Phrase footer = new Phrase(foot1, fontDetail);
// 3.计算前半部分的foot1的长度,后面好定位最后一部分的'Y页'这俩字的x轴坐标,字体长度也要计算进去 = len
float len = bf.getWidthPoint(foot1, presentFontSize);
// 4.拿到当前的PdfContentByte
PdfContentByte cb = writer.getDirectContent();
// 5.写入页脚1,x轴就是(右margin+左margin + right() -left()- len)/2.0F
// 再给偏移20F适合人类视觉感受,否则肉眼看上去就太偏左了
// ,y轴就是底边界-20,否则就贴边重叠到数据体里了就不是页脚了;注意Y轴是从下往上累加的,最上方的Top值是大于Bottom好几百开外的。
ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, footer, (document.rightMargin() + document.right() + document.leftMargin() - document.left() - len) / 2.0F + 20F, document.bottom() - 20, 0);
// 6.写入页脚2的模板(就是页脚的Y页这俩字)添加到文档中,计算模板的和Y轴,X=(右边界-左边界 - 前半部分的len值)/2.0F +
// len , y 轴和之前的保持一致,底边界-20
cb.addTemplate(total, (document.rightMargin() + document.right() + document.leftMargin() - document.left()) / 2.0F + 20F, // 调节模版显示的位置
document.bottom() - 20);
}
use of com.itextpdf.text.pdf.PdfContentByte in project trainning by fernandotomasio.
the class TCATrainningDocumentODF method createPrincipal.
private void createPrincipal(String file) {
try {
PdfReader reader = new PdfReader(file);
PdfPTable t1 = new PdfPTable(2);
int n = reader.getNumberOfPages();
PdfImportedPage page;
for (int i = 1; i <= n; i++) {
page = writer.getImportedPage(reader, i);
// Image imagePage = Image.getInstance(page);
// imagePage.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight());
PdfContentByte cb = writer.getDirectContent();
cb.addTemplate(page, 0, 0);
document.newPage();
// document.add(imagePage);
}
} catch (IOException ex) {
Logger.getLogger(TCATrainningDocumentODF.class.getName()).log(Level.SEVERE, null, ex);
}
}
Aggregations