Workaround: OTF in PDF ex TMD

Fehlerberichte, Hilfe und Anregungen zu FreeOffice TextMaker 2016 für Linux

Moderator: SoftMaker Team

Antworten
Benutzeravatar
Michael Uplawski
Beiträge: 795
Registriert: 09.06.2010 14:27:54
Wohnort: Canton Magny, Normandie

Workaround: OTF in PDF ex TMD

Beitrag von Michael Uplawski » 19.04.2016 13:15:33

Siehe auch Diskussion im FreeOffice 2012 Forum.

Es war dies zwar nicht der Anlass, aber die Skripte, die ich verwende, um PDF in Grafik umzuwandeln und zurück, lösen natürlich auch dieses Problem des Exports von OpenType Fonts in PDF. Inzwischen habe ich Yad (ex Zenity) lieben gelernt und also zwei grafische Oberflächen für die beiden Aktionen
  • PDF2Tiff
  • Tiff2PDF
entwickelt“ (... also... hingeschrieben). Mit dem ersten Skript wird ein OTF-verseuchtes PDF, das sich überhaups gar nich' richtig anzeigen oder drucken lässt in ein riesengroßes (z.B. 600dpi) Tiff umgewandelt, mit dem zweiten dann wieder ein PDF erzeugt, das sich sehen und austeilen lassen kann. Für alle, die die libtiff tools und Ghostskript kennen, reicht das als Auskunft. Ihr könnt das alles selber machen, vielleicht besser, als ich.

Für alle anderen, erst mal der Screen Shot und das Programm-Icon, wie es im Screen Shot auftaucht.

Noch ein Beispieldokument, das ich nicht von OpenTyp-Fonts befreien will oder kann. Jetzt wird es auch in Evince richtig dargestellt. Das Original-PDF war 185K groß, jetzt, nur noch mit Bild und ganz ohne Fonts hat es etwa 510K (je nach Dateimanager), was ich für sehr vertretbar halte.


Und hier die Skripte mit Yad:

Code: Alles auswählen

#!/bin/bash
# pdf_to_image, prints PDF to one of the supported image formats.
# Needs Ghostscript and YAD.
# Calls Ghostscript to create image-files from PDF
#
# This script ©2016 Michael Uplawski <michael.uplawski@uplawski.eu>
# Use at your own risk, modify as you please
#
# Ghostscipt is ©2015 Artifex Software, Inc.  All rights reserved.

GS=`which gs`

# verification and error-handling: Ghostscript not found
if [ ! $GS ]
then
	yad --image "dialog-error" --title="Error" --window-icon="" --text="Ghostscript is needed but cannot be found! Make sure that it is installed!"
	exit 1
fi
DEF_FORMAT="TIF"
FORMATS="^TIF;JPEG;PGM;PNG;PCX;BMP"
SEP=";"
PAPER=a4

DONE=0
while [ "$DONE" -eq 0 ]
do

	# Create the YAD user-interface, retrieve values.
	VALUES=($(yad --title="pictures from PDF" --image="PDFImage" --window-icon="PDFImage" --form --separator=' ' --item-separator="$SEP" --field="PDF-file(s)":MFL ' ' --field="Output format":CB "$FORMATS" --field="Resolution":NUM "400;180..600;10" ))

	echo "VALUES is ${VALUES[@]}"
	# verification and error-handling
	if [ ! "${VALUES}" ]
	then
		exit 0
	fi

	if [ 1 -ge "${#VALUES[@]}" ]
	then
		yad --image "dialog-error" --window-icon="PDFImage" --title="No PDF files" --text="No files have been selected. Aborting."
		exit 2
	fi

	PDFS=($(echo ${VALUES[0]} | tr "$SEP" ' '))
	# echo "PDFS is ${PDFS} (${#PDFS[@]})"
	FORMAT=${VALUES[1]}
	RES=${VALUES[2]}

	# No picture-files (or just anything) found in the array.
	if [ 0 -eq "${#PDFS[@]}" ]
	then
		yad --image "dialog-error" --window-icon="PDFImage" --title="no pdf files" --text="No files have been selected. Aborting."
		exit 2
	fi

	case "$FORMAT" in
		TIF)
			TYPE=tif
			DEV=tiff24nc
			;;
		JPEG)
			TYPE=jpg
			DEV=jpeg
			;;
		PGM)
			TYPE=pgm
			DEV=pgm
			;;
		PNG)
			TYPE=png
			DEV=png48
			;;
		PCX)
			TYPE=pcx
			DEV=pcx24b
			;;
		BMP)
			TYPE=bmp
			DEV=bmp256
			;;
	esac
	result=""
	for inf in "${PDFS[@]}"
	do
		# echo "PDF: $inf"
		if [ ! -f "$inf" ]
		then
			yad --image "dialog-error" --window-icon="PDFImage" --title="unsuitable file" --text="$inf is not a valid PDF-file."
			continue
		fi
		DIR=`dirname "$inf"`
		# echo "DIR is $DIR"
		ext=${inf/*./}
		if [ "$DIR" == '' ]
		then 
			DIR='.'
		fi
		OUTPUT="$DIR"/`basename "$inf" ."$ext"`_%04d."$TYPE" 
		OP="$DIR"/`basename "$inf" ."$ext"`"*"."$TYPE" 
		# echo "creating files $OUTPUT"	
		# /usr/bin/gs -SDEVICE="$DEV" -r"$RES" -sPAPERSIZE="$PAPER" -sOutputFile="$OUTPUT" -dNOPAUSE -dBATCH -- "$inf"
		result="$result\n---------\n$inf:\n---------\n"$("$GS" -SDEVICE="$DEV" -r"$RES"x"$RES" -sPAPERSIZE="$PAPER" -sOutputFile="$OUTPUT" -dNOPAUSE -- "$inf")
		result="$result\n"$(ls -gGh $OP | cut -d' ' -f3-13)
		DONE=1
	done

	if [ $DONE -gt 0 ]
	then
		# All done ... maybe
		echo -e "$result" | yad --image "dialog-information" --title="pdf2"$TYPE" Conversion done" --window-icon="PDFImage" --text-info --text="All done:\n" --width="600" --height="400"
	else
		yad --image "dialog-warning" --title="problem" --window-icon="PDFImage" --text="Verify your choices. Could not convert a single file!"

	fi
done

Code: Alles auswählen

#!/bin/bash
# tiff2pdf - macht pdf aus tiff(s).
# ©2015-2016 Michael Uplawski <michael.uplawski@uplawski.eu>
# Braucht YAD, libtiff 
# -----------> 3 Variablen zum Anpassen <-------------
AUTHOR="Der wo das PDF macht <pdf_macher@email_provider.tld>"
PAGE="A4"
READER="/usr/bin/acroread"
# <--------------- Jetzt nix mehr anpassen ----------->

ISEP=";"
FSEP="|"

values=($(yad --title="Tiff to PDF" --window-icon="PDFImage" --image="PDFImage" --form --separator="$FSEP" --item-separator="$ISEP" --field='Tiff-Files':MFL "" --field='resulting PDF-File':SFL "" --field='open PDF?':CHK TRUE --field="PDF open command" "$READER"))
echo "$values"
READER=$(echo $values | cut -d"$FSEP" -f4)
OPEN=$(echo $values | cut -d"$FSEP" -f3)
PDF=$(echo $values | cut -d"$FSEP" -f2)

files=$(echo $values | cut -d"$FSEP" -f1 | tr "$ISEP" " ")

for f in ${files} 
do
	if [ ! -f "$f" ]
	then 
		echo "$f is not a valid file"
	fi
done
TFILE=`mktemp`
echo "TFILE is $TFILE"
/usr/bin/tiffcp ${files[@]} "$TFILE"
/usr/bin/tiff2pdf -z -a"$AUTHOR" -p"$PAGE" "$TFILE" -o "$PDF"
if [ -f "$PDF" ]
then
	if [ TRUE == "$OPEN" ]
	then
		`"$READER" "$PDF"`	
	fi
fi

unlink "$TFILE"
Mein problemloses Linux-System: Debian Buster/Sid mit OpenBox/Rox Desktop.
People should go where they are not supposed to go, say what they are not supposed to say and stay, when they are told to leave.
Bild(Howard Zinn)

Benutzeravatar
Michael Uplawski
Beiträge: 795
Registriert: 09.06.2010 14:27:54
Wohnort: Canton Magny, Normandie

Re: Workaround: OTF in PDF ex TMD

Beitrag von Michael Uplawski » 21.04.2016 08:19:51

Mit der Entscheidung und der neuen Eigenschaft von FreeOffice 2016, OTF-fonts mit Hilfe von fontforge zu verarbeiten, ist die oben beschriebene Vorgehensweise immer noch angebracht, da sich „manche” OTF-fonts auch jetzt noch nicht ohne weiteres drucken oder ins PDF übernehmen lassen.

Mit der Praxis werden wir solche Fonts sicherlich immer besser zu unterscheiden lernen und die Auswahl entsprechend auf „die Guten” einschränken.

Auf meiner Maschine zeigt sich der Unterschied besonders beim Wechsel zwischen Evince und Acrobat®-reader (acroread). Mit TextMaker 2016 sehe ich zum ersten Mal die Schrift „Linux Biolinum“ sofort in Evince. Andere OTF-Schriften erscheinen nicht. Beim Mischen solcher Fonts im gleichen Dokument erscheinen Lücken, das Verhalten ist konsistent.

Dateibeispiele. Alle für Evince („Dokumentenbetrachter”). Acroread zeigt alles an: Seid ehrlich beim Vergleich von Dateigröße und Anzeigequalität. ;-)
Mein problemloses Linux-System: Debian Buster/Sid mit OpenBox/Rox Desktop.
People should go where they are not supposed to go, say what they are not supposed to say and stay, when they are told to leave.
Bild(Howard Zinn)

Antworten

Zurück zu „FreeOffice TextMaker 2016 für Linux“