您好我正在尝试通过finfo_file函数验证上传的文件类型.
但是当发送.docx文件时,文件类型为:
application/zip
Run Code Online (Sandbox Code Playgroud)
代替:
application/vnd.openxmlformats-officedocument.wordprocessingml.document
Run Code Online (Sandbox Code Playgroud)
我该如何改变这种行为?
我最近了解了.docx文件的基本结构(它是一个特殊结构的zip存档).但是,docx不像doc那样格式化.
doc文件如何工作?什么是文件格式,结构等?
我知道iTextSharp可用于将文档转换为pdf.
但首先我们必须使用iTextSharp.text.Document从头开始创建文档,然后向此文档添加元素.
如果我有一个现有的doc文件,可以使用iTextSharp将此文档转换为pdf.
另外,我想使用iTextSharp或任何可以在doc文件上执行以下操作的类似工具:
有任何想法的人请分享.
谢谢!
我开始怀疑这是否可能.我在Google上搜索了一些解决方案,并且没有提供任何与我喜欢的完全无关的方法.
我认为解释这需要什么是有益的.我在我大学的IT部门为数据库小组工作.我的主要工作是在docx文件中获取报告的规范,将其复制到Dreamweaver,修复一些格式,并将其放到他们的网站上.我的问题是一遍又一遍地做这件事是非常乏味的.我想,嘿,我现在还没有在C#中编写任何东西,也许我可以编写一个应用程序来获取docx文件,将其转换为HTML,修复CSS,粘贴页眉和页脚从那里的网页,并保存结果.我原本打算让它一个接一个地做,但是输入文件列表和批量转换可能并不困难.
我已经找到了关于如何实现这一目标的相关主题,但它们并不能很好地满足我的需求.
http://www.techrepublic.com/blog/howdoi/how-do-i-modify-word-documents-using-c/190
对于一些文档来说这可能很好,但由于它只是自动化Word的一个实例,我觉得它很慢并且内存密集.我宁愿避免打开和关闭Word 50+的实例.
http://openxmldeveloper.org/articles/333.aspx
这就是我开始使用的.XSLT的好处是不需要为每个文件安装或运行单词.经过一番搜索,我得到了一个概念验证工作.它接收一个docx文件,对其进行解压缩,从中获取document.xml,并使用我从OpenXML查看器中清除的DocX2Html.xsl文件.我相信这最初由MS提供给sharepoint服务器,以提供在浏览器中呈现word文档的能力.或类似的规定.
在调整了代码以满足我的需求,并且遇到了objXSLT.Load()方法的问题之后,我最终使用IlMerge将XSL变成了DLL.不知道为什么我在使用普通的旧XSL文件时仍然遇到编译错误,但DLL工作正常,所以我很满意.这里(http://pastebin.com/a5HBAakJ)是我目前的代码.它可以很好地将docx转换为HTML(除了某些单词之间的随机空格),但结果文件的HTML语法非常难看.这里可以找到这种怪物的一个例子(http://pastebin.com/b8sPGmFE).
有谁知道我怎么能补救这个?我想也许我需要制作一个新的XSL文件,因为MS提供的是负责将所有这些标签和额外代码粘贴在那里的东西.我的问题是我对如何做到这一点一无所知.也许还有一个替代版本.我只需要保留表格和文本格式.不需要图像.
我有一个问题,其中.doc和.pdf文件出来正常但.docx文件出现损坏.
为了解决这个问题,我试图调试为什么.docx已损坏.
我了解到docx格式在额外字符方面比.pdf或.doc更严格.因此,我搜索了docx文件中的各种xml文件,查找无效的XML.但我找不到任何东西.这一切都很好.

有人可以建议我现在去调查吗?
更新:
文件夹中文件的完整列表如下:
/_rels
.rels
/customXml
/_rels
.rels
item1.xml
itemProps1.xml
/docProps
app.xml
core.xml
/word
/_rels
document.xml.rels
/media
image1.jpeg
/theme
theme1.xml
document.xml
fontTable.xml
numbering.xml
settings.xml
styles.xml
stylesWithEffects.xml
webSettings.xml
[Content_Types].xml
Run Code Online (Sandbox Code Playgroud)
更新2:
我还应该提到腐败的原因几乎肯定是代表我的一个糟糕的二进制文件POST.
为什么docx文件被二进制文件损坏,但.doc和.pdf都没问题?
更新3:
我已经尝试了各种docx修复工具的演示.他们似乎都修复了文件,但没有提供错误原因的线索.
我的下一步是使用修复版本检查损坏文件的内容.
如果有人知道docx修复工具提供了一个体面的错误消息,我会很感激听到它.事实上,我可能会将其作为一个单独的问题发布.
更新4(2017)
我从未解决过这个问题.我已经尝试了下面答案中建议的所有工具,但它们都不适用于我.
自从0000Sublime Text打开.docx后,我已经进一步发展并找到了一个缺失块.这里新问题的更多细节:httpwebrequest期间.docx文件中可能导致这种损坏的原因是什么?
我正在尝试使用MathType的SDK将MathType的等式转换为MathML的方法,该等式存储为MathML.
我的程序的输入文件是一个DocX,它包含嵌入的MathType方程.我正在寻找一种独立于使用MS Word的解决方案.DocX是一个zip文件,一旦提取,我们就可以在"word/embeddings /"文件夹中找到每个OLE对象的二进制文件.通常,文件名是oleObject1.bin,oleObject2.bin等.
当我使用MathType SDK检查时,它有一个"ConvertEquation"类,它有以下方法:
virtual public bool Convert(EquationInput ei, EquationOutput eo)
Run Code Online (Sandbox Code Playgroud)
EquationInput是一个抽象类,可以使用以下具体类:
EquationInputFileText
EquationInputFileWMF2
EquationInputFileWMF
EquationInputFileGIF
EquationInputFileEPS
Run Code Online (Sandbox Code Playgroud)
在上面列出的类中,它们似乎都不支持OLE二进制文件.
根据MathType的SDK文档,MTEF数据被保存为对象的本机数据格式.每当将等式对象写入OLE"流"时,写入28字节的头,然后写入MTEF数据.我想这正是这个二进制文件中存在的内容.但就是说,似乎没有办法让SDK使用这种格式将其转换为MathML.有什么想法吗?
谢谢
问题陈述:从.docx文件中提取包含自动编号的部分.
我尝试使用python-docx从.docx文件中提取文本,但它排除了自动编号.
from docx import Document
document = Document("wadali.docx")
def iter_items(paragraphs):
for paragraph in document.paragraphs:
if paragraph.style.name.startswith('Agt'):
yield paragraph
if paragraph.style.name.startswith('TOC'):
yield paragraph
if paragraph.style.name.startswith('Heading'):
yield paragraph
if paragraph.style.name.startswith('Title'):
yield paragraph
if paragraph.style.name.startswith('Heading'):
yield paragraph
if paragraph.style.name.startswith('Table Normal'):
yield paragraph
if paragraph.style.name.startswith('List'):
yield paragraph
for item in iter_items(document.paragraphs):
print item.text
Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以让我通过 Node JS 读取包含占位符的 Word 文件(.docx),{text1} / {image1}并将其替换为真实的占位符。我尝试了几个 npm 模块,其中我能够创建 docx 的新副本,但无法编辑或替换图像和文本。感谢期待您的帮助。
我想知道如何阅读doc或docx的内容.我正在使用Linux VPS和PHP,但如果有更简单的解决方案使用其他语言,请告诉我,只要它在Linux网络服务器下工作.
我正在尝试使用docx.js生成Word文档,但我似乎无法让它工作.
在修改第247行以修复"'textAlign'未定义错误"后,我将原始代码复制到Google Chrome控制台中
if (inNode.style && inNode.style.textAlign){..}
Run Code Online (Sandbox Code Playgroud)
这使得该功能convertContent可用.其结果是Object,例如
JSON.stringify( convertContent($('<p>Word!</p>)[0]) )
Run Code Online (Sandbox Code Playgroud)
结果是 -
"{"string":
"<w:body>
<w:p>
<w:r>
<w:t xml:space=\"preserve\">Word!</w:t>
</w:r>
</w:p>
</w:body>"
,"charSpaceCount":5
,"charCount":5,
"pCount":1}"
Run Code Online (Sandbox Code Playgroud)
我复制了
<w:body>
<w:p>
<w:r>
<w:t xml:space="preserve">Word!</w:t>
</w:r>
</w:p>
</w:body>
Run Code Online (Sandbox Code Playgroud)
进入Notepad ++并将其保存为扩展名为"docx"的文件,但是当我在MS Word中打开它但是它说"由于内容存在问题而无法打开".
我错过了一些属性或XML标签或其他什么?