相关疑难解决方法(0)

PDFBox将英寸或厘米转换为坐标系

我是PDFBox(和PDF生成)的新手,我很难生成自己的PDF.

我确实有一些以英寸/厘米为单位坐标的文本,我需要将它们转换为PDFBox使用的单位.任何建议/实用程序都可以自动执行此操作?

PDPageContentStream.moveTextPositionByAmount(x,y) 对我毫无意义.

pdfbox unit-conversion

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

pdfbox换行文字

我正在使用PDFBox,以下代码:

doc = new PDDocument();
page = new PDPage();

doc.addPage(page);
PDFont font = PDType1Font.COURIER;

pdftitle = new PDPageContentStream(doc, page);
pdftitle.beginText();
pdftitle.setFont( font, 12 );
pdftitle.moveTextPositionByAmount( 40, 740 );
pdftitle.drawString("Here I insert a lot of text");
pdftitle.endText();
pdftitle.close();
Run Code Online (Sandbox Code Playgroud)

有谁知道如何包装文本,以便它自动转到另一行?非常感谢!

java text pdfbox

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

是否可以在PDFBOX中证明文本的合理性?

PDFBOX API中是否有任何函数可以使文本合理,或者我们必须手动执行?如果手动然后如何使用java(其背后的逻辑)证明文本

java apache pdf-generation

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

使用PDFBox从字符串中删除非法字符

当我尝试将非法字符写入PDF时,我显然会遇到异常.例如

contentStream.showText("some illegal characters");    
...
java.lang.IllegalArgumentException: U+000A ('controlLF') is not available in this font Helvetica (generic: ArialMT) encoding: WinAnsiEncoding...
Run Code Online (Sandbox Code Playgroud)

如何找出不支持哪些字符并从字符串中删除它们?

java pdfbox

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

使用PDFBox处理许多unicode字符

我正在编写一个Java函数,该函数将String作为参数,并使用PDFBox产生PDF作为输出。

只要我使用拉丁字符,一切都可以正常工作。但是,我事先不知道输入什么,可能是英文,中文或日文字符。

在非拉丁字符的情况下,这是我得到的错误:

Exception in thread "main" java.lang.IllegalArgumentException: U+3053 ('kohiragana') is not available in this font Helvetica encoding: WinAnsiEncoding
at org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:426)
at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:324)
at org.apache.pdfbox.pdmodel.PDPageContentStream.showTextInternal(PDPageContentStream.java:509)
at org.apache.pdfbox.pdmodel.PDPageContentStream.showText(PDPageContentStream.java:471)
at com.mylib.pdf.PDFBuilder.generatePdfFromString(PDFBuilder.java:122)
at com.mylib.pdf.PDFBuilder.main(PDFBuilder.java:111)
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,则必须对日语使用一种特定的字体,对中文使用另一种字体,依此类推,因为我使用的(Helvetiva)字体不能处理所有必需的unicode字符。

我还可以使用处理所有这些unicode字符的字体,例如Arial Unicode。但是,该字体受特定许可使用,因此我无法使用它,也没有找到另一种。

我找到了一些想要解决此问题的项目,例如Google NOTO项目。但是,该项目提供了多个字体文件。因此,我将不得不在运行时根据我的输入选择要加载的正确文件。

因此,我面临两个选择,其中一个我不知道如何正确实现:

  1. 一直在寻找可以处理几乎所有unicode字符的字体(我急切地希望在哪里找到这个字体?

  2. 尝试检测使用哪种语言,然后根据需要选择一种字体。尽管我还不知道该怎么做,但我仍然认为它不是一个干净的实现,因为输入和字体文件之间的映射将被硬编码,这意味着我将必须对所有硬编码可能的映射。

  3. 还有其他解决方案吗?

  4. 我完全偏离轨道了吗?

在此先感谢您的帮助和指导!

这是我用来生成PDF的代码:

public static void main(String args[]) throws IOException {
    String latinText = "This is latin text";
    String japaneseText = "????????";

    // This works good
    generatePdfFromString(latinText);

    // …
Run Code Online (Sandbox Code Playgroud)

java fonts pdfbox

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

如何在PDFBox中添加多个页面

我想用PDFBox在我的PDF中写一些内容.一旦页面高度小于我需要创建另一页面的边距.我想保留游标信息.我有一种方法可以获取光标信息,例如光标所在的位置,这样我就可以从光标位置减去边距并为其添加另一个页面.现在我做了类似的事

PDRectangle rect = page.getMediaBox();
float positionY = rect.getWidth();
 positionY = positionY - pdfWriter.defaultBottomMargin;
if(positionY < positionX) {
               positionY = rect.getWidth();
                PDPage page2 = page;
               rect = page2.getMediaBox();
               document.addPage(page2);
               PDPageContentStream contentStream = new PDPageContentStream(document, page2);
               contentStream.appendRawCommands("T*\n");
               contentStream.beginText();
              // contentStream.setFont(font, 12);
               contentStream.moveTextPositionByAmount(positionX, positionY);
               contentStream.drawString(tmpText[k]);
               contentStream.endText();
               contentStream.close();
               }
Run Code Online (Sandbox Code Playgroud)

java pdfbox

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

标签 统计

java ×5

pdfbox ×5

apache ×1

fonts ×1

pdf-generation ×1

text ×1

unit-conversion ×1