我进行了子类化PDFStreamEngine和重载processTextPosition,现在我可以像这样重建文本PDFTextStripper,但我不想处理透明文本,这通常是垃圾。
我如何知道某些文本是否透明?
我正在使用 PDFBox 来确定 pdf 文件是否受密码保护。这是我的代码:
boolean isProtected = pdfDocument.isEncrypted();
Run Code Online (Sandbox Code Playgroud)
我的文件属性在截图中。在这里,我isProtected= true什至不需要密码就可以打开它。
注意:该文件有文档打开密码:否和权限密码:是。
程序员朋友们,美好的一天。我是java新手,我需要从pdf的特定部分创建图像。
目前,我正在使用 pdfbox。
这是我从 pdf 创建图像的代码(它正在工作,但它创建了整个 pdf 页面的图像):
PDDocument document = PDDocument.load(new File(PDFFILE));
PDFRenderer pdfRenderer = new PDFRenderer(document);
for (int page = 0; page < document.getNumberOfPages(); ++page)
{
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
ImageIOUtil.writeImage(bim, path + "-" + (page+1) + ".png", 300);
}
document.close();
Run Code Online (Sandbox Code Playgroud)
问题:
我需要根据 pdf 的特定位置(如矩形)创建图像。
有没有办法使用 pdfbox 来做到这一点,或者是否有另一个库可以做到这一点?我尝试搜索但找不到解决方案。
谢谢。
我正在使用 PDFBOX - 1.8.13,似乎 PDF Security 没有按预期工作。如果设置了所有者密码而未设置用户密码,如果我不提供所有者密码,PDFBOX 允许解密我的 PDF 文件。请帮助我做错的地方。
加密我的pdf文件的代码:
PDDocument document = PDDocument.load(new File("/home/dummy/dummy.pdf"),null);
AccessPermission perms = new AccessPermission();
perms.setCanAssembleDocument(false);;
perms.setCanExtractContent(false);
perms.setCanModify(false);
perms.setCanModifyAnnotations(false);
perms.setCanExtractForAccessibility(false);
perms.setCanFillInForm(false);
perms.setCanPrint(false);
perms.setReadOnly();
perms.setCanPrintDegraded(false);
perms.setCanExtractForAccessibility(false);
document.setAllSecurityToBeRemoved(false);
StandardProtectionPolicy policy = new StandardProtectionPolicy("AdminPasswordTest", "", perms);
policy.setPermissions(perms);
document.protect(policy);
document.save("/home/dummy/dummy_secured.pdf");
document.close();
Run Code Online (Sandbox Code Playgroud)
解密我的 PDF 的代码
PDDocument doc = PDDocument.load("/home/dummy/dummy_secured.pdf", true);
if (doc.isEncrypted()) { //remove the security before adding protections
doc.decrypt(""); //This should not be DECRYPTED because owner password is not provided
doc.setAllSecurityToBeRemoved(true); //This user is not provided this permissions …Run Code Online (Sandbox Code Playgroud) 我想从 pdf 文件中提取文本。为此,我使用 pdfbox。首先我添加以下依赖项:
<dependencies>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.4</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
所以,这里是我从 pdf 中提取文本的代码:
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
File file = new File("C:/Users/Ann/Desktop/example.pdf");
try {
PDFParser parser = new PDFParser(new FileInputStream(file)); // in this line i get error
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = …Run Code Online (Sandbox Code Playgroud) 内容流通过我想在矩形中显示“连接我们”文本。
contentStream.beginText();
contentStream.setFont(PDType1Font.TIMES_ROMAN, 10);
contentStream.newLineAtOffset(260, 240);
contentStream.showText("Connect with Us:");
contentStream.endText();
contentStream.setNonStrokingColor(235,235,235);
contentStream.addRect(50, 200, 500, 100);
contentStream.fill();
Run Code Online (Sandbox Code Playgroud)
我尝试使用此代码获取矩形中的文本,但没有在矩形中看到文本。
我正在尝试获取远程 pdf 文件并对其执行一些操作。为此,我使用 PDFBox。我无法获取工具包来导入 ImageIOUtil 和 PDFText2HTML
我在搜索网络后通过 Maven 依赖项添加了 pdfbox 2.0.6 我尝试将其更改为 2.0.7 和 2.0.5
我使用的位置:
导入 org.apache.pdfbox.tools.PDFText2HTML;
导入 org.apache.pdfbox.tools.imageio.ImageIOUtil;
此处的 Javadoc 中指定了这些: https://pdfbox.apache.org/docs/2.0.5/javadocs/org/apache/pdfbox/tools/imageio/ImageIOUtil.html https://pdfbox.apache.org/docs /2.0.7/javadocs/org/apache/pdfbox/tools/PDFText2HTML.html
但我得到“无法解析符号“工具””
我的pom:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
<version>2.0.7</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的班级进口:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;
import org.apache.pdfbox.tools.PDFText2HTML;
import org.apache.pdfbox.text.PDFTextStripper;
Run Code Online (Sandbox Code Playgroud) TextPosition 类引用的“页面旋转调整坐标”和“文本方向调整坐标”有什么区别?直观的解释可能是最好的。
如何将 PDDocument(pdf 文档包含文字和图像,如果可能)转换为 Base64 字符串?是否有任何代码建议。请。
我尝试从 PDF 中提取一些文本。为此,我需要定义一个包含文本的矩形。
当我将文本提取的坐标与绘图的坐标进行比较时,我认识到坐标可能具有不同的含义。
package MyTest.MyTest;
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.PDPageContentStream.*;
import org.apache.pdfbox.text.*;
import java.awt.*;
import java.io.*;
public class MyTest
{
public static void main (String [] args) throws Exception
{
PDDocument pd = PDDocument.load (new File ("my.pdf"));
PDFTextStripperByArea st = new PDFTextStripperByArea ();
PDPage pg = pd.getPage (0);
float h = pg.getMediaBox ().getHeight ();
float w = pg.getMediaBox ().getWidth ();
System.out.println (h + " x " + w + " in internal units");
h = h / 72 * 2.54f …Run Code Online (Sandbox Code Playgroud) 我有一个用例,我通过将字节写入 ServletOutputStream 来下载一个大文件,我想返回一些指定的页面,而无需在内存中完全加载文件并使用库。
编辑 该文件是使用 Apache PDFBox 创建和存储的。
我寻找答案,但我能找到的只是如何将 pdf 转换为 pdf/a,这就是我已经在做的事情。现在我需要查找pdf是否已转换,以防止不必要的第二次转换。现在我正在使用 Aspose 来检查 pdf 是否已转换,但它并不总是正常工作。或者也许 pdfbox 或 itext 有不同的方法?
预先感谢您的所有帮助。
我正在使用apache pdfbox框架来阅读pdf文本内容.我必须从"目录"页面(如果存在于pdf中)获取内容,应该能够通过pdfbox api识别内容表页面.请提供您的建议.