Tag: pdfbox

如何使用Java中的PDFBOX库查找pdf是纵向还是横向

我正在使用PDFBOX-1.8.6库(必须使用)在Java中进行项目。 我的问题是 如何检查输入的pdf文件是纵向还是横向? 如果两个页面的尺寸相同,如何通过每页的尺寸检查/扫描PDF中的纵向或横向? 例如,两者都是标准A4尺寸。 下面的图片你会更清楚。 我的风景 – 肖像问题我只想检查其内容是否旋转。 那么我该如何应对上述问题呢?

从PDF中提取不可选择的内容

我正在使用Apache PDFBox从PDF文件中提取页面,我找不到提取不可选内容(文本或图像)的方法。 使用可从PDF文件中选择的内容,没有问题。 请注意,有问题的PDF对复制内容没有任何限制,至少从我在文档的“文档限制摘要”中看到的内容:它们都允许“内容复制”和“内容复制可访问性”! 在同一PDF文件中,有可选择的内容和不可选择的其他部分。 所发生的是,提取的页面带有“洞”,即它们只有PDF的可选部分。 但是在MS Word上,如果我将PDF添加为对象,则会显示PDF页面的全部内容! 所以我希望对PDFBox lib或任何其他Java lib做同样的事情! 这是我用来将PDF页面转换为图像的代码: private void convertPdfToImage(File pdfFile, int pdfId) throws IOException { PDDocument document = PDDocument.loadNonSeq(pdfFile, null); List pdPages = document.getDocumentCatalog().getAllPages(); for (PDPage pdPage : pdPages) { BufferedImage bim = pdPage.convertToImage(BufferedImage.TYPE_INT_RGB, 300); ImageIOUtil.writeImage(bim, TEMP_FILEPATH + pdfId + “.png”, 300); } document.close(); } 有没有办法从这个Apache PDFBox库(或任何其他类似的库)中提取PDF中的不可选内容? 或者这根本不可能? 如果确实不是,为什么呢? […]

Java关闭PDF错误

我有这个java代码: try { PDFTextStripper pdfs = new PDFTextStripper(); String textOfPDF = pdfs.getText(PDDocument.load(“doc”)); doc.add(new Field(campo.getDestino(), textOfPDF, Field.Store.NO, Field.Index.ANALYZED)); } catch (Exception exep) { System.out.println(exep); System.out.println(“PDF fail”); } 抛出这个: 11:45:07,017 WARN [COSDocument] Warning: You did not close a PDF Document 而且我不知道为什么要扔掉这个1,2,3或更多。 我发现COSDocument是一个类并且有close()方法,但是我没有使用这个类。 我有这个import: import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.util.PDFTextStripper; 谢谢 :)

缩放图像模糊PDFBox

我正在尝试将尺寸= 2496 x 3512的图像缩放为PDF文档。 我正在使用PDFBox生成它,但缩放的图像最终模糊。 以下是一些片段: PDF页面大小(A4)由page.findMediaBox()返回.createDimension():java.awt.Dimension [width = 612,height = 792] 然后我根据页面大小与图像大小计算缩放维度,返回:java.awt.Dimension [width = 562,height = 792]我使用下面的代码来计算缩放维度: public static Dimension getScaledDimension(Dimension imgSize, Dimension boundary) { int original_width = imgSize.width; int original_height = imgSize.height; int bound_width = boundary.width; int bound_height = boundary.height; int new_width = original_width; int new_height = original_height; // first check if we […]

禁用PDFBox上的日志记录

我们正在使用PDFBox进行一些PDF阅读和操作。 但在解析过程中,我得到了一堆像这样的消息: Changing font on from to the default font 现在我该怎么禁用这些? 因为如果嵌入了字体并且日志文件变得非常不可用,则在输入的每个字符上输出这样的消息。 现在更改整体日志级别不是一个选项,因为我需要来自其他组件的语句。 我使用的是Tomcat 5.5,log4j 1.2.16和pdfbox-app 1.6.0 这是我的log4j配置文件: # Root logger option log4j.rootLogger=INFO, file, stdout # Direct log messages to a log file log4j.appender.file=org.apache.log4j.DailyRollingFileAppender #log4j.appender.file.File=/home/PDF/WS/PDF.log log4j.appender.file.File=C:\\loging.log log4j.appender.file.MaxFileSize=5MB log4j.appender.file.MaxBackupIndex=1 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %-5p [%c{2}]: %m%n # Direct log messages to stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %-5p [%c{2}]: […]

Java PDFBox设置PDF表单中几个字段的自定义字体

我正在使用Apache PDFBox读取可填写的PDF表单并根据一些数据填写字段。 我使用下面的代码(根据其他SO答案的建议)获取默认外观字符串并更改它(如下所示,如果字段名称为“Field1”,我将字体大小从10更改为12。 我如何大胆的领域? 有关/ Helv 10 Tf 0 g排列顺序的任何文件? 我需要设置什么来大胆的领域? 如果我理解正确的话,我可以在开箱即用的PDFBox中使用14种基本字体(双关语无意)。 我想使用一个或多个看起来像Signatures(草书)的字体。 这样做的任何开箱即用的字体? 如果没有,如果我有自己的字体,如何设置要写入PDF的方法? 请注意,下面的代码可以通过填充方法参数的特定“名称”字段中方法参数中传递的特定“值”来正常工作。 谢谢 ! public static void setField(String name, String value ) throws IOException { PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog(); PDAcroForm acroForm = docCatalog.getAcroForm(); PDField field = acroForm.getField( name ); COSDictionary dict = ((PDField)field).getDictionary(); COSString defaultAppearance = (COSString) dict.getDictionaryObject(COSName.DA); if (defaultAppearance != […]

创建pdf并与pdfbox合并

这就是我想要做的: 使用pdfbox制作2个不同的pdf文件 使用pdfmerger将这两个文件合并在一起 如果我将#1保存到服务器端本地硬盘驱动器并加载#2的文件,我知道如何做到这一点。 但我想要做的是“直接从记忆中”使用。 我已经从这个pdfbox中搜索了所有方法,但仍然无法找到它。 这是我从本地文件获取的代码 谢谢。 import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.pdfbox.exceptions.COSVisitorException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.edit.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; import org.apache.pdfbox.util.PDFMergerUtility; /** * This is an example that creates a simple document * with a ttf-font. * * @author Michael Niedermair * @version $Revision: […]

使用java在pdf内部展平矢量图形并提取

我试图获取嵌入在PDF文件中的图像的大小(宽度和深度)。 PDF中的图像都是高分辨率矢量图像。 我尝试使用PDFBox。 PDFBox库完美地提取图像以用于普通图形。 但是,当它获得矢量图像时,它会将不同的图层提取为不同的图像。 我也读过有关iText的内容。 但是iText可以将整个页面转换为光栅化图像。 然而,我的PDF页面实际上包含多个图像,我需要以不同的方式提取/获取所有这些图像的大小。 我在这里附加我的PDFBox图像提取代码。 请让我知道,如何将一个矢量图像作为一个图像而不是图层。 我的代码如下: package com.abp.pdf.util; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.imageio.ImageIO; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDResources; import org.apache.pdfbox.pdmodel.encryption.AccessPermission; import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial; import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObject; import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectForm; import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage; public class ExtractImages { private int imageCounter = 1; private ExtractImages() { […]

PDFBox – 查找页面尺寸

如何使用PDFBox找到(以mm为单位)pdf页面的宽度和高度? 目前,我正在使用这个: System.out.println(page.getMediaBox().getHeight()); System.out.println(page.getMediaBox().getWidth()); 但结果是(不是mm): 842.0 595.22

使用pdfbox编辑pdf页面

如何编写带有java和pdfbox的pdf页面,通过写入我已知的像素的特定位置? 我尝试了这个,但它覆盖了: PDDocument document = null; try { document = PDDocument.load(new File(“/x/x/x/mypdf.pdf”)); PDPage page = (PDPage) document.getDocumentCatalog().getAllPages().get(0); PDFont font = PDType1Font.HELVETICA_BOLD; PDPageContentStream contentStream = new PDPageContentStream(document, page); page.getContents().getStream(); contentStream.beginText(); contentStream.setFont(font, 12); contentStream.moveTextPositionByAmount(100, 100); contentStream.drawString(“Hello”); contentStream.endText(); contentStream.close(); document.save(“/x/x/x/mypdf.pdf”); document.close(); } catch (IOException e) { e.printStackTrace(); } catch (COSVisitorException e) { e.printStackTrace(); } 谢谢。