自从Microsoft Word 2003中引入DOCX格式以来,由于其易于编辑和深入的设计选择,DOCX格式一直在全球各地的办公室中享有很高的知名度。但是9当涉及到兼容性,尤其是最终用户的查看一致性时,它的局限性开始显现出来。

它的复杂性很快就成为一种负担,兼容应用程序的不同版本会给您艰苦的设计带来意想不到的(通常是不幸的)后果。相反,无论设备,操作系统还是应用程序,PDF都具有无所不在的支持和无与伦比的一致显示保真度。但有啥用?,要进行编辑时,PDF也不实用。转换肯定冲会员。

由于这些优点和缺点,在两种格式之间进行转换仍然非常必要,而且在许多情况下通常很关键。手动将少量DOCX文件转换为PDF格式可能很简单,但工作中有很多呢?需要机械性重复呢?从程序角度看待这种转换,必须解决许多问题。

我们的主要问题是首先解析DOCX文件。这样做的主要原因是DOCX非常复杂。此格式的ECMA规范包括5000页,并定期添加新功能。另外,DOCX中的选择深度成为一把双刃剑。另一个问题是DOCX文件实际上是包含多个元数据和文档文件的压缩存档。使用“ rels”对这些文件之间的关系进行排序当然不是一件容易的事。而且,我们甚至还没有解决将所有解析后的数据转换成最终PDF的问题。

让我们假设没有开发时间或预算来从头开始研究整个过程。本教程将展示如何通过使用基于云的API来执行从DOCX到PDF的转换来解决这一难题。还将介绍如何使用此API对DOCX文件执行搜索和替换操作。

实际上,以编程方式对DOCX文件执行搜索和替换非常困难,因为它直接遇到了前面提到的解析问题。但还好的是,我们的API也可以为我们执行此任务。将所有这些放在一起,将使我们能够使用DOCX的编辑功能轻松地为报告,发票,邮件等创建富文本模板,并通过搜索和替换填充它们,然后将它们转换为PDF格式。因此,我们可以利用DOCX的优势来弥补PDF中缺少编辑选项。

在今天的演示中,我们的主要目标是在转换中保持最高的保真度。重要的设计选择(如页面布局,表格和注释)将保持不变。话虽如此,让我们开始设置过程。

我们的第一步包括安装API客户端。向我们的Maven POM文件添加一个存储库引用,如下所示:

XML格式

jitpack.iohttps://jitpack.io

在添加以下依赖项引用之后,这将允许Jitpack动态编译我们的库:

XML格式

com.github.CloudmersiveCloudmersive.APIClient.Javav3.62

编译我们的库之后,我们现在可以将其实现到控制器中了。只需将这些导入命令添加到文件的开头即可。

// Import classes://import com.cloudmersive.client.invoker.ApiClient;//import com.cloudmersive.client.invoker.ApiException;//import com.cloudmersive.client.invoker.Configuration;//import com.cloudmersive.client.invoker.auth.*;//import com.cloudmersive.client.EditDocumentApi;

现在是时候调用我们的第一个函数,在本例中为convertDocumentDocxToPdf。下面是一些示例代码,演示了如何构造此代码。

piClient defaultClient = Configuration.getDefaultApiClient();// Configure API key authorization: ApikeyApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");Apikey.setApiKey("YOUR API KEY");// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)//Apikey.setApiKeyPrefix("Token");EditDocumentApi apiInstance = new EditDocumentApi();ReplaceStringRequest reqConfig = new ReplaceStringRequest(); // ReplaceStringRequest | Document string replacement configuration inputtry { byte[] result = apiInstance.editDocumentDocxReplace(reqConfig); System.out.println(result);} catch (ApiException e) {System.err.println("Exception when calling EditDocumentApi#editDocumentDocxReplace");e.printStackTrace();}

尽管不是特别复杂,但必须遵循一些要求:

有效的DOCX文档应用作我们的inputFile必须从API实例调用我们的函数使用API密钥,可以从Cloudmersive网站免费获得。该密钥是免费的,永久有效,将输入文件限制为4MB,并允许从任何Cloudmersive API调用1,000个API。完成之后,就完成了DOCX to PDF的设置。如果进行测试运行,将看到我们已经可以开始实时转换文档。

现在让我们转向使用DOCX模板创建富文本PDF文档的问题。搜索和替换是动态替换字段以填充这些模板的理想工具。对于单个搜索和替换操作,可以使用editDocumentDocxReplace,它将接受ReplaceStringRequest对象。它由一个inputFile(通过字节数组或URL),要搜索的matchString,replaceString和matchCase bool组成,后者确定是否考虑字母大小写。这是一些示例代码,您可以将其用作参考:

ApiClient defaultClient = Configuration.getDefaultApiClient();//配置API密钥授权:ApikeyApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");Apikey.setApiKey("YOUR API KEY");//取消注释以下行以设置API密钥的前缀,例如“ Token”(默认为null)//Apikey.setApiKeyPrefix("Token“);EditDocumentApi apiInstance = new EditDocumentApi();ReplaceStringRequest reqConfig = new ReplaceStringRequest(); // ReplaceStringRequest | 文档字符串替换配置输入try {byte[] result = apiInstance.editDocumentDocxReplace(reqConfig);System.out.println(result);} catch (ApiException e) {System.err.println("Exception when calling EditDocumentApi#editDocumentDocxReplace");e.printStackTrace();}

那么,如果需要一次替换大量字符串怎么办?不必重复调用前面提到的函数,我们可以改用editDocumentDocxReplaceMulti。此函数还接受一个请求对象,该对象包含一个单独的字符串替换请求数组,每个请求都有自己的matchString和replaceString。这样可以快速替换字符串,使其在与DOCX模板结合使用时特别有用。例如,可以通过单个函数实时地以诸如名称,地址和日期之类的值填充表单中的所有各个字段。

在该库中,还可以找到用于标识和填充PDF表单字段,检索和编辑元数据,文件验证以及多种流行文件格式之间的转换的功能。

java docx转pdf_如何在Java中将DOCX转换为PDF相关推荐

  1. linux shell转换成时间,如何在Bash中将时间戳转换为日期?

    如何在Bash中将时间戳转换为日期? 我需要一个将Unix时间戳转换为日期的shell命令或脚本. 输入可以来自第一个参数或来自stdin,允许以下使用模式: ts2date 1267619929 和 ...

  2. python十进制小数转二进制小数,从零开始学Python|如何在Python中将小数转换为二进制...

    Python是一种高度通用且功能强大的编程语言.在可以做的许多事情中,从十进制转换为二进制,反之亦然,这是最突出的一项.因此,在本文中,我们将更多地讨论如何在Python中将十进制转换为二进制,反之亦 ...

  3. 如何在JavaScript中将十进制转换为十六进制

    如何在JavaScript中将十进制值转换为等效的十六进制值? #1楼 如果要将数字转换为RGBA颜色值的十六进制表示形式,我发现这是以下几个技巧中最有用的组合: function toHexStri ...

  4. JAVA 使用iTextPDF将网络图片(非JPG)转换为PDF

    JAVA 使用iTextPDF将网络图片(非JPG)转换为PDF 场景 代码 注意 场景 开发中遇到将网络图片转换为PDF的需求, 特此记录 代码 public class PDFRendererUt ...

  5. Word处理控件Aspose.Words功能演示:在 C# .NET 中将 Word 转换为 PDF - 完整指南

    Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...

  6. java xml转html_如何在Java中将XML文档转换成HTML文档.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp网页设计/UI 如何在Java中将XML文档转换成HTML文档. ...

  7. java soap 头_如何在Java中添加Soap标头

    我有一个来自oracle的NO.net Web服务,要访问,我需要添加soap标头.如何在Java中添加soap标头? Authenticator.setDefault(new ProxyAuthen ...

  8. java 正则表达式 开头_如何在Java中修复表达式的非法开头

    java 正则表达式 开头 您是否遇到过这个令人难以置信的错误,想知道如何解决它? 让我们仔细阅读一下,研究如何解决表达式Java非法开头错误. 这是一个动态错误,这意味着编译器会发现某些不符合Jav ...

  9. java实现递归算法_如何在Java中实现二进制搜索算法而无需递归

    java实现递归算法 by javinpaul 由javinpaul 流行的二进制搜索算法的迭代实现,用于在排序数组中查找元素. (An Iterative implementation of the ...

最新文章

  1. 华为hybrid-vlan
  2. SAP PM创建/计划MO
  3. Storyboard初体验
  4. 数据库,唯一索引,重复数据处理
  5. python画完图 程序暂停运行_[Python实战]你也能写的计时器程序
  6. c#中引用类型作为值参数和引用参数问题
  7. java删除指定索引元素_将对象/元素添加到列表中的Java指定索引处
  8. 【文文殿下】APIO2019游记
  9. 使用MNIST数据集训练出来的模型预测自己手写数据
  10. Windows 10 20H2 微软MSDN官方正式版英文ISO镜像下载
  11. 多项logistic回归系数解释_Logistic回归结果的回归系数和OR值解读
  12. [经典力学]牛顿自然哲学的数学原理论文解读
  13. CPS基本概念(信息物理融合系统)------1
  14. 如何判断一个对象是否属于某个类
  15. docker中php环境慢,解决访问本地 docker 项目慢的问题
  16. 科研写作——常见句式(十一)
  17. Prometheus+Grafana监控告警配置
  18. android jnl的mk文件,动态语言与静态语言
  19. OAuth 2.0 的四种认证模式
  20. 直接修改class文件的方式

热门文章

  1. 预埋单交易系统-系统功能需求说明书
  2. 微信小程序之 image图片自适应宽度比例显示
  3. p图软件pⅰc_‎App Store 上的“相机360 - 潮流P图新玩法”
  4. swing- 使用颜色画笔装饰你的容器背景
  5. php 隐藏后缀,php隐藏后缀名的方法是什么
  6. SketchUp的二次开发探索 (二)菜单栏中放入自己写的插件
  7. nova实现vGPU功能
  8. 华为nova8搭载鸿蒙,华为nova8参数及报价曝光_华为nova8手机参数
  9. plt的subplot 的间距怎么调整?
  10. putchar和getchar的用法