Tag: pdfbox

使用PDFBox绘制透明线条

我想在PDFBox中使用透明线条绘制线条和多边形。 下面是我如何绘制蓝线的示例代码,但我无法想出更改颜色的alpha值。 PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page); PDPageContentStream contentStream = new PDPageContentStream(document, page); contentStream.setStrokingColor(66, 177, 230); contentStream.drawLine(100, 100, 200, 200);

如何使用pdfbox在java的pdf页面上的特定位置绘制字符串?

我有一个pdf坐标(x,y)作为输入。 我需要在给定的输入坐标处绘制一个字符串[例如: – (x,y)=(200,250)]。 我正在使用pdfbox,当我使用下面的方法moveTextPositionByAmount我没有得到确切的位置。即使我尝试使用moveTo()。 请帮我如何在准确的位置画出弦? PDPageContentStream contentStream = new PDPageContentStream(document, page,true,true); contentStream.beginText(); contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); contentStream.moveTextPositionByAmount(xindex, yindex); contentStream.setNonStrokingColor(color); contentStream.drawString(comment); contentStream.stroke(); contentStream.endText(); 谢谢。

PDFBOX相同的流,带有粗体和普通文本

好吧,我一直在使用PDFBox我仍然根本不理解它,但我已阅读文档,使用字体和其他一些地方,但我已经找到了如何从PDF获取文本,它是风格,但我正在创造它,而不是阅读它。 我想做点什么 喜欢: this(在同一行上有粗体和普通文本)。 我一直在使用流: 不确定这是否是帮助我所需的所有代码,因为我刚加入这个项目但是我加入时已经开始了。 如果你能帮助我实现这个代码,或者可以帮助我提供一个可以阅读解决方案的想法或来源,我会感谢大家。 我在这里留下我的代码: public void rCovernoteFooter(PDPageContentStream stream , float x, float y) throws IOException { y = y-20; String currentDate = df1.format(new Date()); String[] issues = constants.issued().split(“/”); String issued = issues[0] + currentDate + issues[1]; y = rText(stream, x, y, 90, 0, 10, issued, null); stream.setFont(PDType1Font.TIMES_ROMAN, 8); y = rText(stream, […]

计算文本的正确宽度

我需要阅读AutoCAD导出到PDF的计划,并使用PDFBox在其上放置一些带有文本的标记。 一切都很好,除了计算文本的宽度,这是在标记旁边写的。 我浏览了整个PDF规范并详细阅读了处理图形和文本的部分,但无济于事。 据我所知,字形坐标空间设置在用户坐标空间的1/1000。 因此,宽度需要按比例放大1000,但它仍然是实际宽度的一小部分。 这就是我正在做的定位文本: float textWidth = font.getStringWidth(marker.id) * 0.043f; contentStream.beginText(); contentStream.setTextScaling(1, 1, 0, 0); contentStream.moveTextPositionByAmount( marker.endX + marker.getXTextOffset(textWidth, fontPadding), marker.endY + marker.getYTextOffset(fontSize, fontPadding)); contentStream.drawString(marker.id); contentStream.endText(); * 0.043f作为一个文档的近似值,但下一个文档失败。 我需要重置除文本矩阵之外的任何其他变换矩阵吗? 编辑:一个完整​​的想法示例项目是在github与测试和示例pdfs: https : //github.com/ascheucher/pdf-stamp-prototype 谢谢你的帮助!

保存的文本字段值在使用PDFBOX生成的PDF中无法正确显示

import java.io.IOException; import javax.swing.text.BadLocationException; import org.apache.pdfbox.cos.COSArray; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSFloat; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.cos.COSString; import org.apache.pdfbox.exceptions.COSVisitorException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.interactive.action.PDAnnotationAdditionalActions; import org.apache.pdfbox.pdmodel.interactive.action.type.PDActionJavaScript; import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDTextbox; import org.junit.Test; public class TestPDTextbox { @Test public void Sample1 () throws IOException, COSVisitorException, BadLocationException { PDDocument doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage(page); […]

如何在java pdfbox中按结果拆分pdf文件

我有一个pdf文件,其中包含60页。 在每一页中,我都使用Apache PDFBOX独特且重复的发票编号。 import java.io.*; import org.apache.pdfbox.pdmodel.*; import org.apache.pdfbox.util.*; import java.util.regex.*; public class PDFtest1 { public static void main(String[] args){ PDDocument pd; try { File input = new File(“G:\\Sales.pdf”); // StringBuilder to store the extracted text StringBuilder sb = new StringBuilder(); pd = PDDocument.load(input); PDFTextStripper stripper = new PDFTextStripper(); // Add text to the StringBuilder […]

如何搜索某些特定的字符串或单词,并在java中的pdf文档中进行坐标

我正在使用Pdfbox从pdf文件中搜索单词(或字符串),我也想知道该单词的坐标。 例如: – 在pdf文件中有一个类似“$ {abc}”的字符串。 我想知道这个字符串的坐标。 我尝试了几个例子,但根据我没有得到结果。 结果它显示了角色的坐标。 这是守则 @Override protected void writeString(String string, List textPositions) throws IOException { for(TextPosition text : textPositions) { System.out.println( “String[” + text.getXDirAdj() + “,” + text.getYDirAdj() + ” fs=” + text.getFontSize() + ” xscale=” + text.getXScale() + ” height=” + text.getHeightDir() + ” space=” + text.getWidthOfSpace() + ” width=” […]

PDFBox LayerUtility – 将图层导入现有PDF

我使用pdfbox来操作PDF内容。 我有一个很大的PDF文件(比如500页)。 我还有一些其他单页PDF文件只包含一个图像,最大每个文件大约8-15kb。 我需要做的是将这些单页pdf导入到大PDF文件的某些页面上。 我已经尝试了pdfbox的LayerUtility,我已经成功了但是它创建了一个非常大的文件作为输出。 在处理之前,源pdf大约是1MB,当添加较小的pdf文件时,大小达到64MB。 有时我需要将两个较小的PDF包含在较大的PDF中。 有没有更好的方法来做到这一点,还是我只是做错了? 在下面发布代码,尝试在单个页面上添加两个图层: … … .. overlayDoc[pCounter] = PDDocument.load(“data\\” + overlay + “.pdf”); outputPage[pCounter] = (PDPage) overlayDoc[pCounter].getDocumentCatalog().getAllPages().get(0); LayerUtility lu = new LayerUtility( overlayDoc[pCounter] ); form[pCounter] = lu.importPageAsForm( bigPDFDoc, Integer.parseInt(pageNo)-1); lu.appendFormAsLayer( outputPage[pCounter], form[pCounter], aTrans, “OVERLAY_”+pCounter ); outputDoc.addPage(outputPage[pCounter]); mOverlayDoc[pCounter] = PDDocument.load(“data\\” + overlay2 + “.pdf”); mOutputPage[pCounter] = (PDPage) mOverlayDoc[pCounter].getDocumentCatalog().getAllPages().get(0); LayerUtility lu2 […]

无法读取跨行突出显示的确切文本

我正在使用PDBox阅读PDF文档中突出显示的内容。 我能够以单行和多个单词的forms阅读突出显示的文本。 但是,我无法阅读突出显示的文字。 请查看以下示例代码以阅读突出显示的文本。 PDDocument pddDocument = PDDocument.load(new File(“C:\\pdf-sample.pdf”)); List allPages = pddDocument.getDocumentCatalog().getAllPages(); for (int i = 0; i < allPages.size(); i++) { int pageNum = i + 1; PDPage page = (PDPage) allPages.get(i); List la = page.getAnnotations(); if (la.size() < 1) { continue; } System.out.println("Page number : "+pageNum); for (PDAnnotation pdfAnnot: la) { if […]

使用pdfbox从pdf中删除加密,如qpdf

使用qpdf,您可以简单地从pdf中删除限制/加密,如下所示: qpdf –decrypt infile outfile 我想用Java中的PDFBox做同样的事情: PDDocument doc = PDDocument.load(inputFilename); if( doc.isEncrypted() ) { //remove the encryption to alter the document } 我已经尝试使用StandardDecryptionMaterial,但我不知道所有者密码是什么。 qpdf如何做到这一点? 样本文件: https : //issues.apache.org/jira/secure/attachment/12514714/in.pdf