我正在尝试使用PDFBox将带下划线的文本添加到空白pdf页面,但我在网上找不到任何示例。stackoverflow上的所有问题都指向提取带下划线的文本,而不是创建它。PDFBox是否未实现此功能?查看PDFBox文档,字体似乎预先呈现为粗体、斜体和常规。
例如,Times New Roman Regular表示为:
PDFont font = PDType1Font.TIMES_ROMAN.
Times New Roman Bold表示为:
PDFont font = PDType1Font.TIMES_BOLD
斜体表示为:
PDFont font = PDType1Font.TIMES_ITALIC
似乎没有带下划线的选项。有没有给文本加下划线,或者这不是一个功能?
试试这个答案:
当文本在pdf中的位置已知时,使用pdfbox高亮显示文本
此方法使用PDAnnotationTextMarkup,它有四个值
/**
* The types of annotation.
*/
public static final String SUB_TYPE_HIGHLIGHT = "Highlight";
/**
* The types of annotation.
*/
public static final String SUB_TYPE_UNDERLINE = "Underline";
/**
* The types of annotation.
*/
public static final String SUB_TYPE_SQUIGGLY = "Squiggly";
/**
* The types of annotation.
*/
public static final String SUB_TYPE_STRIKEOUT = "StrikeOut";
希望有帮助
我对带下划线的字符串使用下面的函数。
public class UnderlineText {
PDFont font = PDType1Font.HELVETICA_BOLD;
float fontSize = 10f;
String str = "Hello";
public static void main(String[] args) {
new UnderlineText().generatePDF(20, 200);
}
public void generatePDF(int sX, int sY)
{
//create pdf and its contents for one page
PDDocument document = new PDDocument();
File file = new File("underlinePdfbox.pdf");
PDPage page = new PDPage();
PDPageContentStream contentStream;
try {
document.addPage(page);
//create content stream
contentStream = new PDPageContentStream(document, page);
//being text for our page
contentStream.beginText();
contentStream.setFont( font, fontSize);
contentStream.newLineAtOffset(sX, sY);
contentStream.showText(str);
contentStream.endText();
//Draw Underline
drawLine(contentStream, str, 1, sX, sY, -2);
//close and save document
contentStream.close();
document.save(file);
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void drawLine(PDPageContentStream contentStream, String text, float lineWidth, float sx, float sy, float linePosition) throws IOException {
//Calculate String width
float stringWidth = fontSize * font.getStringWidth(str) / 1000;
float lineEndPoint = sx + stringWidth;
//begin to draw our line
contentStream.setLineWidth(lineWidth);
contentStream.moveTo(sx, sy + linePosition);
contentStream.lineTo(lineEndPoint, sy + linePosition);
contentStream.stroke();
}
}
drawLine是我创建的一个函数,用于为特定字符串绘制一条线。您可以使用“位置”属性根据规范调整线条。
在第行下创建位置字段中的负(-)值。可以对“over line”和“stroke line”使用正值。(例如,2表示下划线,10表示超行,2表示上述代码的笔划行)
您还可以管理线条的宽度。
我不确定这是否是一个更好的选择,但我跟随蒂尔曼·豪斯赫尔并与我的文本进行了比较。例如,我有以下内容:
public processPDF(int xOne, int yOne, int xTwo, int yTwo)
{
//create pdf and its contents for one page
PDDocument document = new PDDocument();
File file = new File("hello.pdf");
PDPage page = new PDPage();
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream contentStream;
try {
//create content stream
contentStream = new PDPageContentStream(document, page);
//being to create our text for our page
contentStream.beginText();
contentStream.setFont( font, largeTitle);
//position of text
contentStream.moveTextPositionByAmount(xOne, yOne, xTwo, yTwo);
contentStream.drawString("Hello");
contentStream.endText();
//begin to draw our line
contentStream.drawLine(xOne, yOne - .5, xTwo, yYwo - .5);
//close and save document
document.save(file);
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
其中,参数xOne、yOne、xTwo和yTwo是文本的位置。这条线让我们减法。从yOne和yTwo中选择5,将其移到文本位置下方一小点,最终将其设置为带下划线的文本。
也许有更好的方法,但这是我走的路线。
我有一个JTextPane组件,我试图将用户键入的文本样式设置为同时下划线和删除线。 应该将下一个类型化字符的删除线属性设置为true的相关代码片段如下: 这确实会将文本样式设置为删除线,但如果已经将其样式设置为下划线,则会丢失下划线样式信息。仔细查看styleConstants.setStrikeThrough(...)背后的实际代码我注意到,下划线和删除线属性的CSS样式标记都是相同的(即“t
我有一个项目,要求我在一段文本中的一些下划线文本下放置一个ID字符串。 下面是一个使用带有灰色边框的内嵌SVG对象来显示布局的示例: 我可以使用带有基线偏移的内联元素接近,然后使用 SVG 来呈现文本。但是,这有一个缺点(我认为),即我必须手动输入 SVG 的宽度(以像素为单位),这对于如此简单的布局来说似乎非常复杂。 下面是它的XSL-FO标记: 所以我的问题是:我可以在Apache FOP X
问题内容: 我需要有关在Openpyxl中设置样式的建议。 我看到可以设置单元格的NumberFormat,但是我还需要设置字体颜色和属性(粗体等)。有一个style.py类,但是似乎我无法设置单元格的style属性,而且我真的不想开始修改openpyxl源代码。 有没有人找到解决方案? 问题答案: 从openpyxl版本1.5.7开始,我已成功应用以下工作表样式选项… 仅供参考,您可以在…中找到
我试图找出如何设置整个word文档的字体样式,完全是通过选择菜单中预设的样式来完成的: 因为我已经制作了一个宏来逐字转换整个文档,所以我试图用它来完成的是更改所有预设磁贴(正常、无间距、标题、标题1等)。)以匹配现有的预设,而不是旧的预设(旧字体)。 这可能吗?我要修改什么对象来实现这一点?
您好,我想调整字体大小和颜色的字体真棒。这是我正在使用的代码,我可以让颜色或字体大小正常工作。但不是两者都在一起。也不确定我是应该使用内嵌CSS还是创建一个单独的CSS文件。这是一个简短的HTML表单(计算器)。 我的语法有问题吗?我做了大量的搜索,似乎找不到问题所在。 谢谢
在 Rax 中,有以下几种方式给元素设置样式: 内联样式 通过元素的 style 属性,为元素设置内联样式: 1const myStyle = { 2 fontSize: '24px', 3 color: '#FF0000' 4}; 5 6const element = <h1 style={myStyle}>Hello Rax</h1>; 需要注意的是,style 的值是一个 object,