我正在使用docx4j将Microsoft Word文档转换为PDF,然后在浏览器我找到了这个Microsoft工具来在线渲染文档,但是我在防火墙后面,因此我不能将此工具作为选项包括: https://products.office.com/en-us/office-online/view-fiew-fiew-fce-fipe-documents-anline P> 我愿意建议将DOCX文件显示为从浏览器内部的预览和打印选项. PDF转换似乎是最有希望的,但我遇到了格式化问题. 欢迎任何想法! 解决方案 与 .html 将其视为Alpha级预览.我们还没有发布它,但是您可以在防火墙后面托管它. 我恐怕不是开源,我们仍在努力(以及是否有免费版本). 其他解决方案 如果您只需要在浏览器中渲染DOCX文档,则可以使用Google文档查看器为:
以下是关于 docx4j 的编程技术问答
为了达到可访问性级别PDF/A-1A,我使用PDFBox v2.0.13在PDF上设置XMP元数据.在设置元数据之前,我将文件从.docx转换为PDF.我尝试了两种方法来进行转换:一种使用XdocReport v.2.0.1,另一种使用docx4j v.6.1.0. . 在Java类中,我有以下代码: PDDocumentInformation info = pdf.getDocumentInformation(); info.setTitle("Apache PDFBox"); info.setSubject("Apache PDFBox adding meta-data to PDF document"); info.setCreator("MyCreator"); ... DublinCoreSchema dcSchema = metadata.createAndAddDublinCoreSchema(); dcSchema.setTitle(info.getTitle(
我正在使用docx4j从HTML文本创建PDF文档. HTML文本中有一些英语和马拉松文本.英语文字在PDF中正确出现.但是,生成的PDF中未显示马拉地文本. 代替文本,它显示了方形框. 以下是我正在使用的代码. import java.io.FileOutputStream; import org.docx4j.Docx4J; import org.docx4j.convert.in.xhtml.XHTMLImporterImpl; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; public class ConvertInXHTMLFragment { static String DEST_PDF = "/home/Downloads/Sample.pdf"; public static void main(String[] args) throws Exce
当我将DOCX文档转换为PDF时,我的民族角色转换为"#"标记. 有什么方法可以为PDF文档设置字体编码吗? 我过去使用XdocReport,它可以处理它,但是我在图像,标头和页脚方面遇到了问题. docx4j设法执行此操作,但不能使用字体.转换后,字体具有ANSI编码,而我想拥有Windows-1250.是否可以选择此设置? 解决方案 我的问题是 - 缺少Linux服务器上的正确类型字体.默认字体改为插入(没有我的代码页). 我解决了通过安装默认MS Windows字体的问题 TTF-MSCOREFONTS-INSTALLER 在Debian上: apt-get install ttf-mscorefonts-installer 其他解决方案 我有同样的问题,发现正如您自己提到的那样,是一个字体问题.系统上的字体需要支持您的编码. 例如:对于使用" arial"字体的文档,德语umlaut字符显示为"?". 我找到了另一种解决方
我刚刚尝试通过 docx4j =" http://webapp.docx4java.org/onlinedemo/docx_to_pdf_fop.html" rel ="格式不正确.实际上,桌子明显脱落... 我只是想知道这是否是因为docx4j无法正确支持表,或者是某种错误.如果是这样,如果有人可以将我指出适当的信息. 解决方案 是我们可以处理的各种表功能的示例. 没有看到您的DOCX(并且在您的差异问题中没有任何描述!),我要说的是: 您正在使用一些我们不支持的表功能, 如果文档长30页或其文档.xml.xml长于300kb,则将使用更快的"非XSLT"代码.此代码还没有特征奇偶校验. 2020年9月更新 在某些情况下,有3种主要方法可以在DOCX4J世界中对PDF进行DOCX: 较旧/开朗的方法:使用docx4j-export-fo(这是这里讨论的XSL FO方法,哪个表示例文档适用于) ) 使用由文档驱动的Microsoft
我正在寻找一些"稳定"方法将MS Word转换为PDF的方法.从现在开始,我已经使用了安装的OpenOffice作为侦听器,但通常会挂起.问题在于,我们有许多用户想要将SXW和DOCX文件同时转换为PDF的情况.还有其他可能性吗?我尝试了来自此网站的示例: https://angelozerr.wordpress.com/2012/12/06/how-to-convert-docxodt-docxodt-t-te-pdfhtml-with-java/,但输出结果不好(转换后的文档有错误布局经过了非常修改). 这是"源" Docx文档: 此处是使用Docx4j转换的文档,其中一些文档中的一些例外文本. 也缺少右上角的文字. 这个是使用OpenOffice创建的PDF,作为从DOCX到PDF的转换器.一些文字缺少"右上角" 是否还有其他选择将DOCX转换为Java的PDF? 解决方案 有很多方法要进行转换 使用的一种方法是使用POI和DOCX4J In
如何将org.docx4j.openpackage.packages.packages.wordprocessingmlpackage实例保存到bytearrayinputstream中,然后可以从服务器下载. 谢谢. 解决方案 您无法保存到ByteArrayInputStream ...一个ByteArrayInputStream是InputStream,您不/不能写入InputStream. 但是,您可以将一些内容写入ByteArrayOutputStream,获取字节数组,并为该数组创建ByteArrayInputStream包装器. (我假设有一种方法可以将这些实例之一保存到输出流或作者...) 好吧,我的假设是错误的,WordprocessingMLPackage的save方法可以保存到File. (我想有人没有收到有关如何设计灵活的I/O API的备忘录...) 但是源代码(在这里)提供了一些有关如何自己实施的线索.该方法如下: p
由我看到的教程.我学会了如何在生成DOCX文件时添加文本.但是,每次我添加一行文本时.我注意到第一行文本和第二行文本之间总是有一个空间.就像击中两次Enter键一样.我知道主要原因是每次添加一行文本时,我都会使用段落.段落从另一个段落开始的空间开始. 这就是我添加文本的方式 ObjectFactory factory; factory = Context.getWmlObjectFactory(); WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(); P spc = factory.createP(); R rspc = factory.createR(); rspc.getContent().add(wordMLPackage.getMainDocumentPart().createParagraphOfText("sample")); spc.getContent
tl; dr: docx4j生成的excel工作簿总是说损坏了,但我无法确定excel不喜欢基础XML,更不用说如何修复它了. 我的用例如下: 我正在尝试定期制作带有图表和图表的Excel工作簿.只有原始数据才会更改,但其他所有内容都会随着原始数据的更改而动态更新. 因此,我构建了一个Excel工作簿,该工作簿有许多图表和图表,由一张原始数据生成.我将其用作模板.原始数据的所有值都是数字.目的是使用docx4j读取此"模板"并填充原始数据表,然后将其保存为一个新文件,其中打开将启动重新计算,图表和图形将更新.由于我是DOCX4J的新手,因此我基本上决定通过首先查看是否可以打开并阅读细胞的内容来做婴儿步骤.我可以.到目前为止,一切都很好.我也可以更改单元格的值,但我只能通过将其写入更改前的位置和值,然后在更改后的位置和值来验证该图(例如A1 = 45,然后是A1 = 55) . 当我尝试打开结果文件时,我的问题开始.它产生,看起来大小合适,但Excel声称它已被损坏.它确
我有一个Word文件,我想计算其中有多少页. 该文件是使用docx4java创建的. 有人以前这样做了吗? 谢谢! 解决方案 docx4j没有页面布局模型,因此它无法告诉您页面计数. 您可以使用FOP的页面布局模型获得大概的页面计数. DOCX4J的PDF输出现在支持" 2通行"一代: 第一次通过计算页面计数 第二次通过生成PDF 参见因此,第一次通行证会给您(大约)您想要的东西.这使用org.apache.fop.apps.formattingresults记录页面序列中的页数或整个文档中的页数. 另一种方法可能是使用libreoffice/openoffice(或Microsoft Word,因此).
我有一些占位符的Docx文件.现在,我应该用其他内容替换它们,并保存新的Docx文档.我从 docx4j 并找到了此方法: public static List getAllElementFromObject(Object obj, Class toSearch) { List result = new ArrayList(); if (obj instanceof JAXBElement) obj = ((JAXBElement) obj).getValue(); if (obj.getClass().equals(toSearch)) result.add(obj); else if (obj instanceof ContentAccessor) { List children = ((ContentAccessor) obj).getConte
我正在使用Java中的DOCX4J库创建一个DOCX文件.我创建了在天秤座办公室中完美显示的页脚,但它没有在MS-Word 2016中显示. 页脚代码: public static Relationship createFooterPageNumPart( WordprocessingMLPackage wordprocessingMLPackage) throws Exception { FooterPart footerPart = new FooterPart(); MainDocumentPart t = wordprocessingMLPackage.getMainDocumentPart(); footerPart.setPackage(wordprocessingMLPackage); // footerPart.setJaxb
在MS -WORD 2010中,在文件中有一个选项 - >信息在共享之前检查该文档是否有问题.这使得可以处理跟踪更改(对最新版本),并立即从文档中删除所有注释和注释. 这种可能性是否也可以在DOCX4J中使用,还是我需要投资相应的Jaxb-Objects并写下Traverse Finder? 手动这样做可能是很多工作,因为我必须将RunIns(w:ins)添加到R(w:r)并删除RunDel(w:del).我还看到w:del一次w:ins.在这种情况下,我不知道这是反之亦然. 进一步的研究带来了这一XSLT: 如果不适合以一种简单的方式解决此请求,我将更改约束.对于我来说,有一种将所有内容的文本作为String进行的方法是足够的. contentAccessor可以是P或Tc.该字符串应在R内部或内部R内部(其中R内)内部,为此,我有一个半解决方案.交织部分始于else if (child instanceof RunIns) {的线.但是如上所述,我不确定如何出现嵌套的d
我已经用docx4j做了一个简单的替换,感谢但是现在我正在尝试做一些更复杂的事情. 我想做的是在文档中找到我的标记文本#1,在文档中找到我的标记文本#2,然后在两者之间复制所有内容.然后,我将粘贴该内容X次数并进行进一步的更改. 有人知道我将如何做到这一点,并可能将我指向所需的关键功能? 解决方案 在一般情况下,这不是一个简单的事情,因为您的两个标记之间可能有多种结构,这些标记需要特殊处理(想想图像,脚注,sectpr元素,书签等).关于这种一般情况,请参阅我在Mergedocx上的博客文章. 但是,如果您可以做出一些简化的假设,那么它会变得更容易. 首先,假设您的标记是块级元素. 第二,假设您的文档只是格式的文本和表. 然后,您可以在块级内容列表上执行操作: MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart(); List blocks =
我正在尝试使用Android中的DOCX4J库将图像添加到DOCX文件中. 我面临一个例外: E/AndroidRuntime(21818): java.lang.ExceptionInInitializerError E/AndroidRuntime(21818): at org.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.newSource(AbstractImageSessionContext.java:134) E/AndroidRuntime(21818): at org.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.needSource(AbstractImageSessionContext.java:280) E/AndroidRuntime(21818): at org.apac
我正在使用docx4j使用单词模板创建Word文档.模板内容控制在文档中用我的Java代码填充文本.问题在于,我已添加到某些控件中的格式没有效果.我尝试使用文本内容控件和丰富的文本内容控件进行格式化.实际上,整个文档显得灰色(包括文档标题中的图像),因此我不确定该问题是否针对DOCX4J.这是我的代码: private void replaceTextValue(WordprocessingMLPackage template, String name, String placeholder ) throws Exception{ List texts = getAllSdtElementFromObject(template.getMainDocumentPart()); for (Object text : texts) { SdtElement textElement = (SdtElemen