【问题标题】:Can't copy from PDF file generated from UWP app无法从 UWP 应用生成的 PDF 文件中复制
【发布时间】:2017-09-12 05:53:33
【问题描述】:

我正在尝试从 UWP 应用打印并关注此link

将其保存为 pdf 文件时,可以正常打印。我也可以复制这些字母。但是当我将它粘贴到其他地方时,它会打印这样的东西:“?????????????????????????????????? ???????????????”

我也尝试了不同的字体,但没有任何帮助。

这是我要打印的 XAML:

    <Grid x:Name="PrintableArea" Background="White">
        <StackPanel x:Name="TextContent">
            <TextBlock TextAlignment="Center" FontFamily="Arial" FontWeight="Bold">
                        This is Test
            </TextBlock >
        </StackPanel>
    </Grid>

如何解决?

【问题讨论】:

    标签: xaml pdf printing uwp uwp-xaml


    【解决方案1】:

    无论您使用什么来创建 PDF,显然都无法使用 ToUnicode CMap 创建 PDF 文件。

    PDF 文件通常只嵌入字体的子集以减小大小。这通常意味着应用于字体的编码是非标准的(而且它通常也不是 ASCII)。因此,例如,如果您有文本“Hello World”,那么将分配字符代码,以便“H”= 1、“e”= 2 等等。

    如果你复制并粘贴它,那么你会得到 1, 2, 3, 3, 4, 5, 6, 4, 7, 3, 8,它们将显示为二进制。

    PDF 文件可能包含将字符代码映射到 Unicode 代码点的 ToUnicode CMap,并且 PDF 查看器应用程序可以使用它来复制 Unicode 代码点而不是字符代码,从而可以进行合理的复制/粘贴。但它是可选的。这是因为围绕 PDF 的最初设计决定是创建一个便携式查看器,PDF 文件在所有消费者看来应该是相同的,但设计者并没有考虑到编辑或复制。

    【讨论】:

    • 实际上,我得到的 pdf 是正确的,它的内容或方向完全没有问题。我无法复制内容。我和一个iOS开发者讨论过,他说他们生成的pdf文件也是不可复制的。
    • 我没有提到它的方向或可见的外观。我说的是您的 PDF 文件的内部结构;文件中的实际内容与将其渲染到显示器时看到的内容相反。文件中的文本不是(例如)0x48、0x65、0x6c、0x6c、0x6F 等,而是 0x01、0x02、0x03、0x03、0x04。现在,如果您复制并粘贴第一组数字,您将得到“Hello”,因为它的 ASCII 码和大多数应用程序都会假定它是。如果你复制第二个,你会得到一堆二进制文件。您唯一的解决方案是使 PDF 成为一种更复杂的方式。
    • 好的,我想我明白了。我会相应地尝试一下。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    相关资源
    最近更新 更多