Como posso salvar um documento do Word como PDF * sem * fontes incorporadas?

9

Eu tenho o Microsoft Word 2010 e estou tentando usá-lo para criar um documento PDF com uma pegadinha. Eu NÃO quero nenhuma das fontes usadas incorporadas. No entanto, todas as opções de gravação que tentei resultam em fontes "Subconjunto incorporado". Existe alguma maneira de salvar como PDF sem incorporar QUALQUER fonte?

slipsec
fonte
11
O que você está usando atualmente para criar esses PDFs? Os PDFs são basicamente destinados a serem impressos em documentos eletrônicos e mais ou menos imutáveis. Além disso, com o que você os está lendo para não querer que as fontes sejam realmente impressas no documento? Para que você os está usando?
Austin T Francês
Estou testando a conversão para outros formatos de imagem (por exemplo, tiff) e preciso testar cenários em que as fontes NÃO foram incorporadas para garantir que sejam mapeadas para algo que não diminua o alinhamento e o espaçamento. É fácil o suficiente gerar um documento do word que inclua todas as fontes do sistema instaladas, mas quero salvar / exportar como um pdf sem que as fontes sejam incorporadas.
slipsec

Respostas:

3

É possível remover todas as fontes que formam o tipo de documento xml WordML.

<?xml version="1.0" encoding="UTF-8"?>
<?mso-application progid="Word.Document"?>
    <w:wordDocument xml:space="preserve" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
     <w:body>

      <w:tbl>
       <w:tblPr>
        <w:tblW w:w="9570" w:type="dxa"></w:tblW>
         <w:tblBorders> <w:top w:val="nil" /><w:left w:val="nil" /><w:bottom w:val="nil" /><w:right w:val="nil" />
         </w:tblBorders>
       </w:tblPr>

    <w:tr>
     <w:tc>
    <w:tcPr><w:tcW w:w="4785" w:type="dxa" /></w:tcPr>  <w:p></w:p>  </w:tc>
     <w:tc>  
    <w:tcPr><w:tcW w:w="4785" w:type="dxa" /></w:tcPr>  <w:p></w:p>  </w:tc>
    </w:tr>   

     <w:tr>    
         <w:tc>
          <w:tcPr><w:tcW w:w="0" w:type="auto" /></w:tcPr>  <w:p><w:pPr><w:jc w:val="right" /></w:pPr>
       <w:r><w:t>Company: </w:t></w:r> 
      </w:p>
     </w:tc>   

        <w:tc>
          <w:tcPr><w:tcW w:w="0" w:type="auto" />
           <w:tcBorders>      <w:top w:val="single" w:sz="2" w:color="0070C0" />    <w:left w:val="single" w:sz="2" w:color="0070C0" /> <w:bottom w:val="single" w:sz="2" w:color="0070C0" /> <w:right w:val="single" w:sz="2" w:color="0070C0" />
           </w:tcBorders>
          </w:tcPr>
         <w:p><w:pPr><w:jc w:val="left" /></w:pPr><w:r><w:t></w:t></w:r></w:p>
        </w:tc>      
       </w:tr>       
      </w:tbl>
     </w:body>
    </w:wordDocument>

Mas, mesmo se você excluir todos os estilos e fontes do documento original, o Word atribuirá durante a abertura do estilo do documento por padrão. Além disso, pelo menos uma fonte estará no documento Acrobat quando você a abrir, como se não tivesse agido.

Arquivo XML do Office WordML, estilo padrão de carregamento do Word:

Arquivo XML do Office WordML

Depois de salvar como PDF no Acrobat, visualize uma fonte

Suporte da fonte do documento Acrobat

Uma boa solução é escolher pelo menos uma fonte que ainda esteja no arquivo pdf e usá-la.

Caminho 2: Removendo estilos não utilizados do Word

insira a descrição da imagem aqui

Sub DeleteUnusedStyles()
    Dim oStyle As Style
    For Each oStyle In ActiveDocument.Styles
        ‘Only check out non-built-in styles
        If oStyle.BuiltIn = False Then
            With ActiveDocument.Content.Find
                .ClearFormatting
                .Style = oStyle.NameLocal
                .Execute FindText:=””, Format:=True
                If .Found = False Then oStyle.Delete
            End With
        End If
    Next oStyle
End Sub 

Consulte Formatar fontes para obter os valores padrão dos campos de texto

O estilo quase sempre inclui a fonte e o tamanho da fonte usados ​​para a determinação de outros tamanhos. Parágrafo, espaçamento entre linhas e assim por diante ... Se você precisar de uma mecânica de estilo diferente, gere o próprio documento. Incluindo fontes substitutas. Se o documento PDF final, use o Adobe JavaScript embutido. Ou Adobe LiveCycle Designer ES e XDP XML.

Fonte no Adobe LiveCycle Designer XDP XML

Usando o Acrobat JavaScript em formulários: importando e exportando dados de formulário

Arquitetura de formulários XML PDF!

STTR
fonte
Isso não remove as configurações de estilo e não as fontes incorporadas? Quero manter o estilo, mas remova as fontes incorporadas para forçar um "palpite" para o mapeamento pelo software de conversão que estou tentando testar.
slipsec
@slipsec Pode ser necessário criar PDF manualmente?
STTR
@ slipsec, pode ser necessário usar um componente pago de terceiros para conseguir isso.
Adam
iText usado, será publicado quando eu terminar.
slipsec
0
[System.Reflection.Assembly]::LoadFrom("C:\path\to\itextsharp.dll")
#by default fonts are NOT embedded
#[iTextSharp.text.FontFactory]::DefaultEmbedding -eq false

$doc = New-Object iTextSharp.text.Document
$fileStream = New-Object IO.FileStream("C:\foo\test\allFonts2.pdf", [System.IO.FileMode]::Create)
[iTextSharp.text.pdf.PdfWriter]::GetInstance($doc, $filestream)

#iTextSharp provides a class to work with fonts, but first we have to register them:
[iTextSharp.text.FontFactory]::RegisterDirectories()

#Phrase is the smallest bit of text that will understand a newline if needed.  it is a chunk[] and paragraph is a phrase[]
$phrase = new-object iTextSharp.text.Phrase 
$paragraph = New-Object iTextSharp.text.Paragraph

#Different fonts for mapping tests
$fN = [iTextSharp.text.Font]::NORMAL
$fB = [iTextSharp.text.Font]::BOLD
$fI = [iTextSharp.text.Font]::ITALIC
$fBI = [iTextSharp.text.Font]::BOLDITALIC

#Sample string
$string = "The quick brown fox jumps over the lazy dog 1234567890 ?.,:;!@#$%^&*()`"'`n"
#something I know maps nicely (I love fixed width fonts!)
$consolas = [iTextSharp.text.FontFactory]::GetFont("consolas", 9)

#create all the nesting needed.
[iTextSharp.text.FontFactory]::RegisteredFamilies | %{

    $chunk = new-object iTextSharp.text.Chunk("`n$_`n", $consolas)
    $phrase.Add($chunk) | out-null

    $a = [iTextSharp.text.FontFactory]::GetFont($_, 9, $fN)
    "adding font: $_"
    $chunk = new-object iTextSharp.text.Chunk($string, $a)
    $phrase.Add($chunk) | out-null

    $b = [iTextSharp.text.FontFactory]::GetFont($_, 9, $fB)
    $chunk = new-object iTextSharp.text.Chunk($string, $b) 
    $phrase.Add($chunk) | out-null

    $c = [iTextSharp.text.FontFactory]::GetFont($_, 9, $fI)
    $chunk = new-object iTextSharp.text.Chunk($string, $c) 
    $phrase.Add($chunk) | out-null

    $d = [iTextSharp.text.FontFactory]::GetFont($_, 9, $fBI)
    $chunk = new-object iTextSharp.text.Chunk($string, $d) 
    $phrase.Add($chunk) | out-null
}

$paragraph.add($phrase) | out-null
$doc.Open()
$doc.add($paragraph) | out-null
$doc.close()
slipsec
fonte
Você pode explicar o que é isso?
turbanoff
@turbanoff Parece o Powershell com a biblioteca de PDF itextsharp (para .NET).
Bob