使用C ++文件I / O输出pdf文件

时间:2017-07-07 18:35:27

标签: c++ file

我试图使用C ++的File I / O将字符串输出到文件,但我决定将输出文件的扩展名更改为.pdf,.docx等等。

他们似乎都没有开放。

那么是否需要更多内部翻译才能使该文件正确(文件打开)pdf或docx ??

void convert(char *file){

    ifstream in(file);
    ofstream out("out.pdf",ios::out);

    char str;

    while(in && out){
        in.get(str);
        out.put(str);
    }

    in.close();
    out.close();
    cout<<"Done!!!";
}

2 个答案:

答案 0 :(得分:3)

PDF是(<div class="wrapper"> <div class="top-row"> <figure style="margin: 0;"><a target="_blank" href="#"><img src="https://www.wegmans.com/content/dam/wegmans/products/768/56768.jpg" height="100" width="100"></a></figure> <figure style="margin:0"><a target="_blank" href="#"><img src="https://www.wegmans.com/content/dam/wegmans/products/768/56768.jpg" height="100" width="100"></a></figure> </div> <div class="second-row"> <figure style="margin: 0;"><a target="_blank" href="#"><img src="https://www.wegmans.com/content/dam/wegmans/products/768/56768.jpg" height="100" width="100"></a></figure> <figure style="margin:0"><a target="_blank" href="#"><img src="https://www.wegmans.com/content/dam/wegmans/products/768/56768.jpg" height="100" width="100"></a></figure> <figure style="margin: 0"> <a target="_blank" href="#"><img src="https://www.wegmans.com/content/dam/wegmans/products/768/56768.jpg" height="100" width="100"></a></figure> </div> </div>实际上是OOXML;当然还有OpenDocument&amp; DocBookfile format(在复杂的英文文档(ISO 32000标准)中指定,并定义哪些字节序列有效(以及它们代表什么)。

粗略地说,PDF文件包含在纸上绘制墨水或在屏幕上像素的基本步骤。通过大致简化,这些步骤包括诸如“将笔移动到位置x = 23 y = 50”,“选择 Arial 字体10pt”,“在其中绘制单词docx”在该位置的字体“,”选择笔的粉红色等“等等,但细节要复杂得多。

文件扩展名没有任何意义(除了作为一项重要的约定)。

要生成PDF文件,您需要花费数周或数月的时间来研究该PDF格式的规范,或者为此使用一些库(请参阅this问题,以及podofopoppler和其他几个图书馆。即使在图书馆的帮助下,您也需要了解有关该格式的内容。

  

是否需要更多内部翻译才能制作该文件

我不确定你理解翻译的意思(更好的词就是“转换器”)。您可以通过将一些其他内容发送到合适的发送PDF的程序来生成PDF。您可以考虑使用一些document formatter(例如LaTeXabc,或Lout,或troff的某些旧版本,等等。)使用更高级别的文件格式,其中包含与要格式化的文本(某些编码)混合的文本格式化指令。在类似Unix的系统上,你甚至可以使用一些命令pipeline(以避免编写一些“临时”文件),也许使用popen(3)和相关函数。

答案 1 :(得分:0)

要编写pdf,docx等,您需要设置文件头,并正确格式化数据。如果有的话,改变扩展名并没有太大作用。

您必须使用外部图书馆或自行格式化代码。以下是您可以使用的一些扩展示例:

PDF docx