小编men*_*ith的帖子

在iText中的JavaScript操作中搜索PDF以查找特定字符串

我的目标是在PDF中的注释中查找给定模式的JavaScript.为此,我提供了以下代码:

public static void main(String[] args) {

        try {

            // Reads and parses a PDF document
            PdfReader reader = new PdfReader("Test.pdf");

            // For each PDF page
            for (int i = 1; i <= reader.getNumberOfPages(); i++) {

                // Get a page a PDF page
                PdfDictionary page = reader.getPageN(i);
                // Get all the annotations of page i
                PdfArray annotsArray = page.getAsArray(PdfName.ANNOTS);

                // If page does not have annotations
                if (page.getAsArray(PdfName.ANNOTS) == null) {
                    continue;
                }

                // For each annotation
                for (int j …
Run Code Online (Sandbox Code Playgroud)

pdf itext

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

lambda表达式中的Else子句

我使用以下lambda表达式迭代PDF文件.

public static void run(String arg) {

        Path rootDir = Paths.get(arg);
        PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:**.pdf");
        Files.walk(rootDir)
                .filter(matcher::matches)
                .forEach(Start::modify);
    }

    private static void modify(Path p) {
        System.out.println(p.toString());
    }
Run Code Online (Sandbox Code Playgroud)

这部分.forEach(Start::modify);从lambda表达式所在的同一个类执行static方法修改.else当没有找到PDF文件时,是否有可能添加类似子句的内容?

java lambda

6
推荐指数
2
解决办法
176
查看次数

如何获取PDF文件中链接的目标页面?

使用iText我们可以轻松更改链接的缩放级别.甚至还有一段代码可以为GoTo目标类型执行此操作.如需便利,请在下面找到.

PdfReader reader = new PdfReader(src);
        PdfDictionary page = reader.getPageN(11);
        PdfArray annots = page.getAsArray(PdfName.ANNOTS); 
        for (int i = 0; i < annots.size(); i++) {
            PdfDictionary annotation = annots.getAsDict(i);
            if (PdfName.LINK.equals(annotation.getAsName(PdfName.SUBTYPE))) {
                PdfArray d = annotation.getAsArray(PdfName.DEST);
                if (d != null && d.size() == 5 && PdfName.XYZ.equals(d.getAsName(1)))
                    d.set(4, new PdfNumber(0));
            }
        }
Run Code Online (Sandbox Code Playgroud)

该代码仅处理PDF文件中找到的目标类型之一.我有兴趣在其他类型的目的地中更改缩放(如果有人想知道,它们会在32000-1中列出).具体来说,我想更改每个目的地以GoTo键入并指定我自己的坐标.我希望左坐标与要跳转的页面的页面高度相同.要做到这一点,我显然需要页码.我怎么得到它?

到目前为止我做了什么?该指令PdfArray d = annotation.getAsArray(PdfName.DEST)给出了一个数组,其第一个(0基)元素是页面引用,而不是页面编号,如Bruno Lowagie在他的iText in Action, 2nd edition, p. 202). The array looks like this:[1931 0 …

java itext

5
推荐指数
1
解决办法
347
查看次数

使用泛型避免未经检查的转换

我想学习更多关于泛型的知识,为此我决定编写一个简单的应用程序.它允许使用检索所有实体的列表CriteriaQuery.

首先,我尝试使用type parameter(T)来生成代码.但是,我的代码甚至不会编译.为什么?

private static <T> List<T> retrieveAllT(Session session, 
    CriteriaBuilder criteriaBuilder, T t) {
        CriteriaQuery<t> query = criteriaBuilder.createQuery(t);
        Root root = query.from(t);
        query.select(root);
        return session.createQuery(query).getResultList();
    }
Run Code Online (Sandbox Code Playgroud)

我想出了另一个解决方案.它工作正常,但编译器告诉我有关未经检查的强制转换.我理解其中的原因,但我想知道是否有可能以更优雅的方式编写这段代码(即没有未经检查的转换)?如果是这样,我该怎么做?

private static List<?> retrieveAll(Session session,
    CriteriaBuilder criteriaBuilder, Class clazz) {
        CriteriaQuery query = criteriaBuilder.createQuery(clazz);
        Root root = query.from(clazz);
        query.select(root);
        return session.createQuery(query).getResultList();
    }
Run Code Online (Sandbox Code Playgroud)

可以肯定的是,我知道@SuppressWarnings("unchecked").

java generics

5
推荐指数
1
解决办法
102
查看次数

如何使用JNA(Java)为活动窗口获取X11 WM_CLASS?

我使用以下代码来获取Linux中的当前(焦点)窗口:

X11 x11 = X11.INSTANCE;
X11.Display display = x11.XOpenDisplay(null);
X11.Window window = x11.XDefaultRootWindow(display);
Run Code Online (Sandbox Code Playgroud)

现在,我想获取WM_CLASS此窗口的属性。

设置和读取WM_CLASS属性中,有一段显示了如何执行此操作:

若要读取窗口的WM_CLASS属性,请使用XGetClassHint()。

XClassHint包含:

typedef struct {

字符* res_name;

char * res_class;

} XClassHint;

但是,当我们查看X11.XWMHints(JNA API)时,我们看到没有这样的属性res_class(即WM_CLASS)。

那么,如何获取WM_CLASS当前窗口的属性?

java x11 jna

5
推荐指数
1
解决办法
212
查看次数

正则表达式:将所有内容匹配到最后一个空格而不包含它

我想将字符串中的所有内容匹配到最后一个空格,但不包括它。为了举例,我想匹配以粗体显示的字符:

雷纳塔·格罗查

到目前为止,我有,^(.+\s)(.+)但是它与最后一个空格匹配,我不希望这样。正像我一样,RegEx也可以使用英语以外的其他语言。

编辑:我没有提到的第二个捕获组不应该包含空间-它应该是GROCHALGROCHAL与前一个空间。

编辑2:基于两个答案提供的新RegEx是:^((.+)(?=\s))\s(.+)用于替换匹配项的RegEx是\3, \1。它可以达到预期的结果:

GROCHAL, RENATa T.
Run Code Online (Sandbox Code Playgroud)

任何改进都是可取的。

regex autohotkey

4
推荐指数
2
解决办法
2365
查看次数

如何在 JavaScript 中检索元属性 og 的内容?

我在 HTML 代码中有以下内容:

<meta name="citation_journal_title" content="Psychological Bulletin" />
Run Code Online (Sandbox Code Playgroud)

使用以下方法很容易获取内容:

document.getElementsByName("citation_journal_title")[0].getAttribute("content")
Run Code Online (Sandbox Code Playgroud)

但是,我无法处理这个:

<meta property="og:site_name" content="APA PsycNET" />
Run Code Online (Sandbox Code Playgroud)

你如何检索 的内容og:site_name?我知道 如何使用 javascript 从元标记中获取信息? 但我正在寻找一些非常简单的东西

document.getElementsByName("citation_journal_title")[0].getAttribute("content")
Run Code Online (Sandbox Code Playgroud)

html javascript jquery attributes selector

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

删除最后括号中的所有内容

我想删除所有括号,()如果(且仅当)它们位于末尾并且不匹配以下模式\(\d{4}\p{Pd}\d{4}\) *。该模式只不过是括号中的日期范围,例如。(1920-2988)

例如,我想匹配/捕获(用于删除,即string.replaceAll(my_regex_here, "")):

  • 富酒吧(blah)

  • foo bar(废话)废话(blah)

我不喜欢匹配:

  • 一些(废话)数据
  • 接下来的某个日期(1920-1921)。

我有以下正则表达式:\s*(.+?)\s*$。它往往会匹配太多:

  • 一些数据(..) match (match)
  • 一些数据(1920-1977)

java regex

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

在条形图上绘制值

我没有使用,r但我最近决定使用它绘制图表 - 因为它具有很强的能力.我想让我的图表更好.具体来说,我会在数字上绘制数字.我看到添加标签到ggplot条形图,我试图使用

geom_text(aes(x=years, y=freq, ymax=freq, label=value, 
                hjust=ifelse(sign(value)>0, 1, 0)), 
            position = position_dodge(width=1)) +
Run Code Online (Sandbox Code Playgroud)

但这些数字未能显示出来.

这是我的代码:

# Load ggplot2 graphics package
library(ggplot2)

# Create dataset
dat <- data.frame(years = c("1991", "1993", "1997", "2001", "2005", "2007", "2011", "2015"),
freq = c(43.20, 52.13, 47.93, 46.29, 40.57, 53.88, 48.92, 50.92))

# Plot dataset with ggplot2
ggplot(dat, aes(years, freq)) + geom_bar(stat = "identity", width=0.55)
+ labs(x="Year",y="") + theme_classic()

# Comma as decimal mark
format(df, decimal.mark=",")
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

自动设置类中的所有字段(私有)

我想知道是否可以将给定类中的所有字段(有一些例外)设置为循环中的某个值.假设我们有一个包含许多字段的类,我们希望不是通过访问器手动填充其值,而是以半自动方式填充.在Java中,有一种方法可以显示给定类中的所有字段.这段代码是这样的:

for (Field field : MyClass.class.getDeclaredFields()) {
    System.out.println(field);
}
Run Code Online (Sandbox Code Playgroud)

还有设置值的方法:

License license = new License();
for (Field field : License.class.getDeclaredFields()) {
   System.out.println(field);
   field.set(license, 99);
}
Run Code Online (Sandbox Code Playgroud)

但是,它失败并出现异常java.lang.IllegalAccessException: can not access a member of class License with modifiers "private.所以我现在想是否可以为给定类中的私有字段设置值.

java

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

标签 统计

java ×6

itext ×2

regex ×2

attributes ×1

autohotkey ×1

generics ×1

ggplot2 ×1

html ×1

javascript ×1

jna ×1

jquery ×1

lambda ×1

pdf ×1

r ×1

selector ×1

x11 ×1