首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用C#或perl在PDF中创建和放置对象

使用C#或perl在PDF中创建和放置对象
EN

Stack Overflow用户
提问于 2009-11-13 15:31:39
回答 3查看 469关注 0票数 0

我想把数独益智(9X9大小)放在A4纸上,4页的正面和4页的背面。我需要生成12页的小册子与96数独益智每8数独puzzles.Does任何人指导我如何做到这一点无论是使用perl或C#.I不知道通过哪个网站或手册的信息。

非常感谢您的任何帮助。

EN

回答 3

Stack Overflow用户

发布于 2009-11-13 15:44:41

关于C#,请看一下iTextSharp。它是开源的。Here's一个关于sourceforge的教程,但如果你搜索一下,你可以找到像这样的更高质量的教程:

Creating Simple PDF Files With iTextSharp

票数 3
EN

Stack Overflow用户

发布于 2009-11-13 17:14:07

CPAN上有相当多的模块用于创建PDF对象/文件。

PDF::API2在大多数时候都是最受欢迎的,但也有其他的。请看这个SO问题:What is the best Perl module to use for creating a .pdf from scratch?

有一个很好的初学者教程:Using PDF::API2 - The Code

您可能还会感兴趣,因为CPAN似乎确实有相当多的Sudoku modulesGames::Sudoku::Component之所以脱颖而出,是因为它确实会生成数独游戏。

/I3az/

票数 2
EN

Stack Overflow用户

发布于 2009-11-13 21:05:56

我会使用Perl脚本来生成LaTeX脚本。但那就是我。

编辑:

这就是我喜欢Stackoverflow的地方:有很多有趣和有趣的问题需要解决。我妻子是个数独迷,所以我想印几本小册子让她开心也无伤大雅。

注意:上提供了一个示例结果文件。

首先,我去了CTAN (如果你不知道,这是CPAN的大哥)。我找到了一个名为(还有什么?) sudoku的LaTeX模块。我阅读了文档,认为它足够好了。

其次,我希望它是小册子格式的。这一次,我在CTAN上找到的模块太晦涩难懂了,所以我继续搜索,找到了一篇由Sven Hartenstein写的名为LaTeX: creating a5 booklets的文章。这篇文章的第一行写道:“这就是我如何用LaTeX制作在A4纸上打印的A5小册子(然后折叠一次)……”

最后,我在CPAN中搜索了一个好的数独生成器。有很多求解器,但我只想打印一个难题,所以我用Games::Sudoku::Component解决了问题,并编写了一个小的Perl脚本来生成TeX文件,称为sudoku.pl:

代码语言:javascript
运行
复制
#!/usr/bin/perl
use strict;
use warnings;
use Games::Sudoku::Component;

my $sudoku = Games::Sudoku::Component->new(size => 9);
print '
\documentclass[a5paper,headsepline,titlepage,10pt,normalheadings,DIVcalc]{scrbook}
\usepackage{sudoku}
\begin{document}
\title{Sudoku}
\author{L. Herrera}
\maketitle
\renewcommand*\sudokuformat[1]{\Large\sffamily#1}
\setlength\sudokusize{6cm}
\setlength\sudokuthickline{1pt}
';

print "\\chapter*{Easy puzzles}\n";
foreach (1 .. 16) {
    print "\\section*{Puzzle $_}\n";
    $sudoku->generate(blanks => 50);
    my $puzzle = $sudoku->as_string(
        separator => '|',
        linebreak => "|.\n|",
    );
    $puzzle =~ s/0/ /gs;
    print "\\begin{sudoku}\n|", $puzzle, "|.\n";
    print "\\end{sudoku}\n\n\n";
}
print "\\end{document}\n";

然后,我逐字复制了由Sven创建的脚本,并将其命名为booklet.sh

代码语言:javascript
运行
复制
#!/bin/sh
#
# This script takes an A5 latex file as input and produces an A4
# document (both ps and pdf) for printing an A5 booklet 
#
# Usage: 
# booklet [filename without extension]

latex $1
latex $1

# make an a5 ps from dvi:
dvips -t a5 -o $1.ps $1.dvi

# sort pages
psbook $1.ps tmp1.ps

# put two pages on one a4 sheet
psnup -Pa5 -pa4 -2 tmp1.ps tmp2.ps

# change a5 to a4 in ps file
sed 's/^%%DocumentPaperSizes: A5/%%DocumentPaperSizes: a4/g' < tmp2.ps > $1_booklet.ps

# produce pdf files, pdflatex ist used (twice) to get bookmarks
pdflatex $1.tex
pdflatex $1.tex
ps2pdf -sPAPERSIZE=a4 $1_booklet.ps

# delete tmp files
rm tmp1.ps tmp2.ps

现在,我通过执行以下命令重新生成了一个可供打印的小小册子

代码语言:javascript
运行
复制
perl sudoku.pl > puzzle1.tex && ./booklet.sh puzzle1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1727701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档