精华内容
下载资源
问答
  • 今天,本文将介绍如何使用Free Spire.PDF for Java实现这些偏好设置。产品Jar包导入方法一:下载Free Spire.PDF for Java包并解压缩,然后将lib文件夹下的Spire.Pdf.jar包作为依赖项导入到Java应用程序...

    在日常生活中浏览PDF文档时,我们可以根据自己的浏览习惯去进行一些偏好设置,例如是否全屏浏览,是否隐藏菜单栏/工具栏,以及设置文档的页面布局等。今天,本文将介绍如何使用Free Spire.PDF for Java实现这些偏好设置。

    产品Jar包导入

    方法一:下载Free Spire.PDF for Java包并解压缩,然后将lib文件夹下的Spire.Pdf.jar包作为依赖项导入到Java应用程序中

    方法二:直接通过Maven仓库安装JAR包,配置pom.xml文件的代码如下:

    <repositories>
        

    偏好设置:

    import 

    偏好设置效果:

    43b922ac22434ec5926dd66c39bae234.png
    展开全文
  • 由于PdfTemplate继承于PdfContentByte类,可以使用PdfContentByte方法来进行操作Document doc = new Document();PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(filepath));doc.open();...

    由于PdfTemplate继承于PdfContentByte类,可以使用PdfContentByte方法来进行操作

    Document doc = new Document();PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(filepath));

    doc.open();PdfContentByte cb = writer.getDirectContent();

    创建template并加到PdfContentByte里,template的状态位置是采用matrix方式来设置

    PdfTemplate template = cb.createTemplate(width, height);

    cb.addTemplate(template, 1f, 0f, 0f, 1f, 0f, 0f);

    关于矩形变换,详细可以到wiki上学习 https://en.wikipedia.org/wiki/Transformation_matrix

    添加文字

    template.saveState();

    template.beginText();

    template.moveText(5f, 5f); //坐标位置是相对template的左下角计算的//template.setColorFill(color);

    template.showText("Test Text");

    template.endText();

    template.stroke();

    template.restoreState();

    设置文字粗体和斜体,由于没有招到设置的函数,采用其他方式来实现这个效果

    换个想法可以根据matrix的思路用setTextMatrix方法来设置

    // Text Matrix Paramfloat ta = 1f, tb = 0f, tc = 0f, td = 1f, tx = 0f, ty = 0f;

    设置粗体,具体要多大多粗可以根据需要调整

    ta = ta + 0.15f;

    td = td + 0.05f;

    ty = ty - 0.15f;

    设置斜体,斜的角度也可以按需调整

    tc = tc + 0.3f;

    添加文字并设置加粗,斜体

    template.saveState();

    template.beginText();

    template.moveText(5f, 5f);

    template.setTextMatrix(ta, tb, tc, td, tx, ty);//这里对文字进行变形以达到想要的效果

    template.showText("Test Text");

    template.endText();

    template.stroke();

    template.restoreState();

    展开全文
  • PageSize.A4=595 x 842A4尺寸=210mm×297mm故设置纸张大小:public static final Rectangle EXP = new RectangleReadOnly(283.0F, 425.0F);补充:解决iText生成pdf文件过大的问题为iText生成的pdf文件瘦身。原来生成...

    做快递面单打印模板,快递要求纸张大小100 x 150mm。

    PageSize.A4=595 x 842

    A4尺寸=210mm×297mm

    故设置纸张大小:

    public static final Rectangle EXP = new RectangleReadOnly(283.0F, 425.0F);

    补充:解决iText生成pdf文件过大的问题

    为iText生成的pdf文件瘦身。

    原来生成pdf文件,即使是纯文本内容,无论内容再如何少,文件体积总是在7M多,导致传输速度很慢。经排查,是在pdf生成的时候,选用了第三方中文字体造成的。

    原生成PDF代码中,有如下语句:

    bfChinese = BaseFont.createFont("c://windows//fonts//SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

    这种情况下,iText会将字体TTF文件一同打包进pdf文件中,造成文件很大。

    解决方法

    是把这句改写为:

    BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);

    同时,需要引入itext-asian,使用maven:

    com.itextpdf

    itext-asian

    5.2.0

    这样,原来7M多的文件,现在只有100K左右了。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

    展开全文
  • PDF中,您通常使用带粗体字形的字体使文本变为粗体,另请参阅第二个问题。 如果你手上没有这么大胆的字体,你可能会使用一些穷人大胆的技巧,例如不仅填充字母而且还沿着边框抚摸一条线:public static void ...

    使用穷人的大胆

    我如何大胆的领域? ......我需要设置哪些大胆的字段?

    在PDF中,您通常使用带粗体字形的字体使文本变为粗体,另请参阅第二个问题。 如果你手上没有这么大胆的字体,你可能会使用一些穷人大胆的技巧,例如不仅填充字母而且还沿着边框抚摸一条线:

    public static void setFieldBold(String name, String value) throws IOException

    {

    PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog();

    PDAcroForm acroForm = docCatalog.getAcroForm();

    PDField field = acroForm.getField(name);

    COSDictionary dict = ((PDField) field).getDictionary();

    COSString defaultAppearance = (COSString) dict

    .getDictionaryObject(COSName.DA);

    if (defaultAppearance != null)

    {

    dict.setString(COSName.DA, "/Helv 10 Tf 2 Tr .5 w 0 g");

    if (name.equalsIgnoreCase("Field1")) {

    dict.setString(COSName.DA, "/Helv 12 Tf 0 g");

    }

    }

    if (field instanceof PDTextbox)

    {

    field = new PDTextbox(acroForm, dict);

    ((PDField) field).setValue(value);

    }

    }

    ( 2 Tr .5 w =使用渲染模式2,即填充和描边,并使用.5的线宽)

    代替

    aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9mcGJiUy5wbmc=

    你现在得到了

    aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9CRDJBRS5wbmc=

    使用自定义字体

    如果我理解正确的话,我可以在开箱即用的PDFBox中使用14种基本字体(双关语无意)。 我想使用一个或多个看起来像Signatures(草书)的字体。 任何开箱即用的字体都可以吗? 如果没有,如果我有自己的字体,如何设置要写入PDF的方法?

    如果您想使用自己的字体,首先需要在AcroForm默认资源中注册它,如下所示:

    public String prepareFont(PDDocument _pdfDocument) throws IOException

    {

    PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog();

    PDAcroForm acroForm = docCatalog.getAcroForm();

    PDResources res = acroForm.getDefaultResources();

    if (res == null)

    res = new PDResources();

    InputStream fontStream = getClass().getResourceAsStream("LiberationSans-Regular.ttf");

    PDTrueTypeFont font = PDTrueTypeFont.loadTTF(_pdfDocument, fontStream);

    String fontName = res.addFont(font);

    acroForm.setDefaultResources(res);

    return fontName;

    }

    此方法返回要使用的字体名称

    public static void setField(String name, String value, String fontName) throws IOException

    {

    PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog();

    PDAcroForm acroForm = docCatalog.getAcroForm();

    PDField field = acroForm.getField(name);

    COSDictionary dict = ((PDField) field).getDictionary();

    COSString defaultAppearance = (COSString) dict

    .getDictionaryObject(COSName.DA);

    if (defaultAppearance != null)

    {

    dict.setString(COSName.DA, "/" + fontName + " 10 Tf 0 g");

    if (name.equalsIgnoreCase("Field1")) {

    dict.setString(COSName.DA, "/" + fontName + " 12 Tf 0 g");

    }

    }

    if (field instanceof PDTextbox)

    {

    field = new PDTextbox(acroForm, dict);

    ((PDField) field).setValue(value);

    }

    }

    你现在得到了

    aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9jUWlFTi5wbmc=

    差别不是太大,因为字体非常相似。 使用您选择的字体以获得更多效果。

    使用/ Helv , / HeBo ,......

    OP找到了一个字体名称列表/ Helv , / HeBo ,...,可能在PDFBox问题PDFBOX-1234中 ,它似乎可用,而无需在任何资源字典中定义它们。

    这些名称不是PDF功能 ,即PDF规范不了解它们,相反:

    默认外观字符串( DA )包含用于建立图形状态参数(例如文本大小和颜色)所需的任何图形状态或文本状态运算符,用于显示字段的变量文本。 只有文本对象中允许的运算符才会出现在该字符串中(参见图9)。 该字符串至少应包含一个Tf (文本字体)运算符及其两个操作数,字体和大小。 指定的字体值应与默认资源字典的Font条目中的资源名称匹配(从交互式表单字典的DR条目引用;请参阅表218)。

    (第12.7.3.3节ISO 32000-1中的字段词典/可变文本)

    因此,规范不知道那些默认字体名称。

    尽管如此,Adobe Reader / Acrobat似乎支持它们,很可能是因为在遥远的过去的某个时间,某些表单生成工具假定它们在那里并且由于兼容性原因而保留了对这些表单的支持。

    因此,使用此功能可能不是最佳选择,但您的里程可能会有所不同。

    使用自定义和标准字体

    在他的评论中,OP表示他想在表格中使用自定义和标准字体。

    为此,我将方法prepareFont概括了一下,并将TTF导入重构为一个单独的方法:

    public List prepareFont(PDDocument _pdfDocument, List fonts) throws IOException

    {

    PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog();

    PDAcroForm acroForm = docCatalog.getAcroForm();

    PDResources res = acroForm.getDefaultResources();

    if (res == null)

    res = new PDResources();

    List fontNames = new ArrayList();

    for (PDFont font: fonts)

    {

    fontNames.add(res.addFont(font));

    }

    acroForm.setDefaultResources(res);

    return fontNames;

    }

    public PDFont loadTrueTypeFont(PDDocument _pdfDocument, String resourceName) throws IOException

    {

    try ( InputStream fontStream = getClass().getResourceAsStream(resourceName); )

    {

    return PDTrueTypeFont.loadTTF(_pdfDocument, fontStream);

    }

    }

    使用这些方法,您可以混合自定义和标准字体,如下所示:

    PDDocument doc = PDDocument.load(originalStream);

    List fontNames = prepareFont(doc, Arrays.asList(loadTrueTypeFont(doc, "LiberationSans-Regular.ttf"), PDType1Font.HELVETICA_BOLD));

    setField(doc, "FirstName", "My first name", fontNames.get(0));

    setField(doc, "LastName", "My last name", fontNames.get(1));

    doc.save(new File(RESULT_FOLDER, "acroform-setFieldCustomStandard.pdf"));

    doc.close();

    ( FillFormCustomFont .testSetFieldCustomStandard_acroform)

    导致

    aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9FZkZ3UC5wbmc=

    PDType1Font具有所有14种标准字体的常量。 因此,像这样你可以在表单字段中使用标准字体(如果需要,与自定义字体混合),在默认资源中生成正确的字体条目,即不依赖于像HeBo这样的专有默认字体名称。

    PS

    有关/ Helv 10 Tf 0 g排列顺序的任何文件?

    展开全文
  • java itext添加中文文字和设置文字颜色下面是示例代码import java.io.FileOutputStream;import java.io.IOException;import com.itextpdf.text.Rectangle;import com.itextpdf.text.Document;import ...
  • PDF表单域是指用户在PDF文件中可以自主进行填写、选择等操作的区域,其主要目的是采集...JavaJava程序中创建PDF表单域。Jar包导入方法一:下载Free Spire.PDF for Java包并解压缩,然后将lib文件夹下的Spire.P...
  • java使用itext生成pdf文件-设置字体,itextpdf,import com.limport com.lowagie.text.Document;import com.lowagie.text.Font;import com.lowagie.text.FontFactory;import com.lowagie.text.PageSize;import ...
  • 当然说的PDF文件,作为职场人都应该比较熟悉,安全性高,能够保存任何源文档的所有字体、格式、颜色和图形,自然用的人也就比较多。这里也不多说了,为了帮助大家解决这个问题,就将自己的所知道的操作方法告知大家...
  • java jasperReports导出PDF字体加粗失效

    千次阅读 2018-08-21 18:31:41
    在ireports模板设计中设置字体加粗样式,预览时样式生效,但是在Java程序导出PDF时样式字体加粗效果就不显示,找了好久,总结解决了问题。 我的是maven项目,首先pom.xml文件必须有下面这些依赖包 &lt;!--...
  • wkHtmlToPdf 的简单使用我在这里就不说了,今天主要说一下 设置 自定义字体问题,我经过很多次的测试,终于成功。 1、上代码 import java.io.File; import java.io.IOException; public class WkHtmlToPdf { ...
  • 使用PLsql developer 时遇到中文存储,尤其是对表字段的注释是中文的时候经常会显示乱码。 查到如下的解决方法: 1.检查服务器编码:执行SQL语法: select * from v$nls_parameters...方法一:使用Windows系统字体(Tru...
  • 下面的示例中,将分享通过Java编程在PDF中添加以及填充表单域的方法。包括:文本框、复选框、单选按钮、列表框、组合框、签名域、按钮等。这里填充表单域可分为2种情况,一种是在创建表单域时填充,一种是加载已经...
  • 小白都可以做出有高级感的PPT—— 这是编辑界面: 可以看到,编辑界面跟Powerpoint基本类似,不同的是,里面的功能都是中文的,设置起来非常容易上手,素材库也能直接调用,基本点击就可以编辑,非常方便。...
  • 下面的示例中,将分享通过Java编程在PDF中添加以及填充表单域的方法。包括:文本框、复选框、单选按钮、列表框、组合框、签名域、按钮等。这里填充表单域可分为2种情况,一种是在创建表单域时填充,一种是加载已经...
  • Canva的在线编辑和修改功能也很强大,就像操作PPT一样,很方便,各种素材和字体也都是免费使用。 可以导出PDF、PNG等多种格式,打印也比较方便,关键是这个网站不仅有简历,还可以做海报、剪视频,简直是一个宝藏...
  • Mac上那个PDF编辑工具最好用?首选PDFpen,pdfpen mac版是适用于Mac的PDF编辑工具,添加签名,文本和图像。进行更改并更正拼写错误。OCR扫描了文档,填写并创建表单。导出到Microsoft Word,Excel,PowerPoint,功能...
  • //设置单元格内边距、默认字体字体颜色和默认背景色 grid.getStyle().setCellPadding(new PdfPaddings(3,3,3,3)); grid.getStyle().setFont( new PdfTrueTypeFont(new Font("黑体", Font.PLAIN,10), true)...
  • import java.awt.Color;import java.io.FileOutputStream;import java.io.IOException;import com.lowagie.text.DocumentException;import com.lowagie.text.Element;import com.lowagie.text...
  • 前言作为开发人员,工作中难免会遇到复杂表单的导出,接下来介绍一种通过Java利用模板便捷导出Pdf表单的方式模拟需求需求:按照下面格式导出pdf格式的学生成绩单准备工作Excel软件Adobe Acrobat XI Pro软件模板制作...
  • 添加表格时,可设置表格边框、单元格对齐方式、单元格背景色、单元格合并、插入图片、设置行高、列宽、字体、字号等。使用工具:Free Spire.PDF for Java (免费版)Jar文件获取及导入:方法1:通过官网下载jar包。...
  • itext导出pdf字体设置

    2011-08-19 10:17:36
    import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import ...
  • 网上百度java生成pdf都是很老的代码,使用的是itext5,找遍了大江南北都找不到设置表格或单元格最大高度,或者绝对定位表格的实现,最后对table和cell的方法一个一个找,找到了满足要求的方法:cell.setMaxLines(int...
  • 添加表格时,可设置表格边框、单元格对齐方式、单元格背景色、单元格合并、插入图片、设置行高、列宽、字体、字号等。使用工具:Free Spire.PDF for Java (免费版)Jar文件获取及导入:方法1:通过官网下载jar文件包...
  • java操作pdf表单记录

    2019-09-16 10:47:25
    设置pdf表单时需要设置字体类型,某些字体类型可能会导致java中传递的字母丢失 这里设置的字体类型为 仿宋gb2312 2.引入pom文件依赖 <dependency> <groupId>com.itextpdf...
  • 添加表格时,可设置表格边框、单元格对齐方式、单元格背景色、单元格合并、插入图片、设置行高、列宽、字体、字号等。使用工具:Free Spire.PDF for Java (免费版)Jar文件获取及导入:方法1:通过...
  • 上一次我们用iText这个工具在Java环境下操作PDF文件,现在我们换一个工具:BFOiText的确小巧,但是功能也有限制,只能简单的生成PDF文件,BFO却不同,能设置字体、版面等元素。最新版本是:2.11.4官方的解释:The ...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 210
精华内容 84
关键字:

java设置pdf字体

java 订阅