如何使用iText添加PAdES-LTV

我试图在没有LTV格式的已签名PDF文档中启用LTV。 我在所有情况下都找到了相同的示例,如链接中所述如何为时间戳签名启用LTV , 启用iText LTV – 如何添加更多CRL? ,它定义了获得预期结果的程序。 碰巧我不工作,它没有给我任何错误,但我没有添加LTV。 一些想法为什么在执行以下代码时没有给我任何错误但是我不添加LTV。 这是我尝试添加LTV的方法: public void addLtv(String src, String dest, OcspClient ocsp, CrlClient crl, TSAClient tsa) throws IOException, DocumentException, GeneralSecurityException { PdfReader r = new PdfReader(src); FileOutputStream fos = new FileOutputStream(dest); PdfStamper stp = PdfStamper.createSignature(r, fos, ‘\0’, null, true); LtvVerification v = stp.getLtvVerification(); AcroFields fields = stp.getAcroFields(); List […]

为什么增强的for循环比循环的正常更有效

我读到增强的for循环比这里的for循环更有效: http://developer.android.com/guide/practices/performance.html#foreach 当我搜索它们的效率之间的差异时,我发现的是:在正常for循环的情况下,我们需要额外的步骤来找出数组的长度或大小等, for(Integer i : list){ …. } int n = list.size(); for(int i=0; i < n; ++i){ …. } 但这是唯一的原因,增强的for循环优于正常的循环吗? 在这种情况下,更好地使用normal for循环,因为理解增强的for循环有点复杂。 检查一个有趣的问题: http : //www.coderanch.com/t/258147/java-programmer-SCJP/certification/Enhanced-Loop-Vs-Loop 任何人都可以解释这两种for循环的内部实现,或解释使用增强型for循环的其他原因吗?

如何在有密度扫描仪等可用空间的pdf上插入图像或图章

我有一个pdf文件在哪里我在它的所有页面上添加一个标记。 但问题是,邮票被添加到每个页面的左上角。 如果页面在该部分中有文本,则标记将显示在文本上。 我的问题是,是否有任何方法可以读取每个页面,如果该部分中没有文本添加标记,则搜索最近的可用空间,就像密度扫描仪一样? 我正在使用IText和Java 1.7。 自由空间fider类和距离计算function与接受的答案中的相同。 以下是我正在使用的编辑代码: // The resulting PDF file String RESULT = “K:\\DCIN_TER\\DCIN_EPU2\\CIRCUIT FROM BRANCH\\RAINBOW ORDERS\\” + jtfSONo.getText().trim() + “\\PADR Release\\Final PADR Release 1.pdf”; // Create a reader PdfReader reader = new PdfReader(“K:\\DCIN_TER\\DCIN_EPU2\\CIRCUIT FROM BRANCH\\RAINBOW ORDERS\\” + jtfSONo.getText().trim() + “\\PADR Release\\Final PADR Release.pdf”); // Create a stamper PdfStamper stamper = new […]

如何在Java中进行2D阴影投射?

我正在尝试按照本教程在Java中实现2D阴影投射方法: http : //ncase.me/sight-and-light/ 我想坚持使用Line2D和Polygon对象。 到目前为止,这是我的代码的主要部分: for (Polygon p : Quads.polygons) { for (int i = 0; i < p.npoints; i++) { osgCtx.setStroke(new BasicStroke(0.1f)); Line2D line = new Line2D.Double(mousePos.getX(), mousePos.getY(), p.xpoints[i], p.ypoints[i]); osgCtx.draw(line); } osgCtx.setStroke(new BasicStroke(1.0f)); osgCtx.draw(p); } 结果如下: 当涉及到构建线的参数forms时,我感到困惑。 我不知道如何用Java的方法实现数学。 有人能指出我在正确的方向,代码方面,实现这一点?

具有多个参数的JPA Criteria API

我需要创建一个使用带有多个参数的JPA Criteria API的搜索方法。 现在问题是不是每个参数都是必需的。 因此有些可能为null,并且它们不应包含在查询中。 我已经用CriteriaBuilder尝试了这个,但我看不出如何让它工作。 使用Hibernate Criteria API,这非常简单。 只需创建条件,然后添加限制。 Criteria criteria = session.createCriteria(someClass.class); if(someClass.getName() != null) { criteria.add(Restrictions.like(“name”, someClass.getName()); } 我怎么能用JPA的Criteria API实现同样的目标?

测量代码段的Java执行时间,内存使用和CPU负载

对于特定的Java代码段,我想测量: 执行时间(很可能是线程执行时间 ) 内存使用情况 CPU负载(特别是可归因于代码段) 我是相对Java的新手,并不熟悉如何实现这一点。 我已经被提到了JMX ,但是我不确定如何使用JMX,JMX看起来有点“重”我正在做什么。 理想情况下,我想要一些可以告诉我想测量的测量类,可以选择在代码段之前调用start()方法,然后调用stop()方法。 相关指标将记录到我指定的文件中。 例如: import com.example.metricLogger; metricLogger logger = new metricLogger(); logger.setLogPath(pathToLogFile); logger.monitor(executionTime); logger.monitor(memoryUsage); logger.monitor(cpuLoad); logger.start(); /* Code to be measured */ logger.stop(); 在Java中是否有任何标准/通用/传统方式来实现这一目标? 这些测量用于一次性性能比较,因此我不会寻找任何生产中的长期监测过程。 我很高兴被引用到教程或外部示例,并且不希望在这里得到完整答案。 也就是说,如果能够实现上述任何简单的事情,那么一个现实的例子就会非常顺利。

使用bouncycastle签署和validation签名的正确方法

我使用bcmail-jdk16-1.46.jar和bcprov-jdk16-1.46.jar (Bouncycastle库)来签名string ,然后validationsignature 。 这是我签署string code : package my.package; import java.io.FileInputStream; import java.security.Key; import java.security.KeyStore; import java.security.PrivateKey; import java.security.Security; import java.security.Signature; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import org.bouncycastle.cert.jcajce.JcaCertStore; import org.bouncycastle.cms.CMSProcessableByteArray; import org.bouncycastle.cms.CMSSignedData; import org.bouncycastle.cms.CMSSignedDataGenerator; import org.bouncycastle.cms.CMSTypedData; import org.bouncycastle.cms.jcajce.JcaSignerInfoGeneratorBuilder; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.operator.ContentSigner; import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; import org.bouncycastle.util.Store; import sun.misc.BASE64Encoder; public class SignMessage { […]

在PostgreSQL JDBC中设置模式似乎不起作用

我用表“user”创建了模式“customer1”,我正在尝试使用Connection.setSchema()从JDBC连接它: String url = “jdbc:postgresql://localhost/project”; Properties props = new Properties(); props.setProperty(“user”, “postgres”); props.setProperty(“password”, “postgres”); try (Connection conn = DriverManager.getConnection(url, props)) { conn.setSchema(“customer1”); try (Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(“SHOW search_path”)) { rs.next(); System.out.println(“search_path: ” + rs.getString(1)); } try (Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(“SELECT name FROM user LIMIT 1”)) { if […]

如何使用Java 8 DateTimeFormatter更改解析两个字母年份的基准日期?

如果我使用像d/M/yy这样的模式来创建Java 8 DateTimeFormatter(例如使用DateTimeFormatter.ofPattern(pattern); (我将只用于解析,而不是格式化),它会将所有两个字母的年份解释为20xx例如解析像13/5/99这样的字符串被解释为2099-05-13 ,在我的情况下是错误的(它本来是在1999年)。 在我的应用程序中,我正在尝试从OCR文档中解析日期,这可能仍然是从90年代开始的,所以使用旧的SimpleDateFormat行为将日期解释为在当前日期之前和之后的20年之内我很好。 但由于各种原因,我仍然希望将整个日期解析逻辑切换到新的Java 8 DateTimeFormatters。 浏览Java源代码,我发现这都是相对于常量ReducedPrinterParser.BASE_DATE解释的,但我认为无法更改从模式构建自己的格式化程序时使用的值。 这是不可能的,还是我错过了指定解析两个字母年份的行为的可能性?

如何用java连接远程mysql数据库?

我正在尝试使用Eclipse IDE创建一个JSF应用程序。 我使用远程mySQL服务器作为我的数据库。 如何连接到此远程数据库以创建表并访问它们?