标签: pdfbox

使用 Apache PDFBox 库右对齐 PDF 中的数值

我的 Spring boot Java 应用程序使用 apache pdf box 库 {version 2.0.6} 来生成 pdf。我希望小数值右对齐。这意味着所有小数点应在同一垂直线上对齐。我还附上了屏幕截图。

    stream.beginText();
            stream.newLineAtOffset(xCordinate, yCordinate);
            stream.showText(String.valueOf(item.getQuantity()));
            List<String> resultList = processTextData(TextUtil.isEmpty(item.getDescription()) ? "-" : item.getDescription());
            int y = 0;
            int x = 50;
            int tempYcordinate = yCordinate;
            for (String string : resultList) {
                stream.newLineAtOffset(x, y);
                stream.showText(processStringForPdf(string));
                x = 0;
                y = -8;

            }
            tempYcordinate = tempYcordinate - (8 * resultList.size());
            stream.endText();
            stream.beginText();
            stream.newLineAtOffset(285, yCordinate);
            stream.showText("$" + NumberFormat.getInstance(Locale.US).format(Util.round(item.getUnitPrice())));
            stream.newLineAtOffset(65, 0);
            stream.showText("$" + NumberFormat.getInstance(Locale.US).format(Util.round(item.getExtPrice())));
            stream.endText();
            yCordinate = tempYcordinate;
Run Code Online (Sandbox Code Playgroud)

PDF 的屏幕截图

java apache pdf pdfbox spring-boot

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

以 45 度角穿过 Apache PDFBox 中心旋转水印文本

我想使用 PDFBox API 添加文本到 PDF 并将其旋转 45 度并将其放置在页面的中心,文本是动态的,应该始终放置在中心,除了居中部分之外,其他所有功能都可以工作,我将不胜感激任何帮助。我有这个代码:

Point2D.Float pageCenter = getCenter(page);

float stringWidth = getStringWidth(watermarkText, font, fontSize);
float textX = pageCenter.x - stringWidth / 2F + center.x;
System.out.println(textX);
float textY = pageCenter.y + center.y;
//System.out.println("Inside cross"+textX+", "+textY);
fontSize = 110.0f;  
cs.transform(Matrix.getRotateInstance(Math.toRadians(45), textX, textY));
cs.moveTo(0, 0);
cs.lineTo(125, 0);
r0.setNonStrokingAlphaConstant(0.20f);
Run Code Online (Sandbox Code Playgroud)

这就是我想要的结果: 输出PDF

java pdfbox

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

PDFBOX - 使用 easytable 的所有页面中的页眉

我正在使用 pdfbox 和 easytable https://github.com/vandeseer/easytable创建动态页面,效果很好。但我确实希望在所有页面中添加标题。我面临/尝试过以下事情。

1)建表器是在写入行之前创建的,因此我们可以创建一个完美的建表器,因为行是动态的。

2)尝试在创建表格构建器时在中间插入标题,这又不完美,因为 TableDrawer 根据行高使行足够

任何想法/帮助将不胜感激。

需要类似于此项目的输出 - https://github.com/eduardohl/Paginated-PDFBox-Table-Sample。这里唯一的问题是内容不像 easytable 那样是动态的。

java pdfbox

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

获取 PDF Box Reader 中的当前页码

我正在尝试使用 PDF 框阅读器获取当前页面。

听到的是我写的代码。

公共类 PDFTextExtractor{

ArrayList extractText(String fileName) 抛出异常 {

PDDocument document = null;
try {
    document = PDDocument.load( new File(fileName) );
    PDFTextAnalyzer stripper = new PDFTextAnalyzer();
    stripper.setSortByPosition( true );
    stripper.setStartPage( 0 );
    stripper.setEndPage( document.getNumberOfPages() );
    Writer dummy = new OutputStreamWriter(new ByteArrayOutputStream());
    stripper.writeText(document, dummy);
    return stripper.getCharactersList();
}
finally {
    if( document != null ) {
        document.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

}

当我试图获取详细信息时,我正在编写以下代码。

public class PDFTextAnalyzer extends PDFTextStripper {

    public PDFTextAnalyzer() throws IOException {
        super();
        // TODO Auto-generated constructor stub
    }

    private …
Run Code Online (Sandbox Code Playgroud)

java swing pdfbox

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

将图像插入现有的非空 pdf

我正在尝试使用 apache PDFBOX 将图像保存到现有的 pdf 中,但我的内容被删除,当我将图像放在 pdf 上时,我得到空白文档,有解决问题的方法吗?

我的代码看起来像这样。

    public class TestPdfImage {
        public static void main(String args[]) throws Exception {
              //Loading an existing document
              File file = new File("...../mydoc.pdf");
              PDDocument doc = PDDocument.load(file);

              //Retrieving the page
              PDPage page = doc.getPage(0);

              //Creating PDImageXObject object
              PDImageXObject pdImage = PDImageXObject.createFromFile("...../sample.png",doc);

              //creating the PDPageContentStream object
              PDPageContentStream contents = new PDPageContentStream(doc, page);

              //Drawing the image in the PDF document
              contents.drawImage(pdImage, 70, 250);

              System.out.println("Image inserted");

              //Closing the PDPageContentStream object
              contents.close();     

              //Saving the document
              doc.save(".../sample.pdf");

              //Closing …
Run Code Online (Sandbox Code Playgroud)

java pdf image pdfbox

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

获取PDPage/PDDocument的DPI以准确计算PDF尺寸

我希望获得 PDF 中每个页面的准确大小,作为我将创建的 PDF 单元测试的一部分。当我处理每个文档中有许多不同页面大小的 PDF 时,代码返回一个维度的 ArrayList。

AFAIK 每个页面也可以有自己的 DPI 设置。

我已经做了相当多的谷歌搜索,但我只想到了这个,它只给了我部分答案,因为我仍然需要计算出每个页面的 DPI 是多少。

PDFBox - 查找页面尺寸

public static ArrayList<float[]> getDimentions(PDDocument document) {
    ArrayList<float[]> dimensions = new ArrayList<>();
    float[] dim = new float[2];
    //Loop Round Each Page
    //Get Dimensions of each page and DPI
    for (int i = 0; i < document.getNumberOfPages(); i++) {
        PDPage currentPage = document.getPage(i);
        PDRectangle mediaBox = currentPage.getMediaBox();
        float height = mediaBox.getHeight();
        float width = mediaBox.getWidth();
        // How do I get the DPI now????
    } …
Run Code Online (Sandbox Code Playgroud)

java dpi pdfbox

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

Apache PDFBox - PDFont 类型之间的差异

我最近开始使用PDFBox来处理一些PDF文件。我成功加载了 Roboto 字体,但是,我不明白 PDType0Font、PDType1Font 和 PDTrueTypeFont 之间的区别。使用哪一个更好?

问候

java pdfbox

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

从 PDF 中过滤掉超过特定字体大小的所有文本

正如标题所示,我想过滤掉 PDF 中超过特定​​字体大小的所有文本。目前,我正在使用 PDFBox 库,但我愿意使用任何其他免费的 Java 库。

我的方法是使用 PDFStreamParser 来迭代令牌。当我传递大小大于阈值的 Tf 运算符时,不要添加看到的下一个 Tj/TJ。然而,我已经清楚这种相对简单的方法行不通,因为文本可能会被当前的变换矩阵缩放。

我是否可以采取更好的方法,或者有一种方法可以使我的方法发挥作用而不变得太复杂?

java pdfbox

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

如何使用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();
Run Code Online (Sandbox Code Playgroud)

谢谢.

java pdf pdfbox

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

pdfbox Font TrueType导致stripper.getText()错误

我有一些pdf需要提取到文本只有一个pdf是truetype它会导致以下错误:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.fontbox.ttf.TrueTypeFont.getAdvanceWidth(I)I
at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.getFontWidth(PDTrueTypeFont.java:677)
at org.apache.pdfbox.pdmodel.font.PDSimpleFont.getFontWidth(PDSimpleFont.java:231)
at org.apache.pdfbox.util.PDFStreamEngine.processEncodedText(PDFStreamEngine.java:411)
at org.apache.pdfbox.util.operator.ShowText.process(ShowText.java:45)
at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:557)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:268)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235)
at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215)
at org.apache.pdfbox.util.PDFTextStripper.processPage(PDFTextStripper.java:460)
at org.apache.pdfbox.util.PDFTextStripper.processPages(PDFTextStripper.java:385)
at org.apache.pdfbox.util.PDFTextStripper.writeText(PDFTextStripper.java:344)
at org.apache.pdfbox.util.PDFTextStripper.getText(PDFTextStripper.java:257)
Run Code Online (Sandbox Code Playgroud)

我检查api源代码仍然无法通过它.有什么我可以做的吗?或2.0版本解决了这个问题.

apache pdf fonts pdfbox

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

标签 统计

pdfbox ×10

java ×9

pdf ×4

apache ×2

dpi ×1

fonts ×1

image ×1

spring-boot ×1

swing ×1