小编twp*_*wpc的帖子

iText单元格边框切割文本

我正在编写一个程序,使用iText生成带有表格的pdf或rtf文件.我使用iText类表和单元格,而不是更具体的RtfTable或pdfTable,以便最后生成任一文件.我需要将单元格填充设置为值-1,否则打印页面上每行数据之间的空间太大.但是,我现在正在尝试添加边框(特别是pdf文件),并且单元格没有与文本对齐.每个单元格的底部边框直接切割文本.当单元格填充设置为2或更高时,它实际上仅包围文本.以下是我正在做的事情的示例:

  Document document = new Document();
  Paragraph paragraph = new Paragraph();
  Font iTextFont = new Font(Font.TIMES_ROMAN, 9, Font.NORMAL);
  try{
    PdfWriter.getInstance(document, new FileOutputStream("C:/datafiles/TestiText.pdf"));
    document.open();

    Table table = new Table(3);
    table.setPadding(-1);
    table.setWidth(90);
    Cell cell1 = new Cell();
    cell1.setBorder(Rectangle.BOX);
    cell1.setVerticalAlignment(ElementTags.ALIGN_TOP);
    table.setDefaultCell(cell1);
    paragraph = new Paragraph("header", iTextFont);
    Cell cell = new Cell(paragraph);
    cell.setHeader(true);
    cell.setColspan(3);
    table.addCell(cell);
    paragraph = new Paragraph("example cell", iTextFont);
    table.addCell(paragraph);
    paragraph = new Paragraph("one", iTextFont);
            table.addCell(cell);
    paragraph = new Paragraph("two", iTextFont);
    cell = new Cell(paragraph);
    table.addCell(paragraph);
    paragraph = new Paragraph("Does this start …
Run Code Online (Sandbox Code Playgroud)

java border itext spacing

25
推荐指数
1
解决办法
9698
查看次数

当第二个表中不需要数据时,JOIN的效率是否比EXISTS IN更高/更低?

我需要查看所有订单的家庭.我根本不关心订单的数据,只是它存在.(使用SQL Server)

说这样的话更有效率:

SELECT HouseholdID, LastName, FirstName, Phone 
FROM Households 
INNER JOIN Orders ON Orders.HouseholdID = Households.HouseholdID
Run Code Online (Sandbox Code Playgroud)

或这个:

SELECT HouseholdID, LastName, FirstName, Phone 
FROM Households 
WHERE EXISTS 
    (SELECT HouseholdID 
     FROM Orders 
     WHERE Orders.HouseholdID = Households.HouseholdID)
Run Code Online (Sandbox Code Playgroud)

sql sql-server join

6
推荐指数
1
解决办法
1322
查看次数

Java图像缩放

我正在使用iText将图像输出到PDF文件.图像总是看起来比它们应该的大.根据这本书(iText in Action),这是因为iText总是以72 dpi的分辨率显示图像,而不管图像的实际dpi属性是什么.本书建议使用image.getDpiX()来查找图像的dpi,然后使用image.scalePercent(72/actualDpi*100)正确显示图像.到目前为止,我所有图像的getDpiX()属性都返回0(我已经尝试了2个GIF和1个jpg).有没有其他方法可以找出实际的DPI,以便我的图像正确缩放?

com.lowagie.text.Image graphic = com.lowagie.text.Image.getInstance(imgPath);
float actualDpi = graphic.getDpiX();
if (actualDpi > 0)
  //Never gets here
  graphic.scalePercent(72f / actualDpi * 100);
Run Code Online (Sandbox Code Playgroud)

java image itext

6
推荐指数
1
解决办法
5829
查看次数

PdfpTable与表(对比SimpleTable?)

我正在编写生成PDF和RTF文档的代码,具体取决于用户的选择.两份文件中的信息是相同的.

到目前为止,我们使用的是Table,Cell,HeaderFooter等类,它们由文档编写者(PdfWriter或RtfWriter2)呈现为正确的形式.

然而,我进一步尝试进行更改(主要是因为升级到iText 2.1使间距有点古怪),我被告知"使用PdfpTable"或"使用pageEvents设置标题"越多.似乎很多泛型类都被弃用了.

我正在考虑修改代码以分离PDF和RTF的表创建.但是,所有iText教程似乎都建议在需要PDF和RTF文档的实例中使用Table.

另外,看起来虽然有一个PdfpTable类,但RTF没有类似的东西,所以我还是会使用Table,这会让我容易受到现在不支持的Table类所带来的所有怪癖的影响.

基本上,将代码分成两个部分的好处/缺点是什么 - 一个用于创建PDF文档,另一个用于以RTF格式创建相同的文档(如果已选择)?SimpleTable在哪里可以实现这一切?它会给我我需要的灵活性吗?

谢谢!

itext

2
推荐指数
1
解决办法
3307
查看次数

Visual Basic - 如何强制事件触发

我是VB的新手(实际上是使用VBA),我想强迫事件发生.具体来说,我正在更新文本框中的值,我想调用该文本框的AfterUpdate()事件.

Private Sub cmdCreateInvoice_Click()
  Me.txtInvDate = '11/01/10'
  Me.txtInvDate.AfterUpdate
End Sub
Run Code Online (Sandbox Code Playgroud)

在运行时,我收到一条错误,上面写着"编译错误:无效使用属性".如果我尝试类似的东西,但使用click事件(例如:cmdCreateInvoice.Click),它没有共享名称的属性,我收到一条错误,上面写着"编译错误:找不到方法或数据成员".
我知道必须有办法从另一个事件中解雇一个事件.但是正确的语法是什么?谢谢!

vba event-handling

1
推荐指数
1
解决办法
3万
查看次数

这两段代码之间是否存在性能差异?

这两段代码之间是否存在性能差异?我的直觉是第二个选项比较慢,因为每次必须构建Cell对象,但我喜欢返回Cell的想法.

方案一:

//Call to method
initiTextDefaultCell(borders);
iTextTable.setDefaultCell(iTextDefaultCell);
//Other code...

private void initiTextDefaultCell(boolean borders) {
  if (!borders)
    iTextDefaultCell.setBorder(Rectangle.NO_BORDER);
  else 
    iTextDefaultCell.setBorder(Rectangle.BOX);
}
Run Code Online (Sandbox Code Playgroud)

方案二:

//Call to method
iTextTable.setDefaultCell(initiTextDefaultCell(borders));
//Other code...

private Cell initiTextDefaultCell(boolean borders) {
  Cell iTextDefaultCell = new Cell();
  if (!borders)
    iTextDefaultCell.setBorder(Rectangle.NO_BORDER);
  else 
    iTextDefaultCell.setBorder(Rectangle.BOX);
  return iTextDefaultCell;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

java performance

0
推荐指数
1
解决办法
306
查看次数

标签 统计

itext ×3

java ×3

border ×1

event-handling ×1

image ×1

join ×1

performance ×1

spacing ×1

sql ×1

sql-server ×1

vba ×1