![在 Word 中自动格式化纯文本文件](https://linux22.com/image/1398180/%E5%9C%A8%20Word%20%E4%B8%AD%E8%87%AA%E5%8A%A8%E6%A0%BC%E5%BC%8F%E5%8C%96%E7%BA%AF%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6.png)
我们有一个旧系统,它输出以前在 132 列打印机上打印的文本文件。有些文件的行数甚至更长,例如 169 个字符。无论出于什么原因,.文档附加了文件扩展名,这样即使文件不是 Word 文档而只是纯文本,也可以在 Microsoft Word 中打开。
显然,人们的机器上曾经有一个 Word 宏,可以重新格式化文档以使其适合页面 - 据我所知,选择所有文本并将字体大小减小到 6pt 可以使用 Courier New 或 Consolas 字体实现这一点。
我不想强制对在 Word 中打开的所有纯文本文件执行这样的操作,理想的解决方案是将这些文件转换为 PDF(这也解决了在 iPhone 上将它们作为电子邮件附件查看的问题)但我没有主意了。
有什么建议么?
DATE 02-15-14 LISTING OF HIRED AND TERMINATED EMPLOYEES FOR 01/01/14 - 01/31/14 PAGE 1
EMPNO..... AGENT NAME.......... Employee Name............ HIRE DATE TERM DT. LOGIN ID............ EMAIL NAME..............................
30594 ABC-NEWYORK JOE SMITH 01/06/14 NEWYORK.JOE JOE SMITH
答案1
我获取了您的文件并为您制作了一个宏:
Sub LongWidth()
'
' LongWidth Macro
'
'
With Selection.PageSetup
.Orientation = wdOrientLandscape
.TopMargin = InchesToPoints(0.5)
.BottomMargin = InchesToPoints(0.5)
.LeftMargin = InchesToPoints(0.5)
.RightMargin = InchesToPoints(0.5)
.Gutter = InchesToPoints(0)
.HeaderDistance = InchesToPoints(0.5)
.FooterDistance = InchesToPoints(0.5)
.PageWidth = InchesToPoints(8.5)
.PageHeight = InchesToPoints(11)
.GutterPos = wdGutterPosLeft
End With
Selection.WholeStory
Selection.Font.Size = 7
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:\Path\To\Folder\foo.pdf", ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=True, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _
IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
True, UseISO19005_1:=False
End Sub
因此,此操作首先将页面设置为横向模式,边距较窄。然后我选择所有文本并将字体设置为 7。然后我将文档导出为 PDF。
如果有用户希望在 iPhone 或其他设备上查看此内容,我会研究使用 Word 自动化流程将所有这些文件转换为 PDF。Joel Spolsky写了一篇文章很久以前就已开始讨论这一过程。虽然发生了很多变化,但这些概念仍然有效。
答案2
对于转换为 PDF,我发现http://www.adultpdf.com/products/txttopdf/非常棒。它给我的 PDF 文件完美地保留了换行符。它还提供了一个命令行界面,支持选择不同的字体类型,并允许您转换文件夹中的所有文件。对当前文件夹中的所有文件执行此操作的命令是:
@echo off
for /r %%F in (*) do TXTtoPDF "%%~nF"
将 TXTtoPDF 替换为 TXTtoPDF.exe 的位置