标签: pdfbox

PDFBox PDFTextStripperByArea区域坐标

在什么尺寸和方向是矩形

PDFTextStripperByArea的功能addRegion(String regionName, Rectangle2D rect).

换句话说,矩形R从哪里开始,它有多大(原点值的尺寸,矩形的尺寸)以及它的方向(图中蓝色箭头的方向),如果new Rectangle(10,10,100,100)是第二个给出的话参数?

PdfBox矩形

pdfbox

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

PDFBox是否支持专色和分色?

我有兴趣将PDFBox用于一个项目,该项目需要能够指定PDF输出中的专色和分色才能转到专业打印机,并且很好奇它是否支持这一点.如果是这样(我想是这样),我也在寻找一些示例代码.

我在2009年的邮件列表(这里)发现了一篇旧帖子,这让我相信PDFBox可以支持分色,但是没有成功找到任何示例代码.我查看了他们的JavaDoc并发现了这些org.apache.pdfbox.pdmodel.graphics.color类,但不知道如何利用它们,并且在他们的网站或源代码中看不到任何烹饪书示例.

我特别感谢任何有助于说明DeviceN颜色空间的示例.

java pdf color-space pdfbox

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

禁用PDFBox上的日志记录

我们正在使用PDFBox进行一些PDF阅读和操作.但在解析过程中,我得到了一堆像这样的消息:

Changing font on <m> from <Arial Bold> to the default font
Run Code Online (Sandbox Code Playgroud)

现在我怎么禁用这些?因为如果嵌入了字体并且日志文件变得非常不可用,则在输入的每个字符上输出这样的消息.

现在更改整体日志级别不是一个选项,因为我需要来自其他组件的语句.

我使用的是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}]: %m%n
Run Code Online (Sandbox Code Playgroud)

编辑

修改我的log4j文件后,它的外观如下:

# Root logger option
log4j.rootLogger=INFO, file, stdout

log4j.rootLogger.org.apache.pdfbox=ERROR

# 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 …
Run Code Online (Sandbox Code Playgroud)

java log4j pdfbox

11
推荐指数
2
解决办法
8667
查看次数

使用PDFBox从特定页面读取文本

我知道如何使用PDFBox来阅读整个pdf文件的文本PDFTextStripper.getText(PDDocument).

我还有一个关于如何使用特定页面获取对象引用的示例PDDocumentCatalog.getAllPages().get(i).

如何使用PDFBox获取一个页面的文本,因为我在PDPage课堂上没有看到任何这样的方法?

java pdfbox

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

如何使用pdfbox在pdf中添加超链接

我想在使用创建的PDF中添加一个超链接PDFBOX,这样我点击一些文本示例'点击此处'将重定向到URL.我试着用PDAnnotationLinkPDActionURI,但如何将其在添加contentstream

PDBorderStyleDictionary borderULine = new PDBorderStyleDictionary();
borderULine.setStyle(PDBorderStyleDictionary.STYLE_UNDERLINE);
PDAnnotationLink txtLink = new PDAnnotationLink();
txtLink.setBorderStyle(borderULine);
txtLink.setColour(colourBlue);

// add an action
PDActionURI action = new PDActionURI();
action.setURI("www.google.com");
txtLink.setAction(action);

contentStream.beginText();
contentStream.moveTextPositionByAmount(400, y-30);
contentStream.drawString(txtLink);----error
contentStream.endText();
Run Code Online (Sandbox Code Playgroud)

java pdf pdf-generation pdfbox

11
推荐指数
2
解决办法
6213
查看次数

使用PDF框设置的表单字段值在Adobe Reader中不可见

尝试使用Apache PDFBOX(1.8.5)从字段中设置一些问题我遇到了问题.我有几个不同的静态PDF用于测试.使用以下代码,我可以设置表单字段的值,并保存生成的PDF.然后,我可以在Adobe Reader中打开此PDF并查看结果:

PDDocumentCatalog docCatalog = pdfDocument.getDocumentCatalog();
pdfTemplate.setAllSecurityToBeRemoved(true);
PDAcroForm acroForm = docCatalog.getAcroForm();
List fields = acroForm.getFields();     
Iterator fieldsIter = fields.iterator();        
while( fieldsIter.hasNext())
{
    PDField field = (PDField)fieldsIter.next();         
    if(field instanceof PDTextbox){
        ((PDTextbox)field).setValue("STATIC PDFBOX EDIT");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我最终保存了表格.对于静态PDF:

  • PDF版本:1.6(Acrobat 7.x)
  • PDF版本:1.7(Acrobat 8​​.x)

这很好用.我可以在Adobe Reader XI中打开文档,并在表单中查看正确的值.

对于静态PDF:

  • PDF版本:1.7 Adob​​e Extension Level 3(Acrobat 9.x)
  • PDF版本:1.7 Adob​​e Extension Level 8(Acrobat X)
  • PDF版本:1.7 Adob​​e Extension Level 11(Acrobat XI)

这似乎不起作用.当我在Adobe Reader XI中打开生成的表单时,字段似乎不会填充.但是,如果我在我的Firefox或Chrome浏览器的PDF查看器中打开PDF,则字段显示为填充在那里.

如何设置这些字段,以便在Adobe Reader XI中查看时显示值?

编辑:示例PDF可以在这里找到:https://github.com/bamundson/PDFExample

java adobe-reader pdfbox

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

PDFBox:将pdf页面转换为图像的问题

我的任务非常简单:将pdf文件的每一页转换为图像.我尝试使用icepdf开源版本来生成图像,但它们不会生成具有正确字体的图像.所以我开始使用PDFBox.代码如下:

PDDocument document = PDDocument.load(new File("testing.pdf"));             
List<PDPage> pages = document.getDocumentCatalog().getAllPages();
for (int i = 0; i < pages.size(); i++) {
 PDPage singlePage = pages.get(i);
 BufferedImage buffImage = convertToImage(singlePage, 8, 12);
 ImageIO.write(buffImage, "png", new File(PdfUtil.DATA_OUTPUT_DIR+(count++)+".png"));
}
Run Code Online (Sandbox Code Playgroud)

字体看起来不错,但pdf文件中的图片看起来很晕眩(参见附件).我查看源代码,但我仍然不知道如何解决它.你们知道发生了什么事吗?请帮忙.谢谢!!

java pdf image pdfbox

10
推荐指数
1
解决办法
3万
查看次数

如何使用PDFBox将图像精确定位在现有PDF页面中?

我能够在现有的pdf文档中插入一个Image,但问题是,

  1. 图像位于页面底部
  2. 页面变为白色,并在其上显示新添加的文本.

我正在使用以下代码.

List<PDPage> pages = pdDoc.getDocumentCatalog().getAllPages();

if(pages.size() > 0){
    PDJpeg img = new PDJpeg(pdDoc, in);
    PDPageContentStream stream = new PDPageContentStream(pdDoc,pages.get(0));
    stream.drawImage(img, 60, 60);
    stream.close();
}
Run Code Online (Sandbox Code Playgroud)

我希望第一页上的图像.

pdfbox

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

如何使用Apache PDFBox将.png图像添加到pdf

当我尝试使用pdfBox绘制png图像时,页面保持空白.有没有办法用pdfBox插入png图像?

public void createPDFFromImage( String inputFile, String image, String outputFile ) 
        throws IOException, COSVisitorException
{
    // the document
    PDDocument doc = null;
    try
    {
        doc = PDDocument.load( inputFile );

        //we will add the image to the first page.
        PDPage page = (PDPage)doc.getDocumentCatalog().getAllPages().get( 0 );

        PDXObjectImage ximage = null;
        if( image.toLowerCase().endsWith( ".jpg" ) )
        {
            ximage = new PDJpeg(doc, new FileInputStream( image ) );
        }
        else if (image.toLowerCase().endsWith(".tif") || image.toLowerCase().endsWith(".tiff"))
        {
            ximage = new PDCcitt(doc, new RandomAccessFile(new File(image),"r"));
        }
        else
        { …
Run Code Online (Sandbox Code Playgroud)

java pdfbox

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

如何使用可以使用PAC 2工具验证的Java PDFBox 2.0.8库创建可访问的PDF?

背景

我在GitHub上有一个小项目,我正在尝试创建一个符合508条款(section508.gov)的PDF,它在复杂的表结构中有表单元素.建议验证这些PDF的工具位于http://www.access-for-all.ch/en/pdf-lab/pdf-accessibility-checker-pac.html,我的程序输出PDF确实通过了大部分检查.我还将了解每个字段在运行时的含义,因此向结构元素添加标记应该不是问题.

问题

PAC 2工具似乎在输出PDF中存在两个特定项目的问题.特别是,我的单选按钮的窗口小部件注释不嵌套在表单结构元素内,并且我的标记内容没有标记(文本和表格单元格).PAC 2验证左上角单元格内的P 结构元素,但不验证标记内容 ...

但是,PAC 2确实将标记的内容标识为错误(即未标记的文本/路径对象).此外,检测单选按钮小部件,但似乎没有API将它们添加到表单结构元素.

我曾经尝试过什么

我已经看过这个网站上的几个问题以及其他关于这个主题的问题,包括这个带有PDFBox的Tagged PDF,但似乎几乎没有PDF/UA的例子和很少有用的文档(我发现).我发现的最有用的提示是在解释标记PDF的规范的网站上,如https://taggedpdf.com/508-pdf-help-center/object-not-tagged/.

问题

是否可以使用包含标记内容和单选按钮窗口小部件注释的Apache PDFBox创建PAC 2可验证PDF?如果可能,是否可以使用更高级别(不推荐)的PDFBox API?

旁注:这实际上是我的第一个StackExchange问​​题(虽然我已广泛使用该网站),我希望一切顺利!随意添加任何必要的编辑,并询问我可能需要澄清的任何问题.另外,我在GitHub上有一个示例程序,它在https://github.com/chris271/UAPDFBox上生成我的PDF文档.

编辑1:直接链接到输出PDF文档

*编辑2:使用一些较低级别的PDFBox的API,并查看原始数据流与PDFDebugger完全兼容PDF文件后,我就能够产生一个几乎相同的内容结构PDF相比,该标准目录的内容结构.不过,相同的错误显示文本对象没有标记,我真的无法决定从这里去哪里...任何指导将不胜感激!

编辑3: 并排原始PDF内容比较.

编辑4:生成的PDF的内部结构

生成PDF

和兼容的PDF

兼容的PDF

编辑5:我已经成功修复了标记路径/文本对象的PAC 2错误,这部分得益于Tilman Hausherr的建议!如果我设法解决有关"注释小部件没有嵌套在表单结构元素中"的问题,我将添加一个答案.

java pdf accessibility section508 pdfbox

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