在什么尺寸和方向是矩形
PDFTextStripperByArea的功能addRegion(String regionName, Rectangle2D rect).
换句话说,矩形R从哪里开始,它有多大(原点值的尺寸,矩形的尺寸)以及它的方向(图中蓝色箭头的方向),如果new Rectangle(10,10,100,100)是第二个给出的话参数?

我们正在使用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) 我知道如何使用PDFBox来阅读整个pdf文件的文本PDFTextStripper.getText(PDDocument).
我还有一个关于如何使用特定页面获取对象引用的示例PDDocumentCatalog.getAllPages().get(i).
如何使用PDFBox获取一个页面的文本,因为我在PDPage课堂上没有看到任何这样的方法?
我想在使用创建的PDF中添加一个超链接PDFBOX,这样我点击一些文本示例'点击此处'将重定向到URL.我试着用PDAnnotationLink和PDActionURI,但如何将其在添加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) 尝试使用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:
这很好用.我可以在Adobe Reader XI中打开文档,并在表单中查看正确的值.
对于静态PDF:
这似乎不起作用.当我在Adobe Reader XI中打开生成的表单时,字段似乎不会填充.但是,如果我在我的Firefox或Chrome浏览器的PDF查看器中打开PDF,则字段显示为填充在那里.
如何设置这些字段,以便在Adobe Reader XI中查看时显示值?
编辑:示例PDF可以在这里找到:https://github.com/bamundson/PDFExample
我的任务非常简单:将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文件中的图片看起来很晕眩(参见附件).我查看源代码,但我仍然不知道如何解决它.你们知道发生了什么事吗?请帮忙.谢谢!!
我能够在现有的pdf文档中插入一个Image,但问题是,
我正在使用以下代码.
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绘制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) 背景
我在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
编辑5:我已经成功修复了标记路径/文本对象的PAC 2错误,这部分得益于Tilman Hausherr的建议!如果我设法解决有关"注释小部件没有嵌套在表单结构元素中"的问题,我将添加一个答案.